Compare commits

...

No commits in common. "c8" and "c9" have entirely different histories.
c8 ... c9

55 changed files with 34130 additions and 41331 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/gnome-control-center-3.28.2.tar.xz
SOURCES/gnome-control-center-40.0.tar.xz

View File

@ -1 +1 @@
68f77d7fd2921025a65d0b0904e6db018ca7c1d0 SOURCES/gnome-control-center-3.28.2.tar.xz
06a456d779b174a29ea65801133d2b85fcc02732 SOURCES/gnome-control-center-40.0.tar.xz

View File

@ -1,75 +0,0 @@
From 6b34f996699a80c249d2cccfe369b3b61e70d4ce Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Mon, 10 Dec 2018 14:43:30 +1000
Subject: [PATCH] common: fix udev-based device removal
libgudev allocs a new GUdevDevice object for each event, so the pointer value
for the 'add' udev event differs from the one for the 'remove' event. If we
use the pointer value as hash table key, we'll never remove the device.
Switch to use the syspath of the device instead, that one is unique per
device.
Fixes #309
---
panels/common/gsd-device-manager-udev.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/panels/common/gsd-device-manager-udev.c b/panels/common/gsd-device-manager-udev.c
index aa9304232..105c8e987 100644
--- a/panels/common/gsd-device-manager-udev.c
+++ b/panels/common/gsd-device-manager-udev.c
@@ -122,6 +122,7 @@ add_device (GsdUdevDeviceManager *manager,
{
GUdevDevice *parent;
GsdDevice *device;
+ gchar *syspath;
parent = g_udev_device_get_parent (udev_device);
@@ -129,7 +130,8 @@ add_device (GsdUdevDeviceManager *manager,
return;
device = create_device (udev_device);
- g_hash_table_insert (manager->devices, g_object_ref (udev_device), device);
+ syspath = g_strdup (g_udev_device_get_sysfs_path (udev_device));
+ g_hash_table_insert (manager->devices, syspath, device);
g_signal_emit_by_name (manager, "device-added", device);
}
@@ -138,17 +140,19 @@ remove_device (GsdUdevDeviceManager *manager,
GUdevDevice *udev_device)
{
GsdDevice *device;
+ gchar *syspath;
- device = g_hash_table_lookup (manager->devices, udev_device);
+ syspath = g_strdup (g_udev_device_get_sysfs_path (udev_device));
+ device = g_hash_table_lookup (manager->devices, syspath);
if (!device)
return;
- g_hash_table_steal (manager->devices, udev_device);
+ g_hash_table_steal (manager->devices, syspath);
g_signal_emit_by_name (manager, "device-removed", device);
g_object_unref (device);
- g_object_unref (udev_device);
+ g_free (syspath);
}
static void
@@ -173,8 +177,8 @@ gsd_udev_device_manager_init (GsdUdevDeviceManager *manager)
const gchar *subsystems[] = { "input", NULL };
GList *devices, *l;
- manager->devices = g_hash_table_new_full (NULL, NULL,
- (GDestroyNotify) g_object_unref,
+ manager->devices = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
(GDestroyNotify) g_object_unref);
manager->udev_client = g_udev_client_new (subsystems);
--
2.24.0

View File

@ -1,6 +1,6 @@
From 22c43422f83a69d7654953db368585f168952aab Mon Sep 17 00:00:00 2001
From f6e0cba768d376a7f710dd8a69c17ec50c7a13a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Fri, 4 Feb 2022 11:45:53 +0100
Date: Fri, 4 Feb 2022 11:09:24 +0100
Subject: [PATCH] display: Only display configuration options if apply is
allowed
@ -16,11 +16,12 @@ only night light.
.../display/cc-display-config-manager-dbus.c | 36 +++++++++++++++++++
panels/display/cc-display-config-manager.c | 6 ++++
panels/display/cc-display-config-manager.h | 3 ++
panels/display/cc-display-panel.c | 23 ++++++++++++
4 files changed, 68 insertions(+)
panels/display/cc-display-panel.c | 11 ++++++
panels/display/cc-display-panel.ui | 2 +-
5 files changed, 57 insertions(+), 1 deletion(-)
diff --git a/panels/display/cc-display-config-manager-dbus.c b/panels/display/cc-display-config-manager-dbus.c
index 8912faaa8..7f85c3a01 100644
index 653bea0b5..392140101 100644
--- a/panels/display/cc-display-config-manager-dbus.c
+++ b/panels/display/cc-display-config-manager-dbus.c
@@ -31,6 +31,8 @@ struct _CcDisplayConfigManagerDBus
@ -32,16 +33,16 @@ index 8912faaa8..7f85c3a01 100644
};
G_DEFINE_TYPE (CcDisplayConfigManagerDBus,
@@ -119,6 +121,8 @@ bus_gotten (GObject *object,
@@ -118,6 +120,8 @@ bus_gotten (GObject *object,
CcDisplayConfigManagerDBus *self;
GDBusConnection *connection;
GError *error = NULL;
g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusProxy) proxy = NULL;
+ g_autoptr(GVariant) variant = NULL;
connection = g_bus_get_finish (result, &error);
if (!connection)
@@ -145,12 +149,35 @@ bus_gotten (GObject *object,
@@ -143,12 +147,35 @@ bus_gotten (GObject *object,
monitors_changed,
self,
NULL);
@ -77,7 +78,7 @@ index 8912faaa8..7f85c3a01 100644
self->cancellable = g_cancellable_new ();
g_bus_get (G_BUS_TYPE_SESSION, self->cancellable, bus_gotten, self);
}
@@ -172,6 +199,14 @@ cc_display_config_manager_dbus_finalize (GObject *object)
@@ -170,6 +197,14 @@ cc_display_config_manager_dbus_finalize (GObject *object)
G_OBJECT_CLASS (cc_display_config_manager_dbus_parent_class)->finalize (object);
}
@ -92,7 +93,7 @@ index 8912faaa8..7f85c3a01 100644
static void
cc_display_config_manager_dbus_class_init (CcDisplayConfigManagerDBusClass *klass)
{
@@ -181,6 +216,7 @@ cc_display_config_manager_dbus_class_init (CcDisplayConfigManagerDBusClass *klas
@@ -179,6 +214,7 @@ cc_display_config_manager_dbus_class_init (CcDisplayConfigManagerDBusClass *klas
gobject_class->finalize = cc_display_config_manager_dbus_finalize;
parent_class->get_current = cc_display_config_manager_dbus_get_current;
@ -115,10 +116,10 @@ index 0da298a29..3d683c53d 100644
+ return CC_DISPLAY_CONFIG_MANAGER_GET_CLASS (self)->get_apply_allowed (self);
+}
diff --git a/panels/display/cc-display-config-manager.h b/panels/display/cc-display-config-manager.h
index 134cea0a1..22c16758c 100644
index 1e1b36373..64f0775e9 100644
--- a/panels/display/cc-display-config-manager.h
+++ b/panels/display/cc-display-config-manager.h
@@ -35,10 +35,13 @@ struct _CcDisplayConfigManagerClass
@@ -34,10 +34,13 @@ struct _CcDisplayConfigManagerClass
GObjectClass parent_class;
CcDisplayConfig * (*get_current) (CcDisplayConfigManager *self);
@ -133,53 +134,56 @@ index 134cea0a1..22c16758c 100644
G_END_DECLS
diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c
index 0b4fa193d..1b0db8321 100644
index 93c983f89..2cfd714d3 100644
--- a/panels/display/cc-display-panel.c
+++ b/panels/display/cc-display-panel.c
@@ -1245,6 +1245,22 @@ make_output_ui (CcDisplayPanel *panel)
return listbox;
}
@@ -69,6 +69,8 @@ struct _CcDisplayPanel
+static GtkWidget *
+make_night_light_only_ui (CcDisplayPanel *panel)
+{
+ CcDisplayPanelPrivate *priv = panel->priv;
+ GtkWidget *vbox;
+
+ priv->rows_size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
+
+ vbox = make_main_vbox (priv->main_size_group);
+
+ gtk_container_add (GTK_CONTAINER (vbox), make_night_light_widget (panel));
+
+ g_clear_object (&priv->rows_size_group);
+ return make_scrollable (vbox);
+}
+
static GtkWidget *
make_single_output_ui (CcDisplayPanel *panel)
{
@@ -2097,6 +2113,12 @@ on_screen_changed (CcDisplayPanel *panel)
if (!priv->current_config)
goto show_error;
gint rebuilding_counter;
+ if (!cc_display_config_manager_get_apply_allowed (priv->manager))
+ GtkWidget *displays_page;
+
CcDisplayArrangement *arrangement;
CcDisplaySettings *settings;
@@ -691,6 +693,7 @@ cc_display_panel_class_init (CcDisplayPanelClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, current_output_label);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, display_settings_frame);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, multi_selection_box);
+ gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, displays_page);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, night_light_page);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, output_enabled_switch);
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, output_selection_combo);
@@ -779,8 +782,16 @@ rebuild_ui (CcDisplayPanel *panel)
GList *outputs, *l;
CcDisplayConfigType type;
+ if (!cc_display_config_manager_get_apply_allowed (panel->manager))
+ {
+ main_widget = make_night_light_only_ui (panel);
+ goto show_main_widget;
+ gtk_widget_set_visible (panel->displays_page, FALSE);
+ return;
+ }
+
ensure_monitor_labels (panel);
panel->rebuilding_counter++;
if (!priv->current_output)
@@ -2121,6 +2143,7 @@ on_screen_changed (CcDisplayPanel *panel)
main_widget = make_multi_output_ui (panel);
}
+ gtk_widget_set_visible (panel->displays_page, TRUE);
+
g_list_store_remove_all (panel->primary_display_list);
gtk_list_store_clear (panel->output_selection_list);
+ show_main_widget:
gtk_widget_show_all (main_widget);
gtk_stack_add_named (GTK_STACK (priv->stack), main_widget, "main");
gtk_stack_set_visible_child (GTK_STACK (priv->stack), main_widget);
diff --git a/panels/display/cc-display-panel.ui b/panels/display/cc-display-panel.ui
index 855b34814..80fd63ace 100644
--- a/panels/display/cc-display-panel.ui
+++ b/panels/display/cc-display-panel.ui
@@ -47,7 +47,7 @@
<!-- Displays page -->
<child>
- <object class="GtkScrolledWindow">
+ <object class="GtkScrolledWindow" id="displays_page">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hscrollbar_policy">never</property>
--
2.33.1

View File

@ -1,41 +0,0 @@
From 228857e1f4513c513ca5252b780656d8d8952632 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Wed, 9 Jun 2021 16:51:10 +0200
Subject: [PATCH] displays: Don't enlarge display panel artificially
Don't set a size group on the main box, and don't let the padding
boxes expand, either. This makes the display panel able to fit
again in a 800x600 resolution.
---
panels/display/cc-display-panel.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c
index 0b4fa193d..0e7dc131e 100644
--- a/panels/display/cc-display-panel.c
+++ b/panels/display/cc-display-panel.c
@@ -541,9 +541,9 @@ static GtkWidget *
wrap_in_boxes (GtkWidget *widget)
{
GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, PANEL_PADDING);
- gtk_box_pack_start (GTK_BOX (box), make_bin(), TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (box), make_bin(), FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (box), make_bin(), TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (box), make_bin(), FALSE, FALSE, 0);
return box;
}
@@ -586,9 +586,6 @@ make_main_vbox (GtkSizeGroup *size_group)
gtk_widget_set_margin_top (vbox, PANEL_PADDING);
gtk_widget_set_margin_bottom (vbox, PANEL_PADDING);
- if (size_group)
- gtk_size_group_add_widget (size_group, vbox);
-
return vbox;
}
--
2.32.0.rc1

View File

@ -1,4 +1,4 @@
From 5b280e46029f1d857fb69ccc0db2e63b8a0e3c82 Mon Sep 17 00:00:00 2001
From 43bb1d9200554527cefaa2ce969bebc80d781c73 Mon Sep 17 00:00:00 2001
From: Ana Cabral <acabral@redhat.com>
Date: Mon, 21 Feb 2022 21:49:29 +0100
Subject: [PATCH] network: Fix OWE settings
@ -21,19 +21,19 @@ https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1521
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/panels/network/connection-editor/ce-page-security.c b/panels/network/connection-editor/ce-page-security.c
index 52efb9da1..ce42be146 100644
index a63b9394a..c7cd7d940 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -435,10 +435,25 @@ validate (CEPage *page,
wireless_security_unref (sec);
@@ -460,10 +460,25 @@ ce_page_security_validate (CEPage *page,
}
}
} else {
- /* No security, unencrypted */
- nm_connection_remove_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY);
- nm_connection_remove_setting (connection, NM_TYPE_SETTING_802_1X);
- valid = TRUE;
+
+ if (gtk_combo_box_get_active ((CE_PAGE_SECURITY (page))->security_combo) == 0) {
+ if (gtk_combo_box_get_active ((CE_PAGE_SECURITY (self))->security_combo) == 0) {
+ /* No security, unencrypted */
+ nm_connection_remove_setting (connection, NM_TYPE_SETTING_WIRELESS_SECURITY);
+ nm_connection_remove_setting (connection, NM_TYPE_SETTING_802_1X);

View File

@ -1,46 +0,0 @@
From 711afc3a83ba32b62ea813bb5bd79fb96207ef61 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 28 Nov 2019 16:38:03 +0100
Subject: [PATCH] network: Keep a ref on NetDeviceEthernet while a edition
dialog is open
Otherwise, invoking other panel (eg. through shell search, or CLI) and
closing the dialog will result in a crash, as the NetDeviceEthernet
object does no longer exist.
---
panels/network/net-device-ethernet.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/panels/network/net-device-ethernet.c b/panels/network/net-device-ethernet.c
index a03fa8de3..b035ce81c 100644
--- a/panels/network/net-device-ethernet.c
+++ b/panels/network/net-device-ethernet.c
@@ -233,6 +233,7 @@ editor_done (NetConnectionEditor *editor,
{
g_object_unref (editor);
device_ethernet_refresh_ui (device);
+ g_object_unref (device);
}
static void
@@ -255,7 +256,7 @@ show_details (GtkButton *button, NetDeviceEthernet *device, const gchar *title)
editor = net_connection_editor_new (GTK_WINDOW (window), connection, nmdev, NULL, client);
if (title)
net_connection_editor_set_title (editor, title);
- g_signal_connect (editor, "done", G_CALLBACK (editor_done), device);
+ g_signal_connect (editor, "done", G_CALLBACK (editor_done), g_object_ref (device));
net_connection_editor_run (editor);
}
@@ -455,7 +456,7 @@ add_profile (GtkButton *button, NetDeviceEthernet *device)
nmdev = net_device_get_nm_device (NET_DEVICE (device));
editor = net_connection_editor_new (GTK_WINDOW (window), connection, nmdev, NULL, client);
- g_signal_connect (editor, "done", G_CALLBACK (editor_done), device);
+ g_signal_connect (editor, "done", G_CALLBACK (editor_done), g_object_ref (device));
net_connection_editor_run (editor);
}
--
2.24.0

View File

@ -1,72 +0,0 @@
From 0f7a591fa691bc826cee19ae01a6338145119aee Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 12 Dec 2019 16:20:57 +0100
Subject: [PATCH] network: Make IPv4/v6 pages drive the scrolledwindow
adjustments
Those 2 pages in the connection editor dialog are scrollable, but don't
hook focus changes so they drive the adjustments. Make them do so.
---
panels/network/connection-editor/ce-page-ip4.c | 3 +++
panels/network/connection-editor/ce-page-ip6.c | 3 +++
panels/network/connection-editor/ip4-page.ui | 2 +-
panels/network/connection-editor/ip6-page.ui | 2 +-
4 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/panels/network/connection-editor/ce-page-ip4.c b/panels/network/connection-editor/ce-page-ip4.c
index 400dc433d..d79e9a3dd 100644
--- a/panels/network/connection-editor/ce-page-ip4.c
+++ b/panels/network/connection-editor/ce-page-ip4.c
@@ -515,6 +515,9 @@ connect_ip4_page (CEPageIP4 *page)
gboolean disabled;
guint method, i;
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (gtk_builder_get_object (CE_PAGE (page)->builder, "main_box")),
+ gtk_scrolled_window_get_vadjustment (gtk_builder_get_object (CE_PAGE (page)->builder, "page")));
+
add_address_section (page);
add_dns_section (page);
add_routes_section (page);
diff --git a/panels/network/connection-editor/ce-page-ip6.c b/panels/network/connection-editor/ce-page-ip6.c
index 995197504..f7105cc5b 100644
--- a/panels/network/connection-editor/ce-page-ip6.c
+++ b/panels/network/connection-editor/ce-page-ip6.c
@@ -485,6 +485,9 @@ connect_ip6_page (CEPageIP6 *page)
gboolean disabled;
guint method, i;
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (gtk_builder_get_object (CE_PAGE (page)->builder, "main_box")),
+ gtk_scrolled_window_get_vadjustment (gtk_builder_get_object (CE_PAGE (page)->builder, "page")));
+
add_address_section (page);
add_dns_section (page);
add_routes_section (page);
diff --git a/panels/network/connection-editor/ip4-page.ui b/panels/network/connection-editor/ip4-page.ui
index fe5d407c9..597987d57 100644
--- a/panels/network/connection-editor/ip4-page.ui
+++ b/panels/network/connection-editor/ip4-page.ui
@@ -10,7 +10,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkGrid">
+ <object class="GtkGrid" id="main_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_start">24</property>
diff --git a/panels/network/connection-editor/ip6-page.ui b/panels/network/connection-editor/ip6-page.ui
index 6d39bd0ec..5164b1004 100644
--- a/panels/network/connection-editor/ip6-page.ui
+++ b/panels/network/connection-editor/ip6-page.ui
@@ -10,7 +10,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkGrid">
+ <object class="GtkGrid" id="main_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_start">24</property>
--
2.23.0

View File

@ -1,27 +0,0 @@
From 5e0840c52fc5a3e2334ef3a50aa15e320f2f074e Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Fri, 29 Nov 2019 20:45:32 +0100
Subject: [PATCH] network: Make list in "new VPN" dialog fill up space
If we don't have much content on it (Due to lack of VPN NM modules),
the list will look oddly centered. Have it fill the available space.
---
panels/network/connection-editor/connection-editor.ui | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/panels/network/connection-editor/connection-editor.ui b/panels/network/connection-editor/connection-editor.ui
index 4495c728d..9214b6463 100644
--- a/panels/network/connection-editor/connection-editor.ui
+++ b/panels/network/connection-editor/connection-editor.ui
@@ -93,7 +93,7 @@
</object>
<packing>
<property name="expand">True</property>
- <property name="fill">False</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
--
2.24.0

View File

@ -1,73 +0,0 @@
From 3e03aaba0453894aa0affd5b2e4f6a54794387cf Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Wed, 28 Jul 2021 22:16:21 +0200
Subject: [PATCH 1/8] network: Populate AP list from idle handler
Doing this should prevent the UI from becoming completely unusable as
updates of the AP list should be batched up rather than processed
sequentially.
---
panels/network/net-device-wifi.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 313e9ab8c..33758e499 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -64,6 +64,7 @@ struct _NetDeviceWifiPrivate
gchar *selected_connection_id;
gchar *selected_ap_id;
guint scan_id;
+ guint populate_ap_list_idle_id;
GCancellable *cancellable;
};
@@ -1619,6 +1620,7 @@ net_device_wifi_finalize (GObject *object)
g_clear_object (&priv->cancellable);
}
disable_scan_timeout (device_wifi);
+ g_clear_handle_id (&priv->populate_ap_list_idle_id, g_source_remove);
g_clear_pointer (&priv->details_dialog, gtk_widget_destroy);
g_object_unref (priv->builder);
@@ -2145,8 +2147,8 @@ open_history (NetDeviceWifi *device_wifi)
gtk_window_present (GTK_WINDOW (dialog));
}
-static void
-populate_ap_list (NetDeviceWifi *device_wifi)
+static gboolean
+populate_ap_list_idle (NetDeviceWifi *device_wifi)
{
GtkWidget *list;
GtkSizeGroup *rows;
@@ -2162,6 +2164,8 @@ populate_ap_list (NetDeviceWifi *device_wifi)
GtkWidget *button;
GList *children, *child;
+ device_wifi->priv->populate_ap_list_idle_id = 0;
+
list = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder, "listbox"));
children = gtk_container_get_children (GTK_CONTAINER (list));
@@ -2217,6 +2221,17 @@ populate_ap_list (NetDeviceWifi *device_wifi)
g_slist_free (connections);
g_ptr_array_free (aps_unique, TRUE);
+
+ return G_SOURCE_REMOVE;
+}
+
+static void
+populate_ap_list (NetDeviceWifi *device_wifi)
+{
+ if (device_wifi->priv->populate_ap_list_idle_id != 0)
+ return;
+
+ device_wifi->priv->populate_ap_list_idle_id = g_idle_add ((GSourceFunc) populate_ap_list_idle, device_wifi);
}
static void
--
2.34.1

View File

@ -1,63 +0,0 @@
From 3f089ddbd8cc304c563b4ed8cfbc59d27ffadc00 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 12 Dec 2019 22:43:15 +0100
Subject: [PATCH] network: Update VPN empty label status after removing VPN
connection
Being the VPN list actually a collection of listboxes, this function
ensures it looks alright in other places. However the case of removing
all VPN connections till we're back empty was missed.
---
panels/network/cc-network-panel.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index 1a072a65a..f08d9b939 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -761,6 +761,33 @@ notify_connection_added_cb (NMClient *client,
add_connection (panel, NM_CONNECTION (connection));
}
+static void
+notify_connection_removed_cb (NMClient *client,
+ NMRemoteConnection *connection,
+ CcNetworkPanel *panel)
+{
+ guint i;
+
+ for (i = 0; i < panel->devices->len; i++) {
+ NetObject *object = g_ptr_array_index (panel->devices, i);
+ NMConnection *vpn_conn;
+ gboolean equal;
+
+ if (!NET_IS_VPN (object))
+ continue;
+
+ g_object_get (object, "connection", &vpn_conn, NULL);
+ equal = vpn_conn == NM_CONNECTION (connection);
+ g_object_unref (vpn_conn);
+
+ if (equal) {
+ g_ptr_array_remove (panel->devices, object);
+ update_vpn_section (panel);
+ return;
+ }
+ }
+}
+
static void
panel_check_network_manager_version (CcNetworkPanel *panel)
{
@@ -912,6 +939,8 @@ cc_network_panel_init (CcNetworkPanel *panel)
/* add remote settings such as VPN settings as virtual devices */
g_signal_connect (panel->client, NM_CLIENT_CONNECTION_ADDED,
G_CALLBACK (notify_connection_added_cb), panel);
+ g_signal_connect (panel->client, NM_CLIENT_CONNECTION_REMOVED,
+ G_CALLBACK (notify_connection_removed_cb), panel);
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (panel));
g_signal_connect_after (toplevel, "map", G_CALLBACK (on_toplevel_map), panel);
--
2.23.0

View File

@ -1,40 +0,0 @@
From 3f7c47e70915bb085d956d0b3c36d36e4c0da05b Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Mon, 16 Dec 2019 14:06:43 +0100
Subject: [PATCH] network: Use connect object on signals
This ensures the signals are disconnected on panel finalization.
---
panels/network/cc-network-panel.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index 1a072a65a..deb4b967e 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -881,14 +881,14 @@ cc_network_panel_init (CcNetworkPanel *panel)
/* use NetworkManager client */
panel->client = nm_client_new (NULL, NULL);
- g_signal_connect (panel->client, "notify::nm-running" ,
- G_CALLBACK (manager_running), panel);
- g_signal_connect (panel->client, "notify::active-connections",
- G_CALLBACK (active_connections_changed), panel);
- g_signal_connect (panel->client, "device-added",
- G_CALLBACK (device_added_cb), panel);
- g_signal_connect (panel->client, "device-removed",
- G_CALLBACK (device_removed_cb), panel);
+ g_signal_connect_object (panel->client, "notify::nm-running" ,
+ G_CALLBACK (manager_running), panel, 0);
+ g_signal_connect_object (panel->client, "notify::active-connections",
+ G_CALLBACK (active_connections_changed), panel, 0);
+ g_signal_connect_object (panel->client, "device-added",
+ G_CALLBACK (device_added_cb), panel, 0);
+ g_signal_connect_object (panel->client, "device-removed",
+ G_CALLBACK (device_removed_cb), panel, 0);
/* Setup ModemManager client */
system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
--
2.24.0

View File

@ -1,55 +0,0 @@
From 06b1f439c05a20b790cebb850d8ba514249583c4 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Tue, 3 Dec 2019 16:56:59 +0100
Subject: [PATCH] network: Use g_signal_connect_object() when dealing with
NMClient
We may get signal emissions and property changes during NMClient
destruction, triggered from CcWifiPanel destruction. This triggers
callbacks that were not meant to trigger on panel destruction.
---
panels/network/cc-wifi-panel.c | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/panels/network/cc-wifi-panel.c b/panels/network/cc-wifi-panel.c
index 2c1cd17b7..7dd182e59 100644
--- a/panels/network/cc-wifi-panel.c
+++ b/panels/network/cc-wifi-panel.c
@@ -621,20 +621,20 @@ cc_wifi_panel_init (CcWifiPanel *self)
/* Load NetworkManager */
self->client = nm_client_new (NULL, NULL);
- g_signal_connect (self->client,
- "device-added",
- G_CALLBACK (device_added_cb),
- self);
-
- g_signal_connect (self->client,
- "device-removed",
- G_CALLBACK (device_removed_cb),
- self);
-
- g_signal_connect (self->client,
- "notify::wireless-enabled",
- G_CALLBACK (wireless_enabled_cb),
- self);
+ g_signal_connect_object (self->client,
+ "device-added",
+ G_CALLBACK (device_added_cb),
+ self, 0);
+
+ g_signal_connect_object (self->client,
+ "device-removed",
+ G_CALLBACK (device_removed_cb),
+ self, 0);
+
+ g_signal_connect_object (self->client,
+ "notify::wireless-enabled",
+ G_CALLBACK (wireless_enabled_cb),
+ self, 0);
/* Load Wi-Fi devices */
load_wifi_devices (self);
--
2.24.0

View File

@ -1,25 +0,0 @@
From 7b3c55a3e6c53a54a140c59c8a18d9b18e1cc4e5 Mon Sep 17 00:00:00 2001
From: Ethan Hsieh <ethan.hsieh@canonical.com>
Date: Thu, 2 May 2019 13:28:09 +0800
Subject: [PATCH] power: correct the value of 90 minutes to 5400
---
panels/power/power.ui | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/panels/power/power.ui b/panels/power/power.ui
index 2c113b238..60fdc10dc 100644
--- a/panels/power/power.ui
+++ b/panels/power/power.ui
@@ -39,7 +39,7 @@
</row>
<row>
<col id="0" translatable="yes">90 minutes</col>
- <col id="1">4800</col>
+ <col id="1">5400</col>
</row>
<row>
<col id="0" translatable="yes">100 minutes</col>
--
2.24.0

View File

@ -1,383 +0,0 @@
From f135d985e80c85e1578cd60eeb79bd974788031f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Wed, 14 Feb 2018 20:52:37 +0800
Subject: [PATCH] sharing: Enable settings widget for gnome-remote-desktop
Enable support for manipulating GNOME Remote Desktop settings. Settings
are done via the org.gnome.desktop.remote-desktop.vnc schema.
Configuring the VNC password is done via libsecret, thus libsecret is
added as a dependency.
---
meson.build | 1 +
panels/sharing/cc-gnome-remote-desktop.c | 171 +++++++++++++++++++++++
panels/sharing/cc-gnome-remote-desktop.h | 49 +++++++
panels/sharing/cc-sharing-panel.c | 62 +++++++-
panels/sharing/meson.build | 3 +-
5 files changed, 282 insertions(+), 4 deletions(-)
create mode 100644 panels/sharing/cc-gnome-remote-desktop.c
create mode 100644 panels/sharing/cc-gnome-remote-desktop.h
diff --git a/meson.build b/meson.build
index 84e04334c..3017b180a 100644
--- a/meson.build
+++ b/meson.build
@@ -109,6 +109,7 @@ pulse_mainloop_dep = dependency('libpulse-mainloop-glib', version: pulse_req_ver
upower_glib_dep = dependency('upower-glib', version: '>= 0.99.6')
x11_dep = dependency('x11')
xi_dep = dependency('xi', version: '>= 1.2')
+libsecret_dep = dependency('libsecret-1')
m_dep = cc.find_library('m')
diff --git a/panels/sharing/cc-gnome-remote-desktop.c b/panels/sharing/cc-gnome-remote-desktop.c
new file mode 100644
index 000000000..8420fddca
--- /dev/null
+++ b/panels/sharing/cc-gnome-remote-desktop.c
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2018 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include "config.h"
+
+#include "cc-gnome-remote-desktop.h"
+
+const SecretSchema *
+cc_grd_vnc_password_get_schema (void)
+{
+ static const SecretSchema grd_vnc_password_schema = {
+ .name = "org.gnome.RemoteDesktop.VncPassword",
+ .flags = SECRET_SCHEMA_NONE,
+ .attributes = {
+ { "password", SECRET_SCHEMA_ATTRIBUTE_STRING },
+ { "NULL", 0 },
+ },
+ };
+
+ return &grd_vnc_password_schema;
+}
+
+gboolean
+cc_grd_get_is_auth_method_prompt (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ const char * auth_method;
+
+ auth_method = g_variant_get_string (variant, NULL);
+
+ if (g_strcmp0 (auth_method, "prompt") == 0)
+ {
+ g_value_set_boolean (value, TRUE);
+ }
+ else if (g_strcmp0 (auth_method, "password") == 0)
+ {
+ g_value_set_boolean (value, FALSE);
+ }
+ else
+ {
+ g_warning ("Unhandled VNC auth method %s", auth_method);
+ g_value_set_boolean (value, FALSE);
+ }
+
+ return TRUE;
+}
+
+GVariant *
+cc_grd_set_is_auth_method_prompt (const GValue *value,
+ const GVariantType *type,
+ gpointer user_data)
+{
+ char *auth_method;
+
+ if (g_value_get_boolean (value))
+ auth_method = "prompt";
+ else
+ auth_method = "password";
+
+ return g_variant_new_string (auth_method);
+}
+
+gboolean
+cc_grd_get_is_auth_method_password (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ const char *auth_method;
+
+ auth_method = g_variant_get_string (variant, NULL);
+
+ if (g_strcmp0 (auth_method, "prompt") == 0)
+ {
+ g_value_set_boolean (value, FALSE);
+ }
+ else if (g_strcmp0 (auth_method, "password") == 0)
+ {
+ g_value_set_boolean (value, TRUE);
+ }
+ else
+ {
+ g_warning ("Unhandled VNC auth method %s", auth_method);
+ g_value_set_boolean (value, FALSE);
+ }
+
+ return TRUE;
+}
+
+GVariant *
+cc_grd_set_is_auth_method_password (const GValue *value,
+ const GVariantType *type,
+ gpointer user_data)
+{
+ char *auth_method;
+
+ if (g_value_get_boolean (value))
+ auth_method = "password";
+ else
+ auth_method = "prompt";
+
+ return g_variant_new_string (auth_method);
+}
+
+static void
+on_password_stored (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GtkEntry *entry = GTK_ENTRY (user_data);
+ GError *error = NULL;
+
+ if (!secret_password_store_finish (result, &error))
+ {
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ {
+ g_warning ("Failed to store VNC password: %s", error->message);
+ g_object_set_data (G_OBJECT (entry),
+ "vnc-password-cancellable", NULL);
+ }
+ g_error_free (error);
+ }
+ else
+ {
+ g_object_set_data (G_OBJECT (entry),
+ "vnc-password-cancellable", NULL);
+ }
+}
+
+void
+cc_grd_on_vnc_password_entry_notify_text (GtkEntry *entry,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GCancellable *cancellable;
+ const char *password;
+
+ cancellable = g_object_get_data (G_OBJECT (entry), "vnc-password-cancellable");
+ if (cancellable)
+ g_cancellable_cancel (cancellable);
+
+ cancellable = g_cancellable_new ();
+ g_object_set_data_full (G_OBJECT (entry),
+ "vnc-password-cancellable",
+ cancellable, g_object_unref);
+
+ password = gtk_entry_get_text (entry);
+
+ secret_password_store (CC_GRD_VNC_PASSWORD_SCHEMA,
+ SECRET_COLLECTION_DEFAULT,
+ "GNOME Remote Desktop VNC password",
+ password,
+ cancellable, on_password_stored, entry,
+ NULL);
+}
diff --git a/panels/sharing/cc-gnome-remote-desktop.h b/panels/sharing/cc-gnome-remote-desktop.h
new file mode 100644
index 000000000..2a4819986
--- /dev/null
+++ b/panels/sharing/cc-gnome-remote-desktop.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#ifndef CC_GNOME_REMOTE_DESKTOP_H
+#define CC_GNOME_REMOTE_DESKTOP_H
+
+#include <gtk/gtk.h>
+#include <libsecret/secret.h>
+
+const SecretSchema * cc_grd_vnc_password_get_schema (void);
+#define CC_GRD_VNC_PASSWORD_SCHEMA cc_grd_vnc_password_get_schema ()
+
+gboolean cc_grd_get_is_auth_method_prompt (GValue *value,
+ GVariant *variant,
+ gpointer user_data);
+
+GVariant * cc_grd_set_is_auth_method_prompt (const GValue *value,
+ const GVariantType *type,
+ gpointer user_data);
+
+gboolean cc_grd_get_is_auth_method_password (GValue *value,
+ GVariant *variant,
+ gpointer user_data);
+
+GVariant * cc_grd_set_is_auth_method_password (const GValue *value,
+ const GVariantType *type,
+ gpointer user_data);
+
+void cc_grd_on_vnc_password_entry_notify_text (GtkEntry *entry,
+ GParamSpec *pspec,
+ gpointer user_data);
+
+#endif /* CC_GNOME_REMOTE_DESKTOP_H */
diff --git a/panels/sharing/cc-sharing-panel.c b/panels/sharing/cc-sharing-panel.c
index 8b35c9a31..adcbcdc86 100644
--- a/panels/sharing/cc-sharing-panel.c
+++ b/panels/sharing/cc-sharing-panel.c
@@ -30,6 +30,7 @@
#include "cc-media-sharing.h"
#include "cc-sharing-networks.h"
#include "cc-sharing-switch.h"
+#include "cc-gnome-remote-desktop.h"
#include "org.gnome.SettingsDaemon.Sharing.h"
#ifdef GDK_WINDOWING_WAYLAND
@@ -66,6 +67,13 @@ _gtk_builder_get_widget (GtkBuilder *builder,
#define VINO_SCHEMA_ID "org.gnome.Vino"
#define FILE_SHARING_SCHEMA_ID "org.gnome.desktop.file-sharing"
#define GNOME_REMOTE_DESKTOP_SCHEMA_ID "org.gnome.desktop.remote-desktop"
+#define GNOME_REMOTE_DESKTOP_VNC_SCHEMA_ID "org.gnome.desktop.remote-desktop.vnc"
+
+typedef enum
+{
+ GRD_VNC_AUTH_METHOD_PROMPT,
+ GRD_VNC_AUTH_METHOD_PASSWORD
+} GrdVncAuthMethod;
struct _CcSharingPanelPrivate
{
@@ -1077,11 +1085,56 @@ static void
cc_sharing_panel_setup_screen_sharing_dialog_gnome_remote_desktop (CcSharingPanel *self)
{
CcSharingPanelPrivate *priv = self->priv;
- GtkWidget *networks, *w;
+ GSettings *vnc_settings;
+ GtkWidget *networks, *box, *w;
+
+ cc_sharing_panel_bind_switch_to_widgets (WID ("require-password-radiobutton"),
+ WID ("password-grid"),
+ NULL);
+
+ cc_sharing_panel_setup_label_with_hostname (self,
+ WID ("screen-sharing-label"));
+
+ g_object_bind_property (WID ("show-password-checkbutton"), "active",
+ WID ("remote-control-password-entry"), "visibility",
+ G_BINDING_SYNC_CREATE);
+
+ /* make sure the password entry is hidden by default */
+ g_signal_connect (priv->screen_sharing_dialog, "show",
+ G_CALLBACK (screen_sharing_show_cb), self);
+
+ g_signal_connect (priv->screen_sharing_dialog, "hide",
+ G_CALLBACK (screen_sharing_hide_cb), self);
+
+ /* accept at most 8 bytes in password entry */
+ g_signal_connect (WID ("remote-control-password-entry"), "insert-text",
+ G_CALLBACK (screen_sharing_password_insert_text_cb), self);
+
+ /* Bind settings to widgets */
+ vnc_settings = g_settings_new (GNOME_REMOTE_DESKTOP_VNC_SCHEMA_ID);
+ g_settings_bind (vnc_settings, "view-only",
+ WID ("remote-control-checkbutton"), "active",
+ G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_INVERT_BOOLEAN);
+ g_settings_bind_with_mapping (vnc_settings, "auth-method",
+ WID ("approve-connections-radiobutton"), "active",
+ G_SETTINGS_BIND_DEFAULT,
+ cc_grd_get_is_auth_method_prompt,
+ cc_grd_set_is_auth_method_prompt,
+ NULL, NULL);
+ g_settings_bind_with_mapping (vnc_settings, "auth-method",
+ WID ("require-password-radiobutton"), "active",
+ G_SETTINGS_BIND_DEFAULT,
+ cc_grd_get_is_auth_method_password,
+ cc_grd_set_is_auth_method_password,
+ NULL, NULL);
+ g_signal_connect (WID ("remote-control-password-entry"),
+ "notify::text",
+ G_CALLBACK (cc_grd_on_vnc_password_entry_notify_text),
+ self);
networks = cc_sharing_networks_new (self->priv->sharing_proxy, "gnome-remote-desktop");
- gtk_widget_hide (WID ("remote-control-box"));
- gtk_grid_attach (GTK_GRID (WID ("grid3")), networks, 0, 1, 2, 1);
+ box = WID ("remote-control-box");
+ gtk_box_pack_end (GTK_BOX (box), networks, TRUE, TRUE, 0);
gtk_widget_show (networks);
w = cc_sharing_switch_new (networks);
@@ -1116,6 +1169,9 @@ check_remote_desktop_available (CcSharingPanel *self)
if (!cc_sharing_panel_check_schema_available (self, GNOME_REMOTE_DESKTOP_SCHEMA_ID))
return;
+ if (!cc_sharing_panel_check_schema_available (self, GNOME_REMOTE_DESKTOP_VNC_SCHEMA_ID))
+ return;
+
priv->remote_desktop_name_watch = g_bus_watch_name (G_BUS_TYPE_SESSION,
"org.gnome.Mutter.RemoteDesktop",
G_BUS_NAME_WATCHER_FLAGS_NONE,
diff --git a/panels/sharing/meson.build b/panels/sharing/meson.build
index 5caac36c0..1565a089a 100644
--- a/panels/sharing/meson.build
+++ b/panels/sharing/meson.build
@@ -43,6 +43,7 @@ sources = files(
'cc-remote-login.c',
'cc-sharing-networks.c',
'cc-sharing-switch.c',
+ 'cc-gnome-remote-desktop.c',
'file-share-properties.c',
'vino-preferences.c'
)
@@ -79,7 +80,7 @@ panels_libs += static_library(
cappletname,
sources: sources,
include_directories: top_inc,
- dependencies: common_deps,
+ dependencies: [common_deps, libsecret_dep],
c_args: cflags
)
--
2.17.1

View File

@ -1,30 +0,0 @@
From 5502611f0cfe7083c2b2a650385ea4554cb73ac9 Mon Sep 17 00:00:00 2001
From: Robert Ancell <robert.ancell@canonical.com>
Date: Mon, 15 Oct 2018 11:49:19 +1300
Subject: [PATCH 3/4] sharing: Fix warning when disabling sharing
The warning is:
(gnome-control-center:29760): Gtk-CRITICAL **: 11:45:48.076: gtk_widget_is_visible: assertion 'GTK_IS_WIDGET (widget)' failed
This is due to the code trying to disable switches that only exist if support
for that feature is available.
---
panels/sharing/cc-sharing-panel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/panels/sharing/cc-sharing-panel.c b/panels/sharing/cc-sharing-panel.c
index 8b35c9a31..98f2d69ef 100644
--- a/panels/sharing/cc-sharing-panel.c
+++ b/panels/sharing/cc-sharing-panel.c
@@ -91,7 +91,7 @@ struct _CcSharingPanelPrivate
guint remote_desktop_name_watch;
};
-#define OFF_IF_VISIBLE(x) { if (gtk_widget_is_visible(x) && gtk_widget_is_sensitive(x)) gtk_switch_set_active (GTK_SWITCH(x), FALSE); }
+#define OFF_IF_VISIBLE(x) { if ((x) != NULL && gtk_widget_is_visible(x) && gtk_widget_is_sensitive(x)) gtk_switch_set_active (GTK_SWITCH(x), FALSE); }
static void
cc_sharing_panel_master_switch_notify (GtkSwitch *gtkswitch,
--
2.24.0

View File

@ -1,66 +0,0 @@
From 718426652881a9e0cb1ddffb0af0f58128396a23 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Tue, 11 Feb 2020 19:10:15 +0100
Subject: [PATCH] sharing: Remember the password on remote desktop sharing
If we are going through mutter's RemoteDesktop interface, we don't
seemingly remember the password set. Add support for reading it
from secrets and change the entry password on dialog construction,
to bring it on par with our vino handling.
---
panels/sharing/cc-gnome-remote-desktop.c | 16 ++++++++++++++++
panels/sharing/cc-gnome-remote-desktop.h | 2 ++
panels/sharing/cc-sharing-panel.c | 2 ++
3 files changed, 20 insertions(+)
diff --git a/panels/sharing/cc-gnome-remote-desktop.c b/panels/sharing/cc-gnome-remote-desktop.c
index 8420fddca..599467fb4 100644
--- a/panels/sharing/cc-gnome-remote-desktop.c
+++ b/panels/sharing/cc-gnome-remote-desktop.c
@@ -169,3 +169,19 @@ cc_grd_on_vnc_password_entry_notify_text (GtkEntry *entry,
cancellable, on_password_stored, entry,
NULL);
}
+
+void
+cc_grd_update_password_entry (GtkEntry *entry)
+{
+ g_autoptr(GError) error = NULL;
+ g_autofree gchar *password = NULL;
+
+ password = secret_password_lookup_sync (CC_GRD_VNC_PASSWORD_SCHEMA,
+ NULL, &error,
+ NULL);
+ if (error)
+ g_critical ("Failed to get password: %s", error->message);
+
+ if (password)
+ gtk_entry_set_text (entry, password);
+}
diff --git a/panels/sharing/cc-gnome-remote-desktop.h b/panels/sharing/cc-gnome-remote-desktop.h
index 2a4819986..1f83e2dd6 100644
--- a/panels/sharing/cc-gnome-remote-desktop.h
+++ b/panels/sharing/cc-gnome-remote-desktop.h
@@ -46,4 +46,6 @@ void cc_grd_on_vnc_password_entry_notify_text (GtkEntry *entry,
GParamSpec *pspec,
gpointer user_data);
+void cc_grd_update_password_entry (GtkEntry *entry);
+
#endif /* CC_GNOME_REMOTE_DESKTOP_H */
diff --git a/panels/sharing/cc-sharing-panel.c b/panels/sharing/cc-sharing-panel.c
index ab22f5df8..17ecdb11a 100644
--- a/panels/sharing/cc-sharing-panel.c
+++ b/panels/sharing/cc-sharing-panel.c
@@ -1106,6 +1106,8 @@ cc_sharing_panel_setup_screen_sharing_dialog_gnome_remote_desktop (CcSharingPane
g_signal_connect (priv->screen_sharing_dialog, "hide",
G_CALLBACK (screen_sharing_hide_cb), self);
+ cc_grd_update_password_entry (WID ("remote-control-password-entry"));
+
/* accept at most 8 bytes in password entry */
g_signal_connect (WID ("remote-control-password-entry"), "insert-text",
G_CALLBACK (screen_sharing_password_insert_text_cb), self);
--
2.24.1

View File

@ -1,6 +1,6 @@
From 928eebadf0fd960472a83159c9888d946cd75ed2 Mon Sep 17 00:00:00 2001
From 7196e8aaea48054dd5fe825d371aec2319960897 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Wed, 21 Apr 2021 18:54:06 +0000
Date: Wed, 21 Apr 2021 20:54:06 +0200
Subject: [PATCH] shell: Avoid handling map events from other windows
The CcWindow tries to unset the focus when first mapping the window.
@ -14,19 +14,21 @@ GDK window before unsetting the focus, so we don't mess with popover
focus.
Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1327
(cherry picked from commit 7196e8aaea48054dd5fe825d371aec2319960897)
---
shell/cc-window.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
shell/cc-window.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/shell/cc-window.c b/shell/cc-window.c
index 9144834a4..fe5ad1ee7 100644
index 400c39116..de4eccc04 100644
--- a/shell/cc-window.c
+++ b/shell/cc-window.c
@@ -458,10 +458,14 @@ window_map_event_cb (GtkWidget *widget,
GdkEvent *event,
CcWindow *self)
@@ -585,12 +585,17 @@ gdk_window_set_cb (CcWindow *self)
}
static gboolean
-window_map_event_cb (CcWindow *self)
+window_map_event_cb (CcWindow *self,
+ GdkEvent *event)
{
- /* If focus ends up in a category icon view one of the items is
- * immediately selected which looks odd when we are starting up, so
@ -44,5 +46,5 @@ index 9144834a4..fe5ad1ee7 100644
}
--
2.37.1
2.37.3

View File

@ -1,47 +0,0 @@
From ec695fae92ef7470ef05211160e431f5c3486299 Mon Sep 17 00:00:00 2001
From: Christian Kellner <christian@kellner.me>
Date: Tue, 10 Apr 2018 09:43:22 +0200
Subject: [PATCH 1/4] shell: Don't set per-panel icon
The control center app is considered one single application with
a single icon to represent it. Therefore get rid of per-panel
icons.
---
shell/cc-window.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/shell/cc-window.c b/shell/cc-window.c
index 557819e0c76c..33f1ddcad511 100644
--- a/shell/cc-window.c
+++ b/shell/cc-window.c
@@ -118,7 +118,6 @@ activate_panel (CcWindow *self,
GIcon *gicon)
{
GtkWidget *box, *title_widget;
- const gchar *icon_name;
if (!id)
return FALSE;
@@ -144,12 +143,8 @@ activate_panel (CcWindow *self,
gtk_stack_set_visible_child_name (GTK_STACK (self->stack), id);
/* set the title of the window */
- icon_name = get_icon_name_from_g_icon (gicon);
-
gtk_window_set_role (GTK_WINDOW (self), id);
gtk_header_bar_set_title (GTK_HEADER_BAR (self->panel_headerbar), name);
- gtk_window_set_default_icon_name (icon_name);
- gtk_window_set_icon_name (GTK_WINDOW (self), icon_name);
title_widget = cc_panel_get_title_widget (CC_PANEL (self->current_panel));
gtk_header_bar_set_custom_title (GTK_HEADER_BAR (self->panel_headerbar), title_widget);
@@ -778,4 +773,4 @@ cc_window_set_search_item (CcWindow *center,
gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (center->search_bar), TRUE);
gtk_entry_set_text (GTK_ENTRY (center->search_entry), search);
gtk_editable_set_position (GTK_EDITABLE (center->search_entry), -1);
-}
\ No newline at end of file
+}
--
2.17.0

View File

@ -1,36 +0,0 @@
From 9dd43182ecb9f8406a1aecd0719f2c5225d3101e Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 28 Nov 2019 15:47:02 +0100
Subject: [PATCH 1/3] sound: Ensure to preserve sound theme when changing from
default
The sound theme change itself triggers signals that are handled here
in the GSettings handlers, possibly resulting in it changing the
theme back to default. Ensure we are handling a real change here,
the sound theme will be updated through other means (eg. the row
changed handler).
---
panels/sound/gvc-sound-theme-chooser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/panels/sound/gvc-sound-theme-chooser.c b/panels/sound/gvc-sound-theme-chooser.c
index 93eeb155c..9d1051f04 100644
--- a/panels/sound/gvc-sound-theme-chooser.c
+++ b/panels/sound/gvc-sound-theme-chooser.c
@@ -632,11 +632,11 @@ update_theme (GvcSoundThemeChooser *chooser)
load_theme_name (DEFAULT_THEME,
&chooser->current_parent);
}
+
+ update_alerts_from_theme_name (chooser, chooser->current_theme);
}
gtk_widget_set_sensitive (chooser->selection_box, events_enabled);
-
- update_alerts_from_theme_name (chooser, chooser->current_theme);
}
static GObject *
--
2.24.0

View File

@ -1,102 +0,0 @@
From 533811deef3155abe71dbace6960feee0aa8a35a Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Wed, 31 Jul 2019 19:09:17 +0200
Subject: [PATCH] user: Support devices with more than 5 enroll steps
We are currently adding support for Synaptics devices that require 8
steps. Add another row for images which brings us to up to 10
supportable steps for now.
---
.../user-accounts/data/account-fingerprint.ui | 62 +++++++++++++++++++
panels/user-accounts/um-fingerprint-dialog.c | 2 +-
2 files changed, 63 insertions(+), 1 deletion(-)
diff --git a/panels/user-accounts/data/account-fingerprint.ui b/panels/user-accounts/data/account-fingerprint.ui
index e352e6de1..969f7ca30 100644
--- a/panels/user-accounts/data/account-fingerprint.ui
+++ b/panels/user-accounts/data/account-fingerprint.ui
@@ -243,6 +243,68 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkHBox" id="enroll2_hbox">
+ <property name="visible">True</property>
+ <property name="margin-top">24</property>
+ <property name="margin-bottom">24</property>
+ <child>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="stock">gtk-no</property>
+ <property name="icon-size">6</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="stock">gtk-no</property>
+ <property name="icon-size">6</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="stock">gtk-no</property>
+ <property name="icon-size">6</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="image9">
+ <property name="visible">True</property>
+ <property name="stock">gtk-no</property>
+ <property name="icon-size">6</property>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="image10">
+ <property name="visible">True</property>
+ <property name="stock">gtk-no</property>
+ <property name="icon-size">6</property>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
<child>
<object class="GtkLabel" id="status-label">
<property name="visible">True</property>
diff --git a/panels/user-accounts/um-fingerprint-dialog.c b/panels/user-accounts/um-fingerprint-dialog.c
index 48b12dcf3..f5dee5b95 100644
--- a/panels/user-accounts/um-fingerprint-dialog.c
+++ b/panels/user-accounts/um-fingerprint-dialog.c
@@ -32,7 +32,7 @@
#include "fingerprint-strings.h"
/* This must match the number of images on the 2nd page in the UI file */
-#define MAX_ENROLL_STAGES 5
+#define MAX_ENROLL_STAGES 10
static GDBusProxy *manager = NULL;
static GDBusConnection *connection = NULL;
--
2.24.1

View File

@ -1,31 +0,0 @@
From 520411840b6cd1b9b72e4a2fd19701aad7145f4f Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 13 Feb 2020 20:28:29 +0100
Subject: [PATCH] wacom: Pick libwacom's Generic Pen stylus if tool ID is 0
We generally use tool ID 0 if the ID is actually unknown, libwacom however
assigns 0xfffff to such device. Make it sure we find the "Generic Pen"
stylus description in that case.
---
panels/wacom/cc-wacom-tool.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/panels/wacom/cc-wacom-tool.c b/panels/wacom/cc-wacom-tool.c
index 1316fa5d6..d54de6160 100644
--- a/panels/wacom/cc-wacom-tool.c
+++ b/panels/wacom/cc-wacom-tool.c
@@ -165,7 +165,10 @@ cc_wacom_tool_initable_init (GInitable *initable,
tool->id = ids[0];
}
- tool->wstylus = libwacom_stylus_get_for_id (wacom_db, tool->id);
+ if (tool->id == 0)
+ tool->wstylus = libwacom_stylus_get_for_id (wacom_db, 0xfffff);
+ else
+ tool->wstylus = libwacom_stylus_get_for_id (wacom_db, tool->id);
if (!tool->wstylus) {
g_set_error (error, 0, 0, "Stylus description not found");
--
2.25.0

View File

@ -1,72 +0,0 @@
From 7a4532ff72a74ce74dee4b96b993ecd11f557acc Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Mon, 11 Feb 2019 20:48:23 +0100
Subject: [PATCH] wacom: Update "Test your settings" button sensitivity on
device availability
The button/popover are meaningless if there's no device to test with. Set
it inactive (so the popover hides if visible) and set insensitive if no
devices are found.
https://gitlab.gnome.org/GNOME/gnome-control-center/merge_requests/390
---
panels/wacom/cc-wacom-panel.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/panels/wacom/cc-wacom-panel.c b/panels/wacom/cc-wacom-panel.c
index 77a1e261f..e4f3ca7fc 100644
--- a/panels/wacom/cc-wacom-panel.c
+++ b/panels/wacom/cc-wacom-panel.c
@@ -53,6 +53,7 @@ struct _CcWacomPanelPrivate
GtkWidget *stylus_notebook;
GtkWidget *test_popover;
GtkWidget *test_draw_area;
+ GtkWidget *test_button;
GHashTable *devices; /* key=GsdDevice, value=CcWacomDevice */
GHashTable *pages; /* key=device name, value=GtkWidget */
GHashTable *stylus_pages; /* key=CcWacomTool, value=GtkWidget */
@@ -309,6 +310,22 @@ add_stylus (CcWacomPanel *self,
return TRUE;
}
+static void
+update_test_button (CcWacomPanel *self)
+{
+ CcWacomPanelPrivate *priv = self->priv;;
+
+ if (!priv->test_button)
+ return;
+
+ if (g_hash_table_size (priv->devices) == 0) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->test_button), FALSE);
+ gtk_widget_set_sensitive (priv->test_button, FALSE);
+ } else {
+ gtk_widget_set_sensitive (priv->test_button, TRUE);
+ }
+}
+
static void
update_current_tool (CcWacomPanel *panel,
GdkDevice *device,
@@ -422,6 +439,9 @@ cc_wacom_panel_constructed (GObject *object)
g_signal_connect_object (shell, "event",
G_CALLBACK (on_shell_event_cb), self, 0);
+
+ priv->test_button = button;
+ update_test_button (self);
}
static const char *
@@ -561,6 +581,8 @@ update_current_page (CcWacomPanel *self,
if (num_pages > 1)
gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->tablet_notebook), 1);
}
+
+ update_test_button (self);
}
static void
--
2.20.1

View File

@ -1,41 +0,0 @@
From 07410fb2f8ecf1dd8bb82bf29a7e81304f62aa81 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Mon, 30 Jul 2018 21:10:31 +0200
Subject: [PATCH] wacom: Update to newer "output" setting
The semantics are pretty much the same for opaque tablets, not
much else to do here.
---
panels/wacom/cc-wacom-device.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/panels/wacom/cc-wacom-device.c b/panels/wacom/cc-wacom-device.c
index 488637dec..e0915d5b5 100644
--- a/panels/wacom/cc-wacom-device.c
+++ b/panels/wacom/cc-wacom-device.c
@@ -309,11 +309,11 @@ find_output (GnomeRRScreen *rr_screen,
gsize n;
settings = cc_wacom_device_get_settings (device);
- variant = g_settings_get_value (settings, "display");
+ variant = g_settings_get_value (settings, "output");
edid = g_variant_get_strv (variant, &n);
if (n != 3) {
- g_critical ("Expected 'display' key to store %d values; got %"G_GSIZE_FORMAT".", 3, n);
+ g_critical ("Expected 'output' key to store %d values; got %"G_GSIZE_FORMAT".", 3, n);
goto out;
}
@@ -378,7 +378,7 @@ cc_wacom_device_set_output (CcWacomDevice *device,
values[2] = serial;
}
- g_settings_set_strv (settings, "display", values);
+ g_settings_set_strv (settings, "output", values);
g_free (vendor);
g_free (product);
--
2.21.0

View File

@ -1,599 +0,0 @@
From ecc4b3d0f021012a5f46bb7852bb85cc314468b9 Mon Sep 17 00:00:00 2001
From: Felipe Borges <felipeborges@gnome.org>
Date: Wed, 3 Aug 2022 10:49:05 +0200
Subject: [PATCH] network: Split airplane-mode widget off main Wi-Fi panel
stack
The airplane-mode widget (rfkill_widget) on the wifi panel was part
of the "wifi-connections" stack page, and it would get hidden
whenever the panel switched to another page ("nm-not-running" or
"no-wifi-devices").
This way, whenever a user would turn airplane-mode ON, the panel
would disable wifi and set the main stack page to "no-wifi-devices",
making the airplane-mode widget inaccessible, preventing users from
turning airplane-mode OFF in gnome-control-center.
These changes reorganize the widget hierarchy as such that the
airplane-mode widget is now above the main stack and will persist
visible as the main stack changes.
---
panels/network/cc-wifi-panel.c | 17 ++
panels/network/wifi.ui | 464 +++++++++++++++++----------------
2 files changed, 255 insertions(+), 226 deletions(-)
diff --git a/panels/network/cc-wifi-panel.c b/panels/network/cc-wifi-panel.c
index 2c1cd17b7..989506c6a 100644
--- a/panels/network/cc-wifi-panel.c
+++ b/panels/network/cc-wifi-panel.c
@@ -411,6 +411,17 @@ wireless_enabled_cb (NMClient *client,
check_main_stack_page (self);
}
+static void
+on_rfkill_proxy_properties_changed_cb (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ GStrv invalidated_properties,
+ CcWifiPanel *self)
+{
+ g_debug ("Rfkill properties changed");
+
+ sync_airplane_mode_switch (self);
+}
+
static void
rfkill_proxy_acquired_cb (GObject *source_object,
GAsyncResult *res,
@@ -436,6 +447,12 @@ rfkill_proxy_acquired_cb (GObject *source_object,
self->rfkill_proxy = proxy;
+ g_signal_connect_object (proxy,
+ "g-properties-changed",
+ G_CALLBACK (on_rfkill_proxy_properties_changed_cb),
+ self,
+ 0);
+
sync_airplane_mode_switch (self);
}
diff --git a/panels/network/wifi.ui b/panels/network/wifi.ui
index a3eab3889..c0f8a06b1 100644
--- a/panels/network/wifi.ui
+++ b/panels/network/wifi.ui
@@ -4,294 +4,306 @@
<template class="CcWifiPanel" parent="CcPanel">
<property name="visible">True</property>
<property name="can-focus">False</property>
+
<child>
- <object class="GtkStack" id="main_stack">
+ <object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property name="homogeneous">False</property>
- <property name="transition_type">crossfade</property>
-
- <!-- "No Wi-Fi Adapter" page -->
+ <property name="hscrollbar-policy">never</property>
<child>
- <object class="GtkBox">
+ <object class="GtkViewport">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="expand">True</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">network-wireless-no-route-symbolic</property>
- <property name="pixel_size">256</property>
- <property name="margin-bottom">18</property>
- <style>
- <class name="dim-label" />
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">No Wi-Fi Adapter Found</property>
- <attributes>
- <attribute name="weight" value="bold" />
- <attribute name="scale" value="1.2" />
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">Make sure you have a Wi-Fi adapter plugged and turned on</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="name">no-wifi-devices</property>
- </packing>
- </child>
+ <property name="shadow-type">none</property>
- <!-- Wi-Fi connections and devices -->
- <child>
- <object class="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="hscrollbar-policy">never</property>
<child>
- <object class="GtkViewport">
+ <object class="GtkGrid">
<property name="visible">True</property>
- <property name="shadow-type">none</property>
+ <property name="border-width">32</property>
+
+ <!-- Empty boxes to enforce 1/3 width for the main widgets -->
<child>
- <object class="GtkGrid">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="border-width">32</property>
-
- <!-- Empty boxes to enforce 1/3 width for the main widgets -->
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">0</property>
- <property name="height">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- </object>
- <packing>
- <property name="left-attach">2</property>
- <property name="top-attach">0</property>
- <property name="height">3</property>
- </packing>
- </child>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="height">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="height">3</property>
+ </packing>
+ </child>
- <!-- Airplane Mode -->
+ <child>
+ <!-- Airplane Mode -->
+ <object class="GtkFrame" id="rfkill_widget">
+ <property name="visible">True</property>
+ <property name="vexpand">False</property>
+ <property name="margin_bottom">32</property>
<child>
- <object class="GtkFrame" id="rfkill_widget">
+ <object class="GtkListBox">
<property name="visible">True</property>
- <property name="vexpand">False</property>
- <property name="margin_bottom">32</property>
+ <property name="selection-mode">none</property>
<child>
- <object class="GtkListBox">
+ <object class="GtkListBoxRow">
<property name="visible">True</property>
- <property name="selection-mode">none</property>
+ <property name="can-focus">False</property>
+ <property name="activatable">False</property>
<child>
- <object class="GtkListBoxRow">
+ <object class="GtkGrid">
<property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="activatable">False</property>
+ <property name="border-width">12</property>
+ <property name="margin_left">6</property>
+ <property name="margin_right">6</property>
+ <property name="column-spacing">12</property>
+ <property name="row-spacing">2</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Airplane Mode</property>
+ <property name="xalign">0.0</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
<child>
- <object class="GtkGrid">
+ <object class="GtkLabel">
<property name="visible">True</property>
- <property name="border-width">12</property>
- <property name="margin_left">6</property>
- <property name="margin_right">6</property>
- <property name="column-spacing">12</property>
- <property name="row-spacing">2</property>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Airplane Mode</property>
- <property name="xalign">0.0</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Disables Wi-Fi, Bluetooth and mobile broadband</property>
- <property name="xalign">0.0</property>
- <attributes>
- <attribute name="scale" value="0.88"/>
- </attributes>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSwitch" id="rfkill_switch">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="valign">center</property>
- <signal name="notify::active" handler="rfkill_switch_notify_activate_cb" object="CcWifiPanel" swapped="no" />
- </object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">0</property>
- <property name="height">2</property>
- </packing>
- </child>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Disables Wi-Fi, Bluetooth and mobile broadband</property>
+ <property name="xalign">0.0</property>
+ <attributes>
+ <attribute name="scale" value="0.88"/>
+ </attributes>
+ <style>
+ <class name="dim-label"/>
+ </style>
</object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="rfkill_switch">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <signal name="notify::active" handler="rfkill_switch_notify_activate_cb" object="CcWifiPanel" swapped="no" />
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ <property name="height">2</property>
+ </packing>
</child>
</object>
</child>
</object>
</child>
</object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">0</property>
- </packing>
</child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
- <!-- Visible Networks label & spinner -->
+ <child>
+ <object class="GtkStack" id="main_stack">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="homogeneous">False</property>
+ <property name="transition_type">crossfade</property>
+
+ <!-- "No Wi-Fi Adapter" page -->
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="halign">start</property>
- <property name="spacing">6</property>
+ <property name="can_focus">False</property>
+ <property name="expand">True</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">network-wireless-no-route-symbolic</property>
+ <property name="pixel_size">256</property>
+ <property name="margin-bottom">18</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ </object>
+ </child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
- <property name="label" translatable="yes">Visible Networks</property>
- <property name="xalign">0.0</property>
- <property name="margin_bottom">12</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">No Wi-Fi Adapter Found</property>
<attributes>
- <attribute name="weight" value="bold"/>
+ <attribute name="weight" value="bold" />
+ <attribute name="scale" value="1.2" />
</attributes>
</object>
</child>
<child>
- <object class="GtkSpinner" id="spinner">
- <property name="hexpand">True</property>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">Make sure you have a Wi-Fi adapter plugged and turned on</property>
</object>
</child>
</object>
<packing>
- <property name="left-attach">1</property>
- <property name="top-attach">1</property>
+ <property name="name">no-wifi-devices</property>
</packing>
</child>
- <!-- Stack with a listbox for each Wi-Fi device -->
+ <!-- Wi-Fi connections and devices -->
<child>
- <object class="GtkFrame">
+ <object class="GtkGrid">
<property name="visible">True</property>
- <property name="valign">start</property>
- <style>
- <class name="view" />
- </style>
+
+ <!-- Visible Networks label & spinner -->
<child>
- <object class="GtkStack" id="stack">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <property name="transition_type">crossfade</property>
+ <property name="halign">start</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Visible Networks</property>
+ <property name="xalign">0.0</property>
+ <property name="margin_bottom">12</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner">
+ <property name="hexpand">True</property>
+ </object>
+ </child>
</object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+
+ <!-- Stack with a listbox for each Wi-Fi device -->
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="valign">start</property>
+ <style>
+ <class name="view" />
+ </style>
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="transition_type">crossfade</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
</child>
</object>
<packing>
- <property name="left-attach">1</property>
- <property name="top-attach">2</property>
+ <property name="name">wifi-connections</property>
+ </packing>
+ </child>
+
+ <!-- "NetworkManager Not Running" page -->
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <property name="margin">18</property>
+ <property name="spacing">18</property>
+ <child type="center">
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">face-sad-symbolic</property>
+ <property name="pixel_size">128</property>
+ <style>
+ <class name="dim-label" />
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">NetworkManager needs to be running</property>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="wrap">True</property>
+ <property name="label" translatable="yes">Oops, something has gone wrong. Please contact your software vendor.</property>
+ <attributes>
+ <attribute name="scale" value="1.42" />
+ </attributes>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="name">nm-not-running</property>
</packing>
</child>
</object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="height">3</property>
+ </packing>
</child>
</object>
</child>
</object>
- <packing>
- <property name="name">wifi-connections</property>
- </packing>
- </child>
-
- <!-- "NetworkManager Not Running" page -->
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="expand">True</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="orientation">vertical</property>
- <property name="margin">18</property>
- <property name="spacing">18</property>
- <child type="center">
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">face-sad-symbolic</property>
- <property name="pixel_size">128</property>
- <style>
- <class name="dim-label" />
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">NetworkManager needs to be running</property>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="label" translatable="yes">Oops, something has gone wrong. Please contact your software vendor.</property>
- <attributes>
- <attribute name="scale" value="1.42" />
- </attributes>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="name">nm-not-running</property>
- </packing>
</child>
</object>
</child>
--
2.34.1

View File

@ -1,61 +0,0 @@
From f57cad1d508b4f07cc39fd6f7abedd66d1fe9b50 Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Fri, 20 Dec 2019 19:54:01 +0100
Subject: [PATCH 2/8] ce-page-security: add SAE support
(cherry picked from commit 2e79c531942cf88051498c962116c010835ab7e1)
---
.../connection-editor/ce-page-security.c | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/panels/network/connection-editor/ce-page-security.c b/panels/network/connection-editor/ce-page-security.c
index d06e3aeb1..5104d7442 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -68,6 +68,11 @@ get_default_type_for_security (NMSettingWirelessSecurity *sec)
return NMU_SEC_LEAP;
return NMU_SEC_DYNAMIC_WEP;
}
+#if NM_CHECK_VERSION(1,20,6)
+ if (!strcmp (key_mgmt, "sae")) {
+ return NMU_SEC_SAE;
+ }
+#endif
if ( !strcmp (key_mgmt, "wpa-none")
|| !strcmp (key_mgmt, "wpa-psk")) {
@@ -336,6 +341,21 @@ finish_setup (CEPageSecurity *page)
}
}
+#if NM_CHECK_VERSION(1,20,6)
+ if (nm_utils_security_valid (NMU_SEC_SAE, dev_caps, FALSE, is_adhoc, 0, 0, 0)) {
+ WirelessSecurityWPAPSK *ws_wpa_psk;
+
+ ws_wpa_psk = ws_wpa_psk_new (connection, FALSE);
+ if (ws_wpa_psk) {
+ add_security_item (page, WIRELESS_SECURITY (ws_wpa_psk), sec_model,
+ &iter, _("WPA3 Personal"), FALSE);
+ if ((active < 0) && ((default_type == NMU_SEC_SAE)))
+ active = item;
+ item++;
+ }
+ }
+#endif
+
gtk_combo_box_set_model (combo, GTK_TREE_MODEL (sec_model));
gtk_cell_layout_clear (GTK_CELL_LAYOUT (combo));
@@ -451,6 +471,9 @@ ce_page_security_new (NMConnection *connection,
if (default_type == NMU_SEC_STATIC_WEP ||
default_type == NMU_SEC_LEAP ||
default_type == NMU_SEC_WPA_PSK ||
+#if NM_CHECK_VERSION(1,20,6)
+ default_type == NMU_SEC_SAE ||
+#endif
default_type == NMU_SEC_WPA2_PSK) {
CE_PAGE (page)->security_setting = NM_SETTING_WIRELESS_SECURITY_SETTING_NAME;
}
--
2.34.1

View File

@ -1,228 +0,0 @@
From 2025db03559f4ca8872045618cac75cfb2fe10f1 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Sun, 24 Jan 2021 10:29:56 -0500
Subject: [PATCH 2/4] info: Move helper for getting subscription status to
header
In the future we're going to need to be able to get the subscription
status in two files, so move the function for getting that status
to a common header.
Ideally we'd be using code generation for the subscription proxy
instead, but that's a bigger refactor that will have to wait for
another day.
---
panels/info/cc-info-overview-panel.c | 32 ++------------------------
panels/info/cc-subscription-common.h | 34 ++++++++++++++++++++++++++++
2 files changed, 36 insertions(+), 30 deletions(-)
create mode 100644 panels/info/cc-subscription-common.h
diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c
index 1467060f9..b2cbefb25 100644
--- a/panels/info/cc-info-overview-panel.c
+++ b/panels/info/cc-info-overview-panel.c
@@ -1,56 +1,57 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
*
* Copyright (C) 2017 Mohammed Sadiq <sadiq@sadiqpk.org>
* Copyright (C) 2010 Red Hat, Inc
* Copyright (C) 2008 William Jon McCann <jmccann@redhat.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <config.h>
#include "shell/cc-hostname-entry.h"
#include "cc-info-resources.h"
+#include "cc-subscription-common.h"
#include "cc-subscription-details-dialog.h"
#include "cc-subscription-register-dialog.h"
#include "info-cleanup.h"
#include <glib.h>
#include <glib/gi18n.h>
#include <gio/gio.h>
#include <gio/gunixmounts.h>
#include <gio/gdesktopappinfo.h>
#include <glibtop/fsusage.h>
#include <glibtop/mountlist.h>
#include <glibtop/mem.h>
#include <glibtop/sysinfo.h>
#include <gdk/gdk.h>
#ifdef GDK_WINDOWING_WAYLAND
#include <gdk/gdkwayland.h>
#endif
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
#endif
#include "gsd-disk-space-helper.h"
#include "cc-info-overview-panel.h"
typedef struct {
@@ -773,102 +774,73 @@ info_overview_panel_setup_overview (CcInfoOverviewPanel *self)
res = load_gnome_version (&priv->gnome_version,
&priv->gnome_distributor,
&priv->gnome_date);
if (res)
{
g_autofree gchar *text = NULL;
text = g_strdup_printf (_("Version %s"), priv->gnome_version);
gtk_label_set_text (GTK_LABEL (priv->version_label), text);
}
glibtop_get_mem (&mem);
memory_text = g_format_size_full (mem.total, G_FORMAT_SIZE_IEC_UNITS);
gtk_label_set_text (GTK_LABEL (priv->memory_label), memory_text ? memory_text : "");
info = glibtop_get_sysinfo ();
cpu_text = get_cpu_info (info);
gtk_label_set_markup (GTK_LABEL (priv->processor_label), cpu_text ? cpu_text : "");
os_type_text = get_os_type ();
gtk_label_set_text (GTK_LABEL (priv->os_type_label), os_type_text ? os_type_text : "");
os_name_text = get_os_name ();
gtk_label_set_text (GTK_LABEL (priv->os_name_label), os_name_text ? os_name_text : "");
get_primary_disc_info (self);
gtk_label_set_markup (GTK_LABEL (priv->graphics_label), priv->graphics_data->hardware_string);
}
-typedef enum {
- GSD_SUBMAN_SUBSCRIPTION_STATUS_UNKNOWN,
- GSD_SUBMAN_SUBSCRIPTION_STATUS_VALID,
- GSD_SUBMAN_SUBSCRIPTION_STATUS_INVALID,
- GSD_SUBMAN_SUBSCRIPTION_STATUS_DISABLED,
- GSD_SUBMAN_SUBSCRIPTION_STATUS_PARTIALLY_VALID,
- GSD_SUBMAN_SUBSCRIPTION_STATUS_LAST
-} GsdSubmanSubscriptionStatus;
-
-static gboolean
-get_subscription_status (CcInfoOverviewPanel *self, GsdSubmanSubscriptionStatus *status)
-{
- CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
- g_autoptr(GVariant) status_variant = NULL;
- guint32 u;
-
- status_variant = g_dbus_proxy_get_cached_property (priv->subscription_proxy, "SubscriptionStatus");
- if (!status_variant)
- {
- g_debug ("Unable to get SubscriptionStatus property");
- return FALSE;
- }
-
- g_variant_get (status_variant, "u", &u);
- *status = u;
-
- return TRUE;
-}
-
static void
reload_subscription_status (CcInfoOverviewPanel *self)
{
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
GsdSubmanSubscriptionStatus status;
if (priv->subscription_proxy == NULL)
{
gtk_widget_hide (priv->subscription_stack);
return;
}
- if (!get_subscription_status (self, &status))
+ if (!get_subscription_status (priv->subscription_proxy, &status))
{
gtk_widget_hide (priv->subscription_stack);
return;
}
switch (status)
{
case GSD_SUBMAN_SUBSCRIPTION_STATUS_UNKNOWN:
case GSD_SUBMAN_SUBSCRIPTION_STATUS_INVALID:
case GSD_SUBMAN_SUBSCRIPTION_STATUS_DISABLED:
case GSD_SUBMAN_SUBSCRIPTION_STATUS_PARTIALLY_VALID:
gtk_stack_set_visible_child_name (GTK_STACK (priv->subscription_stack), "not-registered");
gtk_widget_set_sensitive (priv->updates_button, FALSE);
break;
case GSD_SUBMAN_SUBSCRIPTION_STATUS_VALID:
gtk_stack_set_visible_child_name (GTK_STACK (priv->subscription_stack), "registered");
gtk_widget_set_sensitive (priv->updates_button, TRUE);
break;
default:
g_assert_not_reached ();
break;
}
}
static void
on_details_button_clicked (GtkWidget *widget,
CcInfoOverviewPanel *self)
{
diff --git a/panels/info/cc-subscription-common.h b/panels/info/cc-subscription-common.h
new file mode 100644
index 000000000..034d64181
--- /dev/null
+++ b/panels/info/cc-subscription-common.h
@@ -0,0 +1,34 @@
+#ifndef CC_SUBSCRIPTION_COMMON_H
+#define CC_SUBSCRIPTION_COMMON_H
+
+typedef enum {
+ GSD_SUBMAN_SUBSCRIPTION_STATUS_UNKNOWN,
+ GSD_SUBMAN_SUBSCRIPTION_STATUS_VALID,
+ GSD_SUBMAN_SUBSCRIPTION_STATUS_INVALID,
+ GSD_SUBMAN_SUBSCRIPTION_STATUS_DISABLED,
+ GSD_SUBMAN_SUBSCRIPTION_STATUS_PARTIALLY_VALID,
+ GSD_SUBMAN_SUBSCRIPTION_STATUS_NO_INSTALLED_PRODUCTS,
+ GSD_SUBMAN_SUBSCRIPTION_STATUS_LAST
+} GsdSubmanSubscriptionStatus;
+
+static inline gboolean
+get_subscription_status (GDBusProxy *subscription_proxy,
+ GsdSubmanSubscriptionStatus *status)
+{
+ g_autoptr(GVariant) status_variant = NULL;
+ guint32 u;
+
+ status_variant = g_dbus_proxy_get_cached_property (subscription_proxy, "SubscriptionStatus");
+ if (!status_variant)
+ {
+ g_debug ("Unable to get SubscriptionStatus property");
+ return FALSE;
+ }
+
+ g_variant_get (status_variant, "u", &u);
+ *status = u;
+
+ return TRUE;
+}
+
+#endif
--
2.28.0

View File

@ -1,78 +0,0 @@
From b24a8e9aa82b64de970d8137181bf8a03b6f724a Mon Sep 17 00:00:00 2001
From: Christian Kellner <christian@kellner.me>
Date: Tue, 10 Apr 2018 09:47:48 +0200
Subject: [PATCH 2/4] shell: Icon name helper returns symbolic name
The helper function to get the icon name from a GIcon directly
returns the symbolic icon now. This makes it in turn possible
to also directly check if the theme has the icon with the symbolic
name instead of checking of for the full colored one and then
deriving the symbolic name from that. The latter (old) practice
will fail if there is a symbolic icon in the theme that has no
full color icon (like e.g. thunderbolt).
---
shell/cc-window.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/shell/cc-window.c b/shell/cc-window.c
index 33f1ddcad511..3af9cf0bd9fc 100644
--- a/shell/cc-window.c
+++ b/shell/cc-window.c
@@ -88,8 +88,8 @@ enum
};
/* Auxiliary methods */
-static const gchar *
-get_icon_name_from_g_icon (GIcon *gicon)
+static gchar *
+get_symbolic_icon_name_from_g_icon (GIcon *gicon)
{
const gchar * const *names;
GtkIconTheme *icon_theme;
@@ -103,8 +103,11 @@ get_icon_name_from_g_icon (GIcon *gicon)
for (i = 0; names[i] != NULL; i++)
{
- if (gtk_icon_theme_has_icon (icon_theme, names[i]))
- return names[i];
+ g_autofree gchar *name = NULL;
+ name = g_strdup_printf ("%s-symbolic", names[i]);
+
+ if (gtk_icon_theme_has_icon (icon_theme, name))
+ return g_steal_pointer (&name);
}
return NULL;
@@ -248,9 +251,8 @@ setup_model (CcWindow *shell)
g_autofree gchar *name = NULL;
g_autofree gchar *description = NULL;
g_autofree gchar *id = NULL;
- g_autofree gchar *symbolic_icon = NULL;
+ g_autofree gchar *icon_name = NULL;
g_autofree GStrv keywords = NULL;
- const gchar *icon_name;
gtk_tree_model_get (model, &iter,
COL_CATEGORY, &category,
@@ -261,8 +263,7 @@ setup_model (CcWindow *shell)
COL_KEYWORDS, &keywords,
-1);
- icon_name = get_icon_name_from_g_icon (icon);
- symbolic_icon = g_strdup_printf ("%s-symbolic", icon_name);
+ icon_name = get_symbolic_icon_name_from_g_icon (icon);
cc_panel_list_add_panel (CC_PANEL_LIST (shell->panel_list),
category,
@@ -270,7 +271,7 @@ setup_model (CcWindow *shell)
name,
description,
keywords,
- symbolic_icon);
+ icon_name);
valid = gtk_tree_model_iter_next (model, &iter);
}
--
2.17.0

View File

@ -1,37 +0,0 @@
From 17ca12acd4e0a924a1acd5107b8569dd66d368af Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Sat, 21 Dec 2019 17:39:02 +0100
Subject: [PATCH 3/8] ce-page-details: add SAE support
(cherry picked from commit 97f6c8f53c15c7ccb9dd7a65ce1ac02ebc18a724)
---
panels/network/connection-editor/ce-page-details.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/panels/network/connection-editor/ce-page-details.c b/panels/network/connection-editor/ce-page-details.c
index c972c0e5b..f0c594dd4 100644
--- a/panels/network/connection-editor/ce-page-details.c
+++ b/panels/network/connection-editor/ce-page-details.c
@@ -60,8 +60,17 @@ get_ap_security_string (NMAccessPoint *ap)
g_string_append_printf (str, "%s, ", _("WPA"));
}
if (rsn_flags != NM_802_11_AP_SEC_NONE) {
- /* TRANSLATORS: this WPA WiFi security */
- g_string_append_printf (str, "%s, ", _("WPA2"));
+#if NM_CHECK_VERSION(1,20,6)
+ if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE) {
+ /* TRANSLATORS: this WPA3 WiFi security */
+ g_string_append_printf (str, "%s, ", _("WPA3"));
+ }
+ else
+#endif
+ {
+ /* TRANSLATORS: this WPA WiFi security */
+ g_string_append_printf (str, "%s, ", _("WPA2"));
+ }
}
if ((wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X) ||
(rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
--
2.34.1

View File

@ -1,654 +0,0 @@
From 8bd1e37f59f3b4ec617d6d0bccf7fd77a9d03ca5 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Sun, 24 Jan 2021 13:03:03 -0500
Subject: [PATCH 3/4] info: Update registration state in panel when it happens
on disk
The code was failing to listen for change notifications, so if the
panel was open while the system got registered, it wouldn't update.
This commit fixes that.
---
panels/info/cc-info-overview-panel.c | 33 ++++++++++++++++---
panels/info/cc-subscription-details-dialog.c | 17 ++++++++--
panels/info/cc-subscription-details-dialog.h | 3 +-
panels/info/cc-subscription-register-dialog.c | 17 ++++++++--
panels/info/cc-subscription-register-dialog.h | 3 +-
5 files changed, 63 insertions(+), 10 deletions(-)
diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c
index b2cbefb25..65246758e 100644
--- a/panels/info/cc-info-overview-panel.c
+++ b/panels/info/cc-info-overview-panel.c
@@ -60,60 +60,61 @@ typedef struct {
} GraphicsData;
typedef struct
{
GtkWidget *system_image;
GtkWidget *version_label;
GtkWidget *name_entry;
GtkWidget *memory_label;
GtkWidget *processor_label;
GtkWidget *os_name_label;
GtkWidget *os_type_label;
GtkWidget *disk_label;
GtkWidget *graphics_label;
GtkWidget *virt_type_label;
GtkWidget *subscription_stack;
GtkWidget *details_button;
GtkWidget *register_button;
GtkWidget *updates_separator;
GtkWidget *updates_button;
/* Virtualisation labels */
GtkWidget *label8;
GtkWidget *grid1;
GtkWidget *label18;
char *gnome_version;
char *gnome_distributor;
char *gnome_date;
GCancellable *cancellable;
+ GCancellable *subscription_cancellable;
/* Free space */
GList *primary_mounts;
guint64 total_bytes;
GraphicsData *graphics_data;
GDBusProxy *subscription_proxy;
} CcInfoOverviewPanelPrivate;
struct _CcInfoOverviewPanel
{
CcPanel parent_instance;
/*< private >*/
CcInfoOverviewPanelPrivate *priv;
};
static void get_primary_disc_info_start (CcInfoOverviewPanel *self);
typedef struct
{
char *major;
char *minor;
char *micro;
char *distributor;
char *date;
char **current;
} VersionData;
@@ -821,165 +822,188 @@ reload_subscription_status (CcInfoOverviewPanel *self)
switch (status)
{
case GSD_SUBMAN_SUBSCRIPTION_STATUS_UNKNOWN:
case GSD_SUBMAN_SUBSCRIPTION_STATUS_INVALID:
case GSD_SUBMAN_SUBSCRIPTION_STATUS_DISABLED:
case GSD_SUBMAN_SUBSCRIPTION_STATUS_PARTIALLY_VALID:
gtk_stack_set_visible_child_name (GTK_STACK (priv->subscription_stack), "not-registered");
gtk_widget_set_sensitive (priv->updates_button, FALSE);
break;
case GSD_SUBMAN_SUBSCRIPTION_STATUS_VALID:
gtk_stack_set_visible_child_name (GTK_STACK (priv->subscription_stack), "registered");
gtk_widget_set_sensitive (priv->updates_button, TRUE);
break;
default:
g_assert_not_reached ();
break;
}
}
static void
on_details_button_clicked (GtkWidget *widget,
CcInfoOverviewPanel *self)
{
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
CcSubscriptionDetailsDialog *dialog;
GtkWindow *toplevel;
- dialog = cc_subscription_details_dialog_new (priv->subscription_proxy);
+ dialog = cc_subscription_details_dialog_new (priv->subscription_proxy,
+ priv->subscription_cancellable);
toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)));
gtk_window_set_transient_for (GTK_WINDOW (dialog), toplevel);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (GTK_WIDGET (dialog));
-
- reload_subscription_status (self);
}
static void
on_register_button_clicked (GtkWidget *widget,
CcInfoOverviewPanel *self)
{
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
CcSubscriptionRegisterDialog *dialog;
GtkWindow *toplevel;
- dialog = cc_subscription_register_dialog_new (priv->subscription_proxy);
+ dialog = cc_subscription_register_dialog_new (priv->subscription_proxy,
+ priv->subscription_cancellable);
toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)));
gtk_window_set_transient_for (GTK_WINDOW (dialog), toplevel);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+static void
+on_subscription_status_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ GStrv invalidated_properties,
+ CcInfoOverviewPanel *self)
+{
+ CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
+
+ g_cancellable_cancel (priv->subscription_cancellable);
+ g_object_unref (priv->subscription_cancellable);
+
+ priv->subscription_cancellable = g_cancellable_new ();
reload_subscription_status (self);
}
static void
info_overview_panel_setup_subscriptions (CcInfoOverviewPanel *self)
{
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
g_autoptr(GError) error = NULL;
priv->subscription_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_NONE,
NULL,
"org.gnome.SettingsDaemon.Subscription",
"/org/gnome/SettingsDaemon/Subscription",
"org.gnome.SettingsDaemon.Subscription",
NULL, &error);
if (error != NULL)
{
g_debug ("Unable to create a proxy for org.gnome.SettingsDaemon.Subscription: %s",
error->message);
reload_subscription_status (self);
return;
}
+ g_signal_connect (priv->subscription_proxy, "g-properties-changed",
+ G_CALLBACK (on_subscription_status_changed), self);
+
g_signal_connect (priv->details_button, "clicked", G_CALLBACK (on_details_button_clicked), self);
g_signal_connect (priv->register_button, "clicked", G_CALLBACK (on_register_button_clicked), self);
reload_subscription_status (self);
}
static gboolean
does_gnome_software_exist (void)
{
return g_file_test (BINDIR "/gnome-software", G_FILE_TEST_EXISTS);
}
static gboolean
does_gpk_update_viewer_exist (void)
{
return g_file_test (BINDIR "/gpk-update-viewer", G_FILE_TEST_EXISTS);
}
static void
on_updates_button_clicked (GtkWidget *widget,
CcInfoOverviewPanel *self)
{
g_autoptr(GError) error = NULL;
gboolean ret;
g_auto(GStrv) argv = NULL;
argv = g_new0 (gchar *, 3);
if (does_gnome_software_exist ())
{
argv[0] = g_build_filename (BINDIR, "gnome-software", NULL);
argv[1] = g_strdup_printf ("--mode=updates");
}
else
{
argv[0] = g_build_filename (BINDIR, "gpk-update-viewer", NULL);
}
ret = g_spawn_async (NULL, argv, NULL, 0, NULL, NULL, NULL, &error);
if (!ret)
g_warning ("Failed to spawn %s: %s", argv[0], error->message);
}
static void
cc_info_overview_panel_dispose (GObject *object)
{
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (CC_INFO_OVERVIEW_PANEL (object));
g_clear_pointer (&priv->graphics_data, graphics_data_free);
G_OBJECT_CLASS (cc_info_overview_panel_parent_class)->dispose (object);
}
static void
cc_info_overview_panel_finalize (GObject *object)
{
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (CC_INFO_OVERVIEW_PANEL (object));
+ if (priv->subscription_cancellable)
+ {
+ g_cancellable_cancel (priv->subscription_cancellable);
+ g_clear_object (&priv->subscription_cancellable);
+ }
+
if (priv->cancellable)
{
g_cancellable_cancel (priv->cancellable);
g_clear_object (&priv->cancellable);
}
if (priv->primary_mounts)
g_list_free_full (priv->primary_mounts, (GDestroyNotify) g_unix_mount_free);
g_free (priv->gnome_version);
g_free (priv->gnome_date);
g_free (priv->gnome_distributor);
g_clear_object (&priv->subscription_proxy);
G_OBJECT_CLASS (cc_info_overview_panel_parent_class)->finalize (object);
}
static void
cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = cc_info_overview_panel_finalize;
object_class->dispose = cc_info_overview_panel_dispose;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/info/info-overview.ui");
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, system_image);
@@ -987,55 +1011,56 @@ cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, name_entry);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, memory_label);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, processor_label);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, os_name_label);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, os_type_label);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, disk_label);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, graphics_label);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, virt_type_label);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, subscription_stack);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, details_button);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, register_button);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, updates_separator);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, updates_button);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, label8);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, grid1);
gtk_widget_class_bind_template_child_private (widget_class, CcInfoOverviewPanel, label18);
g_type_ensure (CC_TYPE_HOSTNAME_ENTRY);
}
static void
cc_info_overview_panel_init (CcInfoOverviewPanel *self)
{
CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
gtk_widget_init_template (GTK_WIDGET (self));
g_resources_register (cc_info_get_resource ());
priv->cancellable = g_cancellable_new ();
+ priv->subscription_cancellable = g_cancellable_new ();
priv->graphics_data = get_graphics_data ();
if (does_gnome_software_exist () || does_gpk_update_viewer_exist ())
g_signal_connect (priv->updates_button, "clicked", G_CALLBACK (on_updates_button_clicked), self);
else
gtk_widget_hide (priv->updates_button);
info_overview_panel_setup_overview (self);
info_overview_panel_setup_virt (self);
info_overview_panel_setup_subscriptions (self);
/* show separator when both items are visible */
if (gtk_widget_get_visible (priv->subscription_stack) && gtk_widget_get_visible (priv->updates_button))
gtk_widget_show (priv->updates_separator);
else
gtk_widget_hide (priv->updates_separator);
}
GtkWidget *
cc_info_overview_panel_new (void)
{
return g_object_new (CC_TYPE_INFO_OVERVIEW_PANEL,
NULL);
}
diff --git a/panels/info/cc-subscription-details-dialog.c b/panels/info/cc-subscription-details-dialog.c
index 1931ced81..3d77e6c48 100644
--- a/panels/info/cc-subscription-details-dialog.c
+++ b/panels/info/cc-subscription-details-dialog.c
@@ -311,97 +311,110 @@ header_unregister_button_clicked_cb (CcSubscriptionDetailsDialog *self)
self);
}
static void
back_button_clicked_cb (CcSubscriptionDetailsDialog *self)
{
gtk_spinner_stop (self->spinner);
self->state = DIALOG_STATE_SHOW_DETAILS;
dialog_reload (self);
}
static void
unregister_button_clicked_cb (CcSubscriptionDetailsDialog *self)
{
self->state = DIALOG_STATE_UNREGISTER;
dialog_reload (self);
}
static void
dismiss_notification (CcSubscriptionDetailsDialog *self)
{
gtk_revealer_set_reveal_child (self->notification_revealer, FALSE);
}
static void
cc_subscription_details_dialog_init (CcSubscriptionDetailsDialog *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
- self->cancellable = g_cancellable_new ();
self->products = g_ptr_array_new_with_free_func ((GDestroyNotify) product_data_free);
self->state = DIALOG_STATE_SHOW_DETAILS;
}
static void
cc_subscription_details_dialog_dispose (GObject *obj)
{
CcSubscriptionDetailsDialog *self = (CcSubscriptionDetailsDialog *) obj;
g_cancellable_cancel (self->cancellable);
g_clear_object (&self->cancellable);
g_clear_object (&self->subscription_proxy);
G_OBJECT_CLASS (cc_subscription_details_dialog_parent_class)->dispose (obj);
}
static void
cc_subscription_details_dialog_finalize (GObject *obj)
{
CcSubscriptionDetailsDialog *self = (CcSubscriptionDetailsDialog *) obj;
g_clear_pointer (&self->products, g_ptr_array_unref);
G_OBJECT_CLASS (cc_subscription_details_dialog_parent_class)->finalize (obj);
}
static void
cc_subscription_details_dialog_class_init (CcSubscriptionDetailsDialogClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->dispose = cc_subscription_details_dialog_dispose;
object_class->finalize = cc_subscription_details_dialog_finalize;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/info/cc-subscription-details-dialog.ui");
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, back_button);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, spinner);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, header_unregister_button);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, notification_revealer);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, error_label);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, stack);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, products_box1);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, products_box2);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionDetailsDialog, unregister_button);
gtk_widget_class_bind_template_callback (widget_class, back_button_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, header_unregister_button_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, unregister_button_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, dismiss_notification);
}
+static void
+on_dialog_cancelled (CcSubscriptionDetailsDialog *self)
+{
+ gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_CLOSE);
+}
+
CcSubscriptionDetailsDialog *
-cc_subscription_details_dialog_new (GDBusProxy *subscription_proxy)
+cc_subscription_details_dialog_new (GDBusProxy *subscription_proxy,
+ GCancellable *cancellable)
{
CcSubscriptionDetailsDialog *self;
self = g_object_new (CC_TYPE_SUBSCRIPTION_DETAILS_DIALOG, "use-header-bar", TRUE, NULL);
self->subscription_proxy = g_object_ref (subscription_proxy);
+ self->cancellable = g_object_ref (cancellable);
+
+ g_signal_connect_object (G_OBJECT (self->cancellable),
+ "cancelled",
+ G_CALLBACK (on_dialog_cancelled),
+ self,
+ G_CONNECT_SWAPPED);
load_installed_products (self);
dialog_reload (self);
return self;
}
diff --git a/panels/info/cc-subscription-details-dialog.h b/panels/info/cc-subscription-details-dialog.h
index a61a22838..f14dd157b 100644
--- a/panels/info/cc-subscription-details-dialog.h
+++ b/panels/info/cc-subscription-details-dialog.h
@@ -1,32 +1,33 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
*
* Copyright 2019 Red Hat, Inc,
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
* Written by: Kalev Lember <klember@redhat.com>
*/
#pragma once
#include <gtk/gtk.h>
G_BEGIN_DECLS
#define CC_TYPE_SUBSCRIPTION_DETAILS_DIALOG (cc_subscription_details_dialog_get_type ())
G_DECLARE_FINAL_TYPE (CcSubscriptionDetailsDialog, cc_subscription_details_dialog, CC, SUBSCRIPTION_DETAILS_DIALOG, GtkDialog)
-CcSubscriptionDetailsDialog *cc_subscription_details_dialog_new (GDBusProxy *subscription_proxy);
+CcSubscriptionDetailsDialog *cc_subscription_details_dialog_new (GDBusProxy *subscription_proxy,
+ GCancellable *cancellable);
G_END_DECLS
diff --git a/panels/info/cc-subscription-register-dialog.c b/panels/info/cc-subscription-register-dialog.c
index d7a17cc99..e8c2f581c 100644
--- a/panels/info/cc-subscription-register-dialog.c
+++ b/panels/info/cc-subscription-register-dialog.c
@@ -299,61 +299,60 @@ subscription_register_with_username (CcSubscriptionRegisterDialog *self)
self->cancellable,
registration_done_cb,
self);
}
static void
register_button_clicked_cb (CcSubscriptionRegisterDialog *self)
{
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->register_with_activation_keys_radio)))
subscription_register_with_activation_keys (self);
else
subscription_register_with_username (self);
gtk_spinner_start (self->spinner);
self->state = DIALOG_STATE_REGISTERING;
dialog_reload (self);
}
static void
dismiss_notification (CcSubscriptionRegisterDialog *self)
{
gtk_revealer_set_reveal_child (self->notification_revealer, FALSE);
}
static void
cc_subscription_register_dialog_init (CcSubscriptionRegisterDialog *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
- self->cancellable = g_cancellable_new ();
self->state = DIALOG_STATE_REGISTER;
gtk_entry_set_text (self->url_entry, SERVER_URL);
gtk_widget_grab_focus (GTK_WIDGET (self->login_entry));
dialog_validate (self);
dialog_reload (self);
}
static void
cc_subscription_register_dialog_dispose (GObject *obj)
{
CcSubscriptionRegisterDialog *self = (CcSubscriptionRegisterDialog *) obj;
g_cancellable_cancel (self->cancellable);
g_clear_object (&self->cancellable);
g_clear_object (&self->subscription_proxy);
G_OBJECT_CLASS (cc_subscription_register_dialog_parent_class)->dispose (obj);
}
static void
cc_subscription_register_dialog_finalize (GObject *obj)
{
G_OBJECT_CLASS (cc_subscription_register_dialog_parent_class)->finalize (obj);
}
static void
cc_subscription_register_dialog_class_init (CcSubscriptionRegisterDialogClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -364,40 +363,54 @@ cc_subscription_register_dialog_class_init (CcSubscriptionRegisterDialogClass *k
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/info/cc-subscription-register-dialog.ui");
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, spinner);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, register_button);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, notification_revealer);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, error_label);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, default_url_radio);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, custom_url_radio);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, register_radio);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, register_with_activation_keys_radio);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, stack);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, register_grid);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, register_with_activation_keys_grid);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, url_label);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, url_entry);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, login_entry);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, password_entry);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, activation_keys_entry);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, organization_label);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, organization_entry);
gtk_widget_class_bind_template_child (widget_class, CcSubscriptionRegisterDialog, organization_entry_with_activation_keys);
gtk_widget_class_bind_template_callback (widget_class, dialog_validate);
gtk_widget_class_bind_template_callback (widget_class, register_button_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, dismiss_notification);
gtk_widget_class_bind_template_callback (widget_class, custom_url_radio_toggled_cb);
gtk_widget_class_bind_template_callback (widget_class, register_with_activation_keys_radio_toggled_cb);
}
+static void
+on_dialog_cancelled (CcSubscriptionRegisterDialog *self)
+{
+ gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_CLOSE);
+}
+
CcSubscriptionRegisterDialog *
-cc_subscription_register_dialog_new (GDBusProxy *subscription_proxy)
+cc_subscription_register_dialog_new (GDBusProxy *subscription_proxy,
+ GCancellable *cancellable)
{
CcSubscriptionRegisterDialog *self;
self = g_object_new (CC_TYPE_SUBSCRIPTION_REGISTER_DIALOG, "use-header-bar", TRUE, NULL);
self->subscription_proxy = g_object_ref (subscription_proxy);
+ self->cancellable = g_object_ref (cancellable);
+
+ g_signal_connect_object (G_OBJECT (self->cancellable),
+ "cancelled",
+ G_CALLBACK (on_dialog_cancelled),
+ self,
+ G_CONNECT_SWAPPED);
return self;
}
diff --git a/panels/info/cc-subscription-register-dialog.h b/panels/info/cc-subscription-register-dialog.h
index c5918df9f..31c254084 100644
--- a/panels/info/cc-subscription-register-dialog.h
+++ b/panels/info/cc-subscription-register-dialog.h
@@ -1,32 +1,33 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
*
* Copyright 2019 Red Hat, Inc,
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
* Written by: Kalev Lember <klember@redhat.com>
*/
#pragma once
#include <gtk/gtk.h>
G_BEGIN_DECLS
#define CC_TYPE_SUBSCRIPTION_REGISTER_DIALOG (cc_subscription_register_dialog_get_type ())
G_DECLARE_FINAL_TYPE (CcSubscriptionRegisterDialog, cc_subscription_register_dialog, CC, SUBSCRIPTION_REGISTER_DIALOG, GtkDialog)
-CcSubscriptionRegisterDialog *cc_subscription_register_dialog_new (GDBusProxy *subscription_proxy);
+CcSubscriptionRegisterDialog *cc_subscription_register_dialog_new (GDBusProxy *subscription_proxy,
+ GCancellable *cancellable);
G_END_DECLS
--
2.28.0

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +0,0 @@
From 0904ae538704409c19c08c88957ff4283d4a152d Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Tue, 2 Feb 2021 17:27:05 +0100
Subject: [PATCH 4/8] net-device-wifi: Decode SAE AP security
Decode this information for the wireless row. Note that we don't really
need this, as it would incorrectly select WPA2 which results in the same
icon.
Based on upstream commit da0c45f2ab2b7b78695cfff9d6b7a2b045340ac7
---
panels/network/net-device-wifi.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 33758e499..da1e4837a 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -46,7 +46,8 @@ typedef enum {
NM_AP_SEC_NONE,
NM_AP_SEC_WEP,
NM_AP_SEC_WPA,
- NM_AP_SEC_WPA2
+ NM_AP_SEC_WPA2,
+ NM_AP_SEC_SAE
} NMAccessPointSecurity;
static void nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi);
@@ -146,6 +147,10 @@ get_access_point_security (NMAccessPoint *ap)
wpa_flags != NM_802_11_AP_SEC_NONE &&
rsn_flags != NM_802_11_AP_SEC_NONE)
type = NM_AP_SEC_WPA;
+#if NM_CHECK_VERSION(1,20,6)
+ else if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)
+ type = NM_AP_SEC_SAE;
+#endif
else
type = NM_AP_SEC_WPA2;
--
2.34.1

View File

@ -1,51 +0,0 @@
From 2d1da22e17f703e27ff1b3177e35a54aa0c3aecc Mon Sep 17 00:00:00 2001
From: Christian Kellner <christian@kellner.me>
Date: Fri, 13 Apr 2018 16:03:21 +0200
Subject: [PATCH 4/4] thunderbolt: move to the 'Devices' page
The 'Devices' page is a fitting place for the thunderbolt, being
an IO technology. It is expected that people that need to go to
that page will be sent there via a gnome-shell notification, so
there is no need for it to be on the main page.
Ok'ed by the design team (jimmac).
---
panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in | 2 +-
shell/cc-panel-list.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in b/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in
index db2477e45a74..abd317341bfd 100644
--- a/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in
+++ b/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in
@@ -7,7 +7,7 @@ Terminal=false
Type=Application
NoDisplay=true
StartupNotify=true
-Categories=GNOME;GTK;Settings;X-GNOME-Settings-Panel;HardwareSettings;X-GNOME-DevicesSettings;X-GNOME-ConnectivitySettings;
+Categories=GNOME;GTK;Settings;X-GNOME-Settings-Panel;HardwareSettings;X-GNOME-DevicesSettings;
OnlyShowIn=GNOME;Unity;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-control-center
diff --git a/shell/cc-panel-list.c b/shell/cc-panel-list.c
index 99d8a91144ad..f5b83509d646 100644
--- a/shell/cc-panel-list.c
+++ b/shell/cc-panel-list.c
@@ -276,7 +276,6 @@ static const gchar * const panel_order[] = {
"wifi",
"mobile-broadband",
"bluetooth",
- "thunderbolt",
"background",
"notifications",
"search",
@@ -295,6 +294,7 @@ static const gchar * const panel_order[] = {
"mouse",
"printers",
"removable-media",
+ "thunderbolt",
"wacom",
"color",
--
2.17.0

View File

@ -1,477 +0,0 @@
From 1289e8ea1dbeb91012c262fcb6f014ec73d4c690 Mon Sep 17 00:00:00 2001
From: Jonathan Kang <jonathankang@gnome.org>
Date: Wed, 9 Sep 2020 14:58:06 +0800
Subject: [PATCH 5/8] network: complete SAE support
Added WirelessSecuritySAE class to fully implement SAE support.
Heavily modifid and based on the 3.28.2 version of the WPA PSK widget.
(cherry picked from commit 918838f567740172591ff1f2c32d8227c348be72)
---
.../connection-editor/ce-page-security.c | 8 +-
panels/network/wireless-security/meson.build | 3 +
.../wireless-security.gresource.xml | 1 +
.../wireless-security/wireless-security.h | 1 +
panels/network/wireless-security/ws-sae.c | 214 ++++++++++++++++++
panels/network/wireless-security/ws-sae.h | 30 +++
panels/network/wireless-security/ws-sae.ui | 117 ++++++++++
7 files changed, 370 insertions(+), 4 deletions(-)
create mode 100644 panels/network/wireless-security/ws-sae.c
create mode 100644 panels/network/wireless-security/ws-sae.h
create mode 100644 panels/network/wireless-security/ws-sae.ui
diff --git a/panels/network/connection-editor/ce-page-security.c b/panels/network/connection-editor/ce-page-security.c
index 5104d7442..37b1e1286 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -343,11 +343,11 @@ finish_setup (CEPageSecurity *page)
#if NM_CHECK_VERSION(1,20,6)
if (nm_utils_security_valid (NMU_SEC_SAE, dev_caps, FALSE, is_adhoc, 0, 0, 0)) {
- WirelessSecurityWPAPSK *ws_wpa_psk;
+ WirelessSecuritySAE *ws_sae;
- ws_wpa_psk = ws_wpa_psk_new (connection, FALSE);
- if (ws_wpa_psk) {
- add_security_item (page, WIRELESS_SECURITY (ws_wpa_psk), sec_model,
+ ws_sae = ws_sae_new (connection, FALSE);
+ if (ws_sae) {
+ add_security_item (page, WIRELESS_SECURITY (ws_sae), sec_model,
&iter, _("WPA3 Personal"), FALSE);
if ((active < 0) && ((default_type == NMU_SEC_SAE)))
active = item;
diff --git a/panels/network/wireless-security/meson.build b/panels/network/wireless-security/meson.build
index 47def7a63..6036f56af 100644
--- a/panels/network/wireless-security/meson.build
+++ b/panels/network/wireless-security/meson.build
@@ -14,6 +14,7 @@ nm_applet_headers = [
'wireless-security.h',
'ws-leap.h',
'ws-dynamic-wep.h',
+ 'ws-sae.h',
'ws-wep-key.h',
'ws-wpa-eap.h',
'ws-wpa-psk.h'
@@ -31,6 +32,7 @@ nm_applet_sources = [
'wireless-security.c',
'ws-leap.c',
'ws-dynamic-wep.c',
+ 'ws-sae.c',
'ws-wep-key.c',
'ws-wpa-eap.c',
'ws-wpa-psk.c'
@@ -47,6 +49,7 @@ nm_resource_data = [
'eap-method-ttls.ui',
'ws-dynamic-wep.ui',
'ws-leap.ui',
+ 'ws-sae.ui',
'ws-wep-key.ui',
'ws-wpa-eap.ui',
'ws-wpa-psk.ui'
diff --git a/panels/network/wireless-security/wireless-security.gresource.xml b/panels/network/wireless-security/wireless-security.gresource.xml
index a483d06a0..fa1a965ad 100644
--- a/panels/network/wireless-security/wireless-security.gresource.xml
+++ b/panels/network/wireless-security/wireless-security.gresource.xml
@@ -9,6 +9,7 @@
<file preprocess="xml-stripblanks">eap-method-ttls.ui</file>
<file preprocess="xml-stripblanks">ws-dynamic-wep.ui</file>
<file preprocess="xml-stripblanks">ws-leap.ui</file>
+ <file preprocess="xml-stripblanks">ws-sae.ui</file>
<file preprocess="xml-stripblanks">ws-wep-key.ui</file>
<file preprocess="xml-stripblanks">ws-wpa-eap.ui</file>
<file preprocess="xml-stripblanks">ws-wpa-psk.ui</file>
diff --git a/panels/network/wireless-security/wireless-security.h b/panels/network/wireless-security/wireless-security.h
index 975e750f6..c5508ad1b 100644
--- a/panels/network/wireless-security/wireless-security.h
+++ b/panels/network/wireless-security/wireless-security.h
@@ -102,6 +102,7 @@ GType wireless_security_get_type (void);
#include "ws-wep-key.h"
#include "ws-wpa-psk.h"
#include "ws-leap.h"
+#include "ws-sae.h"
#include "ws-wpa-eap.h"
#include "ws-dynamic-wep.h"
diff --git a/panels/network/wireless-security/ws-sae.c b/panels/network/wireless-security/ws-sae.c
new file mode 100644
index 000000000..96138d522
--- /dev/null
+++ b/panels/network/wireless-security/ws-sae.c
@@ -0,0 +1,214 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager Applet -- allow user control over networking
+ *
+ * Dan Williams <dcbw@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2007 - 2014 Red Hat, Inc.
+ */
+
+#include "nm-default.h"
+
+#include <ctype.h>
+#include <string.h>
+
+#include "wireless-security.h"
+#include "helpers.h"
+#include "nma-ui-utils.h"
+#include "utils.h"
+
+#define WPA_PMK_LEN 32
+
+struct _WirelessSecuritySAE {
+ WirelessSecurity parent;
+
+ gboolean editing_connection;
+ const char *password_flags_name;
+};
+
+static void
+show_toggled_cb (GtkCheckButton *button, WirelessSecurity *sec)
+{
+ GtkWidget *widget;
+ gboolean visible;
+
+ widget = GTK_WIDGET (gtk_builder_get_object (sec->builder, "sae_entry"));
+ g_assert (widget);
+
+ visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+ gtk_entry_set_visibility (GTK_ENTRY (widget), visible);
+}
+
+static gboolean
+validate (WirelessSecurity *parent, GError **error)
+{
+ GtkWidget *entry;
+ const char *key;
+
+ entry = GTK_WIDGET (gtk_builder_get_object (parent->builder, "sae_entry"));
+ g_assert (entry);
+
+ key = gtk_entry_get_text (GTK_ENTRY (entry));
+ if (key == NULL || key[0] == '\0') {
+ widget_set_error (entry);
+ g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("Wi-Fi password is missing."));
+ return FALSE;
+ }
+ widget_unset_error (entry);
+
+ /* passphrase can be between 8 and 63 characters inclusive */
+
+ return TRUE;
+}
+
+static void
+add_to_size_group (WirelessSecurity *parent, GtkSizeGroup *group)
+{
+ GtkWidget *widget;
+
+ widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "sae_type_label"));
+ gtk_size_group_add_widget (group, widget);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "sae_label"));
+ gtk_size_group_add_widget (group, widget);
+}
+
+static void
+fill_connection (WirelessSecurity *parent, NMConnection *connection)
+{
+ WirelessSecuritySAE *sae = (WirelessSecuritySAE *) parent;
+ GtkWidget *widget, *passwd_entry;
+ const char *key;
+ NMSettingWireless *s_wireless;
+ NMSettingWirelessSecurity *s_wireless_sec;
+ NMSettingSecretFlags secret_flags;
+ const char *mode;
+ gboolean is_adhoc = FALSE;
+
+ s_wireless = nm_connection_get_setting_wireless (connection);
+ g_assert (s_wireless);
+
+ mode = nm_setting_wireless_get_mode (s_wireless);
+ if (mode && !strcmp (mode, "adhoc"))
+ is_adhoc = TRUE;
+
+ /* Blow away the old security setting by adding a clear one */
+ s_wireless_sec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
+ nm_connection_add_setting (connection, (NMSetting *) s_wireless_sec);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "sae_entry"));
+ passwd_entry = widget;
+ key = gtk_entry_get_text (GTK_ENTRY (widget));
+ g_object_set (s_wireless_sec, NM_SETTING_WIRELESS_SECURITY_PSK, key, NULL);
+
+ /* Save PSK_FLAGS to the connection */
+ secret_flags = nma_utils_menu_to_secret_flags (passwd_entry);
+ nm_setting_set_secret_flags (NM_SETTING (s_wireless_sec), NM_SETTING_WIRELESS_SECURITY_PSK,
+ secret_flags, NULL);
+
+ /* Update secret flags and popup when editing the connection */
+ if (sae->editing_connection)
+ nma_utils_update_password_storage (passwd_entry, secret_flags,
+ NM_SETTING (s_wireless_sec), sae->password_flags_name);
+
+ wireless_security_clear_ciphers (connection);
+ if (is_adhoc) {
+ /* Ad-Hoc settings as specified by the supplicant */
+ g_object_set (s_wireless_sec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae", NULL);
+ nm_setting_wireless_security_add_proto (s_wireless_sec, "rsn");
+ nm_setting_wireless_security_add_pairwise (s_wireless_sec, "ccmp");
+ nm_setting_wireless_security_add_group (s_wireless_sec, "ccmp");
+ } else {
+ g_object_set (s_wireless_sec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae", NULL);
+
+ /* Just leave ciphers and protocol empty, the supplicant will
+ * figure that out magically based on the AP IEs and card capabilities.
+ */
+ }
+}
+
+static void
+update_secrets (WirelessSecurity *parent, NMConnection *connection)
+{
+ helper_fill_secret_entry (connection,
+ parent->builder,
+ "sae_entry",
+ NM_TYPE_SETTING_WIRELESS_SECURITY,
+ (HelperSecretFunc) nm_setting_wireless_security_get_psk);
+}
+
+WirelessSecuritySAE *
+ws_sae_new (NMConnection *connection, gboolean secrets_only)
+{
+ WirelessSecurity *parent;
+ WirelessSecuritySAE *sec;
+ NMSetting *setting = NULL;
+ GtkWidget *widget;
+
+ parent = wireless_security_init (sizeof (WirelessSecuritySAE),
+ validate,
+ add_to_size_group,
+ fill_connection,
+ update_secrets,
+ NULL,
+ "/org/gnome/ControlCenter/network/ws-sae.ui",
+ "sae_notebook",
+ "sae_entry");
+ if (!parent)
+ return NULL;
+
+ parent->adhoc_compatible = FALSE;
+ sec = (WirelessSecuritySAE *) parent;
+ sec->editing_connection = secrets_only ? FALSE : TRUE;
+ sec->password_flags_name = NM_SETTING_WIRELESS_SECURITY_PSK;
+
+ widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "sae_entry"));
+ g_assert (widget);
+ g_signal_connect (G_OBJECT (widget), "changed",
+ (GCallback) wireless_security_changed_cb,
+ sec);
+ gtk_entry_set_width_chars (GTK_ENTRY (widget), 28);
+
+ /* Create password-storage popup menu for password entry under entry's secondary icon */
+ if (connection)
+ setting = (NMSetting *) nm_connection_get_setting_wireless_security (connection);
+ nma_utils_setup_password_storage (widget, 0, setting, sec->password_flags_name,
+ FALSE, secrets_only);
+
+ /* Fill secrets, if any */
+ if (connection)
+ update_secrets (WIRELESS_SECURITY (sec), connection);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "show_checkbutton_wpa"));
+ g_assert (widget);
+ g_signal_connect (G_OBJECT (widget), "toggled",
+ (GCallback) show_toggled_cb,
+ sec);
+
+ /* Hide WPA/RSN for now since this can be autodetected by NM and the
+ * supplicant when connecting to the AP.
+ */
+
+ widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "sae_type_combo"));
+ g_assert (widget);
+ gtk_widget_hide (widget);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "sae_type_label"));
+ g_assert (widget);
+ gtk_widget_hide (widget);
+
+ return sec;
+}
diff --git a/panels/network/wireless-security/ws-sae.h b/panels/network/wireless-security/ws-sae.h
new file mode 100644
index 000000000..9a1262cd0
--- /dev/null
+++ b/panels/network/wireless-security/ws-sae.h
@@ -0,0 +1,30 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager Applet -- allow user control over networking
+ *
+ * Dan Williams <dcbw@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2007 - 2014 Red Hat, Inc.
+ */
+
+#ifndef WS_SAE_H
+#define WS_SAE_H
+
+typedef struct _WirelessSecuritySAE WirelessSecuritySAE;
+
+WirelessSecuritySAE * ws_sae_new (NMConnection *connection, gboolean secrets_only);
+
+#endif /* WS_SAE_H */
diff --git a/panels/network/wireless-security/ws-sae.ui b/panels/network/wireless-security/ws-sae.ui
new file mode 100644
index 000000000..d523f16c8
--- /dev/null
+++ b/panels/network/wireless-security/ws-sae.ui
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="3.4"/>
+ <object class="GtkNotebook" id="sae_notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <child>
+ <object class="GtkTable" id="sae_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">6</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="sae_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Password</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">sae_entry</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="sae_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="max_length">64</property>
+ <property name="visibility">False</property>
+ <property name="activates_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="sae_type_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Type</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">sae_type_combo</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label32">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="show_checkbutton_wpa">
+ <property name="label" translatable="yes">Sho_w password</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="sae_type_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="GtkLabel2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+</interface>
--
2.34.1

View File

@ -1,114 +0,0 @@
From 73fb050f06649e717aea5654394fe45cd921d4df Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Fri, 17 Jul 2020 03:41:44 +0000
Subject: [PATCH 6/8] Add support for Enhanced Open WiFi security
(cherry picked from commit 1d0b664f7c5e38e9d8933956c1cc4661244edb7d)
---
.../connection-editor/ce-page-details.c | 6 +++++
.../connection-editor/ce-page-security.c | 22 +++++++++++++++++++
panels/network/net-device-wifi.c | 10 +++++++--
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/panels/network/connection-editor/ce-page-details.c b/panels/network/connection-editor/ce-page-details.c
index f0c594dd4..8bdb932a4 100644
--- a/panels/network/connection-editor/ce-page-details.c
+++ b/panels/network/connection-editor/ce-page-details.c
@@ -65,6 +65,12 @@ get_ap_security_string (NMAccessPoint *ap)
/* TRANSLATORS: this WPA3 WiFi security */
g_string_append_printf (str, "%s, ", _("WPA3"));
}
+#if NM_CHECK_VERSION(1,24,0)
+ else if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_OWE) {
+ /* TRANSLATORS: this Enhanced Open WiFi security */
+ g_string_append_printf (str, "%s, ", _("Enhanced Open"));
+ }
+#endif
else
#endif
{
diff --git a/panels/network/connection-editor/ce-page-security.c b/panels/network/connection-editor/ce-page-security.c
index 37b1e1286..52efb9da1 100644
--- a/panels/network/connection-editor/ce-page-security.c
+++ b/panels/network/connection-editor/ce-page-security.c
@@ -68,6 +68,13 @@ get_default_type_for_security (NMSettingWirelessSecurity *sec)
return NMU_SEC_LEAP;
return NMU_SEC_DYNAMIC_WEP;
}
+
+#if NM_CHECK_VERSION(1,24,0)
+ if (!strcmp (key_mgmt, "owe")) {
+ return NMU_SEC_OWE;
+ }
+#endif
+
#if NM_CHECK_VERSION(1,20,6)
if (!strcmp (key_mgmt, "sae")) {
return NMU_SEC_SAE;
@@ -255,6 +262,18 @@ finish_setup (CEPageSecurity *page)
item++;
}
+#if NM_CHECK_VERSION(1,24,0)
+ if (nm_utils_security_valid (NMU_SEC_OWE, dev_caps, FALSE, is_adhoc, 0, 0, 0)) {
+ gtk_list_store_insert_with_values (sec_model, &iter, -1,
+ S_NAME_COLUMN, _("Enhanced Open"),
+ S_ADHOC_VALID_COLUMN, FALSE,
+ -1);
+ if (active < 0 && default_type == NMU_SEC_OWE)
+ active = item;
+ item++;
+ }
+#endif
+
if (nm_utils_security_valid (NMU_SEC_STATIC_WEP, dev_caps, FALSE, is_adhoc, 0, 0, 0)) {
WirelessSecurityWEPKey *ws_wep;
NMWepKeyType wep_type = NM_WEP_KEY_TYPE_KEY;
@@ -473,6 +492,9 @@ ce_page_security_new (NMConnection *connection,
default_type == NMU_SEC_WPA_PSK ||
#if NM_CHECK_VERSION(1,20,6)
default_type == NMU_SEC_SAE ||
+#endif
+#if NM_CHECK_VERSION(1,24,0)
+ default_type == NMU_SEC_OWE ||
#endif
default_type == NMU_SEC_WPA2_PSK) {
CE_PAGE (page)->security_setting = NM_SETTING_WIRELESS_SECURITY_SETTING_NAME;
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index da1e4837a..fc2fba63f 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -47,7 +47,8 @@ typedef enum {
NM_AP_SEC_WEP,
NM_AP_SEC_WPA,
NM_AP_SEC_WPA2,
- NM_AP_SEC_SAE
+ NM_AP_SEC_SAE,
+ NM_AP_SEC_OWE,
} NMAccessPointSecurity;
static void nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi);
@@ -150,6 +151,10 @@ get_access_point_security (NMAccessPoint *ap)
#if NM_CHECK_VERSION(1,20,6)
else if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)
type = NM_AP_SEC_SAE;
+#endif
+#if NM_CHECK_VERSION(1,20,6)
+ else if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_OWE)
+ type = NM_AP_SEC_OWE;
#endif
else
type = NM_AP_SEC_WPA2;
@@ -1930,7 +1935,8 @@ make_row (GtkSizeGroup *rows,
if (in_range) {
if (security != NM_AP_SEC_UNKNOWN &&
- security != NM_AP_SEC_NONE) {
+ security != NM_AP_SEC_NONE &&
+ security != NM_AP_SEC_OWE) {
widget = gtk_image_new_from_icon_name ("network-wireless-encrypted-symbolic", GTK_ICON_SIZE_MENU);
} else {
widget = gtk_label_new ("");
--
2.34.1

View File

@ -1,216 +0,0 @@
From e6cebd2fc9b0d18a92f2935e23551b62a7031236 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Tue, 4 Jan 2022 11:29:25 +0100
Subject: [PATCH 7/8] network: Fix connection selection and SSID display for
OWE
When dealing with OWE APs, we need to use the SSID from the connection
rather than the AP. In this case, we want to group the current AP with
other APs that have the connection SSID.
As such, first change the unqiue AP selection to take the active AP and
active connection into account (preferring the active AP for correct
signal strength display).
Then, make sure we have the active connection in the list everywhere and
skip the SSID check when assiging the AP to the connection for the
active AP/connection.
This way we make sure to have the active connection together with the
active AP in the list. The code will prefer to display the connections
SSID rather than the APS, so we get the right one for OWE.
This mimicks the behaviour of newer g-c-c versions without pulling in
the full rewrite of the connection list widget.
---
panels/network/net-device-wifi.c | 86 ++++++++++++++++++++++++++------
1 file changed, 72 insertions(+), 14 deletions(-)
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index fc2fba63f..af489afcc 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -163,25 +163,50 @@ get_access_point_security (NMAccessPoint *ap)
}
static GPtrArray *
-panel_get_strongest_unique_aps (const GPtrArray *aps)
+panel_get_strongest_unique_aps (NMDevice *nm_device)
{
- GBytes *ssid, *ssid_tmp;
+ const GPtrArray *aps;
GPtrArray *aps_unique = NULL;
gboolean add_ap;
guint i;
guint j;
NMAccessPoint *ap;
NMAccessPoint *ap_tmp;
+ NMAccessPoint *active_ap;
+ NMActiveConnection *ac;
+ NMConnection *ac_con = NULL;
+ GBytes *ac_ssid = NULL;
+
+ aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (nm_device));
+ active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (nm_device));
+
+ /* Use the connection SSID for the active AP as it is different with OWE. */
+ ac = nm_device_get_active_connection (nm_device);
+ if (ac)
+ ac_con = NM_CONNECTION (nm_active_connection_get_connection (ac));
+ if (ac_con) {
+ NMSetting *setting;
+
+ setting = nm_connection_get_setting_by_name (ac_con, NM_SETTING_WIRELESS_SETTING_NAME);
+ if (setting)
+ ac_ssid = nm_setting_wireless_get_ssid (NM_SETTING_WIRELESS (setting));
+ }
/* we will have multiple entries for typical hotspots, just
* filter to the one with the strongest signal */
aps_unique = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
if (aps != NULL)
for (i = 0; i < aps->len; i++) {
+ GBytes *ssid = NULL;
+
ap = NM_ACCESS_POINT (g_ptr_array_index (aps, i));
+ if (ap == active_ap)
+ ssid = ac_ssid;
+ if (!ssid)
+ ssid = nm_access_point_get_ssid (ap);
+
/* Hidden SSIDs don't get shown in the list */
- ssid = nm_access_point_get_ssid (ap);
if (!ssid)
continue;
@@ -189,8 +214,15 @@ panel_get_strongest_unique_aps (const GPtrArray *aps)
/* get already added list */
for (j=0; j<aps_unique->len; j++) {
+ GBytes *ssid_tmp = NULL;
+
ap_tmp = NM_ACCESS_POINT (g_ptr_array_index (aps_unique, j));
- ssid_tmp = nm_access_point_get_ssid (ap_tmp);
+
+ ssid_tmp = NULL;
+ if (ap_tmp == active_ap)
+ ssid_tmp = ac_ssid;
+ if (!ssid_tmp)
+ ssid_tmp = nm_access_point_get_ssid (ap_tmp);
g_assert (ssid_tmp);
/* is this the same type and data? */
@@ -202,9 +234,12 @@ panel_get_strongest_unique_aps (const GPtrArray *aps)
nm_utils_escape_ssid (g_bytes_get_data (ssid_tmp, NULL),
g_bytes_get_size (ssid_tmp)));
- /* the new access point is stronger */
- if (nm_access_point_get_strength (ap) >
+ if (ap_tmp == active_ap) {
+ add_ap = FALSE;
+ } else if (ap == active_ap ||
+ nm_access_point_get_strength (ap) >
nm_access_point_get_strength (ap_tmp)) {
+ /* the new access point is the default or stronger */
g_debug ("removing %s",
nm_utils_escape_ssid (g_bytes_get_data (ssid_tmp, NULL),
g_bytes_get_size (ssid_tmp)));
@@ -2042,9 +2077,10 @@ open_history (NetDeviceWifi *device_wifi)
GtkWidget *separator;
GSList *connections;
GSList *l;
- const GPtrArray *aps;
GPtrArray *aps_unique = NULL;
NMAccessPoint *active_ap;
+ NMActiveConnection *ac;
+ NMConnection *ac_con = NULL;
guint i;
NMDevice *nm_device;
GtkWidget *list;
@@ -2119,10 +2155,15 @@ open_history (NetDeviceWifi *device_wifi)
connections = net_device_get_valid_connections (NET_DEVICE (device_wifi));
- aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (nm_device));
- aps_unique = panel_get_strongest_unique_aps (aps);
+ aps_unique = panel_get_strongest_unique_aps (nm_device);
active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (nm_device));
+ ac = nm_device_get_active_connection (nm_device);
+ if (ac)
+ ac_con = NM_CONNECTION (nm_active_connection_get_connection (ac));
+ if (ac_con && !g_slist_find (connections, ac_con))
+ connections = g_slist_prepend (connections, ac_con);
+
for (l = connections; l; l = l->next) {
NMConnection *connection = l->data;
NMAccessPoint *ap = NULL;
@@ -2137,7 +2178,13 @@ open_history (NetDeviceWifi *device_wifi)
GBytes *ssid_ap;
ap = NM_ACCESS_POINT (g_ptr_array_index (aps_unique, i));
ssid_ap = nm_access_point_get_ssid (ap);
- if (nm_utils_same_ssid (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid),
+
+ /* Skip SSID check for active connection/AP (will not match with OWE) */
+ if (ap == active_ap && connection == ac_con)
+ break;
+
+ if (ssid_ap &&
+ nm_utils_same_ssid (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid),
g_bytes_get_data (ssid_ap, NULL), g_bytes_get_size (ssid_ap),
TRUE))
break;
@@ -2167,13 +2214,14 @@ populate_ap_list_idle (NetDeviceWifi *device_wifi)
NMDevice *nm_device;
GSList *connections;
GSList *l;
- const GPtrArray *aps;
GPtrArray *aps_unique = NULL;
NMAccessPoint *active_ap;
guint i;
GtkWidget *row;
GtkWidget *button;
GList *children, *child;
+ NMActiveConnection *ac;
+ NMConnection *ac_con = NULL;
device_wifi->priv->populate_ap_list_idle_id = 0;
@@ -2192,10 +2240,15 @@ populate_ap_list_idle (NetDeviceWifi *device_wifi)
connections = net_device_get_valid_connections (NET_DEVICE (device_wifi));
- aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (nm_device));
- aps_unique = panel_get_strongest_unique_aps (aps);
+ aps_unique = panel_get_strongest_unique_aps (nm_device);
active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (nm_device));
+ ac = nm_device_get_active_connection (nm_device);
+ if (ac)
+ ac_con = NM_CONNECTION (nm_active_connection_get_connection (ac));
+ if (ac_con && !g_slist_find (connections, ac_con))
+ connections = g_slist_prepend (connections, ac_con);
+
for (i = 0; i < aps_unique->len; i++) {
GBytes *ssid_ap;
NMAccessPoint *ap;
@@ -2212,9 +2265,14 @@ populate_ap_list_idle (NetDeviceWifi *device_wifi)
continue;
}
+ /* Skip SSID check for active connection/AP (will not match with OWE) */
+ if (ap == active_ap && connection == ac_con)
+ break;
+
setting = nm_connection_get_setting_by_name (connection, NM_SETTING_WIRELESS_SETTING_NAME);
ssid = nm_setting_wireless_get_ssid (NM_SETTING_WIRELESS (setting));
- if (nm_utils_same_ssid (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid),
+ if (ssid_ap &&
+ nm_utils_same_ssid (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid),
g_bytes_get_data (ssid_ap, NULL), g_bytes_get_size (ssid_ap),
TRUE))
break;
--
2.34.1

View File

@ -1,51 +0,0 @@
From 4269c292020aa11d7b8e17e804ad207e892d2bfe Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Thu, 9 Dec 2021 17:53:09 +0100
Subject: [PATCH 8/8] network: Fix saving passwords for non-wifi connections
When validating security settings for non-wifi connections, we
temporarily create a wireless connection. Unfortunately, when this
connection is destroyed, it'll clear the stored password from the 802.1x
settings object.
Avoid this by removing the setting before unref'ing the temporary
connection.
---
.../connection-editor/ce-page-8021x-security.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/panels/network/connection-editor/ce-page-8021x-security.c b/panels/network/connection-editor/ce-page-8021x-security.c
index f7d31969a..0ac057f79 100644
--- a/panels/network/connection-editor/ce-page-8021x-security.c
+++ b/panels/network/connection-editor/ce-page-8021x-security.c
@@ -126,22 +126,17 @@ validate (CEPage *cepage, NMConnection *connection, GError **error)
/* FIXME: get failed property and error out of wireless security objects */
valid = wireless_security_validate (page->security, error);
if (valid) {
- NMSetting *s_con;
-
/* Here's a nice hack to work around the fact that ws_802_1x_fill_connection needs wireless setting. */
- tmp_connection = nm_simple_connection_new ();
+ tmp_connection = nm_simple_connection_new_clone (connection);
nm_connection_add_setting (tmp_connection, nm_setting_wireless_new ());
- /* temp connection needs a 'connection' setting too, since most of
- * the EAP methods need the UUID for CA cert ignore stuff.
- */
- s_con = nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION);
- nm_connection_add_setting (tmp_connection, nm_setting_duplicate (s_con));
-
ws_802_1x_fill_connection (page->security, "wpa_eap_auth_combo", tmp_connection);
+ /* NOTE: It is important we create a copy of the settings, as the
+ * secrets might be cleared otherwise.
+ */
s_8021x = nm_connection_get_setting (tmp_connection, NM_TYPE_SETTING_802_1X);
- nm_connection_add_setting (connection, NM_SETTING (g_object_ref (s_8021x)));
+ nm_connection_add_setting (connection, nm_setting_duplicate (NM_SETTING (s_8021x)));
g_object_unref (tmp_connection);
}
--
2.34.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,42 @@
From 0e2562c2c5ff081561424c625b090f089ef45fe7 Mon Sep 17 00:00:00 2001
From: Felipe Borges <felipeborges@gnome.org>
Date: Fri, 14 Jan 2022 13:28:24 +0100
Subject: [PATCH] applications: Set the Icon key in desktop file to a icon that
exists
While we dynamically append --symbolic to the icons while creating
the sidebar model in
https://gitlab.gnome.org/GNOME/gnome-control-center/-/blob/master/shell/cc-shell-model.c#L270
There are automation tools (such as rpmdiff) that parse desktop files
and verify whether their Icon= matches to an existing file in the
icon theme package.
preferences-desktop-apps doesn't exist in adwaita-icon-theme but
preferences-desktop-apps-symbolic does.
---
panels/applications/gnome-applications-panel.desktop.in.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/panels/applications/gnome-applications-panel.desktop.in.in b/panels/applications/gnome-applications-panel.desktop.in.in
index 86e816645..83616c89e 100644
--- a/panels/applications/gnome-applications-panel.desktop.in.in
+++ b/panels/applications/gnome-applications-panel.desktop.in.in
@@ -4,7 +4,7 @@ Comment=Control various application permissions and settings
Exec=gnome-control-center applications
# FIXME
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=preferences-desktop-apps
+Icon=preferences-desktop-apps-symbolic
Terminal=false
Type=Application
NoDisplay=true
@@ -13,4 +13,4 @@ Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;X-GNOME-Acc
OnlyShowIn=GNOME;Unity;
# Translators: Search terms to find the Privacy panel. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
Keywords=application;flatpak;permission;setting;
-X-GNOME-ControlCenter-HasSidebar=true
\ No newline at end of file
+X-GNOME-ControlCenter-HasSidebar=true
--
2.33.1

File diff suppressed because it is too large Load Diff

View File

@ -1,102 +0,0 @@
From 6d01e7277f8589a1f0076acbf9e08b45a5a96d0d Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Thu, 13 Dec 2018 14:32:33 +1000
Subject: [PATCH 1/2] wacom: Map wacom-driver-specific generic IDs to 0
The xf86-input-wacom driver doesn't use 0 for tools that do not have an id or
serials. Serials default to 1, and the tool id is either 0x2 for stylus or 0xa
for eraser, see xf86WacomDefs.h, the defines for STYLUS_DEVICE_ID and
ERASER_DEVICE_ID.
libwacom uses 0xfffff and 0xffffe for the generic pens and all the lookup code
we have in the panel is designed for a serial/tool id of 0. So let's just map
the wacom driver IDs to 0 at the only transition point between Gdk and our
panel.
No devices with serials 0 or hw ids 2/10 exist, so this shouldn't have side
effects. This only affects X + xf86-input-wacom.
---
panels/wacom/cc-wacom-panel.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/panels/wacom/cc-wacom-panel.c b/panels/wacom/cc-wacom-panel.c
index e4f3ca7..8748876 100644
--- a/panels/wacom/cc-wacom-panel.c
+++ b/panels/wacom/cc-wacom-panel.c
@@ -354,6 +354,14 @@ update_current_tool (CcWacomPanel *panel,
/* Check whether we already know this tool, nothing to do then */
serial = gdk_device_tool_get_serial (tool);
+
+ /* The wacom driver sends serial-less tools with a serial of
+ * 1, libinput uses 0. No device exists with serial 1, let's reset
+ * it here so everything else works as expected.
+ */
+ if (serial == 1)
+ serial = 0;
+
stylus = cc_tablet_tool_map_lookup_tool (priv->tablet_tool_map,
wacom_device, serial);
@@ -361,6 +369,15 @@ update_current_tool (CcWacomPanel *panel,
gboolean added;
id = gdk_device_tool_get_hardware_id (tool);
+
+ /* The wacom driver sends a hw id of 0x2 for stylus and 0xa
+ * for eraser for devices that don't have a true HW id.
+ * Reset those to 0 so we can use the same code-paths
+ * libinput uses.
+ */
+ if (id == 0x2 || id == 0xa)
+ id = 0;
+
stylus = cc_wacom_tool_new (serial, id, wacom_device);
if (!stylus)
return;
--
2.24.1
From 6974aaeb20a5146f95de9c40cd0b3b5967b317a6 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 14 Dec 2018 16:14:30 +1000
Subject: [PATCH 2/2] wacom: ignore the wacom driver's touch tool type
When the wacom driver handles the touch device, we get a tool id of 0x3. Let's
ignore that because we don't need a tool for the touch node.
Ideally we should be able to rely on the GDK tool type but that one is always
GDK_DEVICE_TOOL_TYPE_UNKNOWN see
https://gitlab.gnome.org/GNOME/gtk/merge_requests/453
A GTK bug (also fixed in that MR) prevents the tool id from updating.
Until that GTK bug is fixed the pen will only be detected if it is the first
event from this physical device. If the touch node sends an event before the
pen, the pen won't be detected.
---
panels/wacom/cc-wacom-panel.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/panels/wacom/cc-wacom-panel.c b/panels/wacom/cc-wacom-panel.c
index 8748876..985ddf5 100644
--- a/panels/wacom/cc-wacom-panel.c
+++ b/panels/wacom/cc-wacom-panel.c
@@ -374,9 +374,14 @@ update_current_tool (CcWacomPanel *panel,
* for eraser for devices that don't have a true HW id.
* Reset those to 0 so we can use the same code-paths
* libinput uses.
+ * The touch ID is 0x3, let's ignore that because we don't
+ * have a touch tool and it only happens when the wacom
+ * driver handles the touch device.
*/
if (id == 0x2 || id == 0xa)
id = 0;
+ else if (id == 0x3)
+ return;
stylus = cc_wacom_tool_new (serial, id, wacom_device);
if (!stylus)
--
2.24.1

View File

@ -1,708 +0,0 @@
From c96f608b5d6c3ac12cb8bf76e4688f6c0e8dd059 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Tue, 23 Apr 2019 19:29:41 +0200
Subject: [PATCH 1/3] network: Rename section header
The "Bluetooth" section is actually a catchall section for all
device types we don't know much specifically (Includes, but not
limited to Bluetooth).
Rename/relabel it to something more comprehensive.
Closes https://gitlab.gnome.org/GNOME/gnome-control-center/issues/488
---
panels/network/network.ui | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/panels/network/network.ui b/panels/network/network.ui
index 14c70cd..189febf 100644
--- a/panels/network/network.ui
+++ b/panels/network/network.ui
@@ -87,7 +87,7 @@
<property name="orientation">vertical</property>
<property name="spacing">12</property>
- <!-- Bluetooth header -->
+ <!-- "Other Devices" header -->
<child>
<object class="GtkBox">
<property name="visible">True</property>
@@ -98,7 +98,7 @@
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xalign">0.0</property>
- <property name="label" translatable="yes">Bluetooth</property>
+ <property name="label" translatable="yes">Other Devices</property>
<attributes>
<attribute name="weight" value="bold" />
</attributes>
--
2.27.0.rc2
From fc48e7e618a92f9d52cd61a9ef9b14bf889a9ef3 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Tue, 23 Apr 2019 19:46:32 +0200
Subject: [PATCH 2/3] network: Handle Infiniband as a wired interface
The configuration/UI we expose for wired settings are meaningful for those
devices as well.
Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/issues/489
---
panels/network/cc-network-panel.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/panels/network/cc-network-panel.c b/panels/network/cc-network-panel.c
index 51ea823..5cdf616 100644
--- a/panels/network/cc-network-panel.c
+++ b/panels/network/cc-network-panel.c
@@ -461,6 +461,7 @@ panel_add_device (CcNetworkPanel *panel, NMDevice *device)
/* map the NMDeviceType to the GType, or ignore */
switch (type) {
case NM_DEVICE_TYPE_ETHERNET:
+ case NM_DEVICE_TYPE_INFINIBAND:
device_g_type = NET_TYPE_DEVICE_ETHERNET;
break;
case NM_DEVICE_TYPE_MODEM:
--
2.27.0.rc2
From f71f867f35a8a6c437d2d525e39f3846e0782e4b Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 11 Jun 2020 14:16:03 +0200
Subject: [PATCH 3/3] Update translations
---
po/ca.po | 4 ++++
po/cs.po | 4 ++++
po/da.po | 4 ++++
po/de.po | 4 ++++
po/el.po | 4 ++++
po/en_GB.po | 4 ++++
po/eo.po | 4 ++++
po/es.po | 4 ++++
po/eu.po | 4 ++++
po/fa.po | 4 ++++
po/fi.po | 4 ++++
po/fr.po | 4 ++++
po/fur.po | 4 ++++
po/gl.po | 4 ++++
po/hr.po | 4 ++++
po/hu.po | 4 ++++
po/id.po | 4 ++++
po/it.po | 4 ++++
po/ja.po | 4 ++++
po/ko.po | 4 ++++
po/lt.po | 4 ++++
po/ms.po | 4 ++++
po/nb.po | 4 ++++
po/ne.po | 4 ++++
po/nl.po | 4 ++++
po/oc.po | 5 +++++
po/pa.po | 4 ++++
po/pl.po | 4 ++++
po/pt_BR.po | 4 ++++
po/ro.po | 4 ++++
po/ru.po | 4 ++++
po/sk.po | 4 ++++
po/sl.po | 4 ++++
po/sr.po | 4 ++++
po/sv.po | 4 ++++
po/tr.po | 4 ++++
po/uk.po | 5 +++++
po/zh_CN.po | 4 ++++
po/zh_TW.po | 4 ++++
39 files changed, 158 insertions(+)
diff --git a/po/ca.po b/po/ca.po
index 0592282..36172d9 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -224,6 +224,10 @@ msgstr "Desactiveu el mode d'avió per a habilitar el Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Altres dispositius"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Activeu i desactiveu el Bluetooth i connecteu els dispositius"
diff --git a/po/cs.po b/po/cs.po
index 7d6c2cc..b827d87 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -226,6 +226,10 @@ msgstr "Vypněte přepínač režimu „letadlo“, aby se povolilo Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Ostatní zařízení"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Zapnout a vypnout Bluetooth a připojit se k zařízením"
diff --git a/po/da.po b/po/da.po
index dc85493..bfcd034 100644
--- a/po/da.po
+++ b/po/da.po
@@ -234,6 +234,10 @@ msgstr "Sluk for kontakten Flytilstand for at aktivere Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Andre enheder"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Slå Bluetooth til eller fra og tilslut dine enheder"
diff --git a/po/de.po b/po/de.po
index 78325a2..a5d65f8 100644
--- a/po/de.po
+++ b/po/de.po
@@ -230,6 +230,10 @@ msgstr ""
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Weitere Geräte"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Schalten Sie Bluetooth an oder aus und verbinden Sie Ihre Geräte"
diff --git a/po/el.po b/po/el.po
index a4a1374..81120c7 100644
--- a/po/el.po
+++ b/po/el.po
@@ -2934,6 +2934,10 @@ msgstr "Απενεργοποίηση συσκευής"
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Άλλες συσκευές"
+
#: ../panels/network/network.ui.h:3
msgid "Not set up"
msgstr "Δεν είναι ρυθμισμένο"
diff --git a/po/en_GB.po b/po/en_GB.po
index 96733a1..1bba5a6 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -213,6 +213,10 @@ msgstr "Turn off the Aeroplane mode switch to enable Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Other Devices"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Turn Bluetooth on and off and connect your devices"
diff --git a/po/eo.po b/po/eo.po
index a13393b..473ed08 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -3000,6 +3000,10 @@ msgstr "Elŝalti aparaton"
msgid "Bluetooth"
msgstr "Bludento"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Aliaj aparatoj"
+
#: ../panels/network/network.ui.h:3
msgid "Not set up"
msgstr ""
diff --git a/po/es.po b/po/es.po
index b59dcd8..4ae235b 100644
--- a/po/es.po
+++ b/po/es.po
@@ -221,6 +221,10 @@ msgstr "Apague el modo avión para activar el Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Otros dispositivos"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Activar y desactivar Bluetooth y conectar sus dispositivos"
diff --git a/po/eu.po b/po/eu.po
index b702316..8ed6d30 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -2906,6 +2906,10 @@ msgstr "Desaktibatu gailua"
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Beste gailuak"
+
#: ../panels/network/network.ui.h:3
msgid "Not set up"
msgstr "Konfiguratu gabe"
diff --git a/po/fa.po b/po/fa.po
index 12a92ac..101b73c 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -2792,6 +2792,10 @@ msgstr "خاموش کردن دستگاه"
msgid "Bluetooth"
msgstr "بلوتوث"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "دیگر دستگاه‌ها"
+
#: ../panels/network/network.ui.h:3
msgid "Not set up"
msgstr "برپا نشده"
diff --git a/po/fi.po b/po/fi.po
index 30f8098..b278e0f 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -228,6 +228,10 @@ msgstr "Poista lentokonetila käytöstä käyttääksesi Bluetoothia."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Muut laitteet"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Kytke Bluetooth päälle tai pois ja yhdistä laitteita"
diff --git a/po/fr.po b/po/fr.po
index fbe309a..7c55fd2 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -241,6 +241,10 @@ msgstr "Désactivez le mode avion pour activer le Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Autres périphériques"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Active/désactive le Bluetooth et connecte vos périphériques"
diff --git a/po/fur.po b/po/fur.po
index 7cc4bb2..7bdfcba 100644
--- a/po/fur.po
+++ b/po/fur.po
@@ -211,6 +211,10 @@ msgstr "Distude il cric de modalitât Avion par abilitâ il Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Altris dispositîfs"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Impie e distude il Bluetooth e conet i tiei dispositîfs"
diff --git a/po/gl.po b/po/gl.po
index 6a2061f..b4763b7 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -222,6 +222,10 @@ msgstr "Apague o modo avión para activar o Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Outros dispositivos"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Active ou desactive o Bluetooth e conecte os seus dispositivos"
diff --git a/po/hr.po b/po/hr.po
index 480fe50..740ef7b 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -209,6 +209,10 @@ msgstr "Isključite način rada u zrakoplovu kako bi mogli kristiti Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Ostali uređaji"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Uključite ili isključite Bluetooth i povežite svoje uređaje"
diff --git a/po/hu.po b/po/hu.po
index 9fddf1c..41b0e51 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -220,6 +220,10 @@ msgstr ""
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Egyéb eszközök"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Kapcsolja be és ki a Bluetooth-t, majd csatlakoztassa eszközeit"
diff --git a/po/id.po b/po/id.po
index ad2772a..49c370d 100644
--- a/po/id.po
+++ b/po/id.po
@@ -213,6 +213,10 @@ msgstr "Matikan saklar mode Pesawat Terbang untuk memfungsikan Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Perangkat Lainnya"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Nyalakan dan matikan Bluetooth dan sambungkan perangkat Anda"
diff --git a/po/it.po b/po/it.po
index cdbc7b0..1390c7c 100644
--- a/po/it.po
+++ b/po/it.po
@@ -216,6 +216,10 @@ msgstr "Disattivare la modalità aereo via hardware per abilitare il Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Altri dispositivi"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Attiva e disattiva il Bluetooth e connette i propri dispositivi"
diff --git a/po/ja.po b/po/ja.po
index 5f4767f..bc144dd 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -2893,6 +2893,10 @@ msgstr "デバイスをオフにする"
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "その他のデバイス"
+
#: ../panels/network/network.ui.h:3
msgid "Not set up"
msgstr "未設定"
diff --git a/po/ko.po b/po/ko.po
index 49d9c2f..3d350b2 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -230,6 +230,10 @@ msgstr "블루투스를 사용하려면 비행 모드 스위치를 끄십시오.
msgid "Bluetooth"
msgstr "블루투스"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "기타 장치"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "블루투스를 켜거나 끄고 블루투스 장치에 연결합니다"
diff --git a/po/lt.po b/po/lt.po
index 3a1292e..9328564 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -220,6 +220,10 @@ msgstr "Išjunkite skrydžio veiksenos jungiklį Bluetooth įjungimui."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Kiti įrenginiai"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Įjunkite arba išjunkite Bluetooth ir junkitės prie savo įrenginių"
diff --git a/po/ms.po b/po/ms.po
index c78df1b..e90eec8 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -2723,6 +2723,10 @@ msgstr "Profail ujian:"
msgid "VPN"
msgstr ""
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Lain-lain Peranti"
+
#: ../panels/network/connection-editor/net-connection-editor.c:578
msgid "Bond"
msgstr ""
diff --git a/po/nb.po b/po/nb.po
index e1e4b11..02815b2 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -2842,6 +2842,10 @@ msgstr "Slå enhet av"
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Andre enheter"
+
#: ../panels/network/network.ui.h:3
msgid "Not set up"
msgstr "Ikke satt opp"
diff --git a/po/ne.po b/po/ne.po
index 6cd1bb9..ad3a137 100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -2448,6 +2448,10 @@ msgstr "नायाँ प्रोफाइल"
msgid "VPN"
msgstr "भीपीएन"
+#: panels/network/network.ui:102
+msgid "Other Devices"
+msgstr "अरु यन्त्रहरू "
+
#: ../panels/network/connection-editor/net-connection-editor.c:751
msgid "Import from file…"
msgstr "फाईलबाट आयात गर्नुहोस्"
diff --git a/po/nl.po b/po/nl.po
index 3b48a77..d81a865 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -233,6 +233,10 @@ msgstr "Vliegtuigstand uitschakelen om Bluetooth mogelijk te maken."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Overige apparaten"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Bluetooth aan- en uitzetten en uw apparaten aansluiten"
diff --git a/po/oc.po b/po/oc.po
index bcd7fbe..025b78b 100644
--- a/po/oc.po
+++ b/po/oc.po
@@ -2815,6 +2815,11 @@ msgstr "Apondre lo periferic"
msgid "Remove Device"
msgstr "Levar lo periferic"
+#: panels/network/network.ui:102
+#| msgid "Devices"
+msgid "Other Devices"
+msgstr "Autres periferics"
+
#: ../panels/network/network-vpn.ui.h:1
msgid "VPN Type"
msgstr "Tipe de VPN"
diff --git a/po/pa.po b/po/pa.po
index ce50b62..a894921 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -215,6 +215,10 @@ msgstr "ਬਲੂਟੁੱਥ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਏਅ
msgid "Bluetooth"
msgstr "ਬਲੂਟੁੱਥ"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "ਹੋਰ ਡਿਵਾਈਸ"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "ਬਲੂਟੁੱਥ ਜੰਤਰ ਨੂੰ ਚਾਲੂ ਤੇ ਬੰਦ ਕਰੋ ਅਤੇ ਆਪਣੇ ਜੰਤਰਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ-"
diff --git a/po/pl.po b/po/pl.po
index 9093e4e..c1536f4 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -214,6 +214,10 @@ msgstr "Należy wyłączyć przełącznik trybu sprzętowego, aby włączyć Blu
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Inne urządzenia"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Włączanie Bluetooth i łączenie z urządzeniami"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index acad283..bc0861b 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -236,6 +236,10 @@ msgstr "Desligue o alternador do modo avião para habilitar o Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Outros dispositivos"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Ligue e desligue o Bluetooth e conecte seus dispositivos"
diff --git a/po/ro.po b/po/ro.po
index 10fc7eb..6d3f307 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -221,6 +221,10 @@ msgstr "Opriți modul avion pentru a putea activa Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:102
+msgid "Other Devices"
+msgstr "Alte dispozitive"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Deschideți și închideți Bluetooth și conectați-vă dispozitivele"
diff --git a/po/ru.po b/po/ru.po
index 52762fd..414b598 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -226,6 +226,10 @@ msgstr "Для включения Bluetooth выключите режим для
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Другие устройства"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Включение и отключение Bluetooth. Подключение устройств Bluetooth"
diff --git a/po/sk.po b/po/sk.po
index 3d67fb2..1a4ee5e 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -231,6 +231,10 @@ msgstr "Vypnite prepínač režimu v lietadle na povolenie rozhrania Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Ostatné zariadenia"
+
# desktop entry comment
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
diff --git a/po/sl.po b/po/sl.po
index ba5f934..5008f64 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -215,6 +215,10 @@ msgstr "Izklopi letalski način za omogočanje vmesnika Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Druge naprave"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Vklopite in izklopite Bluetooth in povežite svoje naprave"
diff --git a/po/sr.po b/po/sr.po
index 1c747a4..6604629 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -218,6 +218,10 @@ msgstr "Искључите авионски режим рада бисте ук
msgid "Bluetooth"
msgstr "Блутут"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Други уређаји"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Укључите или искључите блутут и повежите ваше уређаје"
diff --git a/po/sv.po b/po/sv.po
index d8f4138..25567fb 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -217,6 +217,10 @@ msgstr "Slå av växelknappen för flygplansläge för att aktivera Bluetooth."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Andra enheter"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Slå på samt av Bluetooth och anslut dina enheter"
diff --git a/po/tr.po b/po/tr.po
index 7ac1573..5ef1d82 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -220,6 +220,10 @@ msgstr "Bluetoothu etkinleştirmek için Uçak kipini kapat."
msgid "Bluetooth"
msgstr "Bluetooth"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "Diğer Aygıtlar"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "Bluetoothu açıp kapatın ve aygıtlarınızı bağlayın"
diff --git a/po/uk.po b/po/uk.po
index 9e9d8dc..4bc1cbb 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -2900,6 +2900,11 @@ msgstr "Додати пристрій"
msgid "Remove Device"
msgstr "Вилучити носій"
+#: panels/network/network.ui:68
+#| msgid "Devices"
+msgid "Other Devices"
+msgstr "Інші пристрої"
+
#: ../panels/network/network-vpn.ui.h:1
msgid "VPN Type"
msgstr "Тип VPN"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 3c7050c..c3153b1 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -2780,6 +2780,10 @@ msgstr "添加设备"
msgid "Remove Device"
msgstr "移除设备"
+#: panels/network/network.ui:102
+msgid "Other Devices"
+msgstr "其他设备"
+
#: ../panels/network/network-vpn.ui.h:1
msgid "VPN Type"
msgstr "VPN 类型"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 8d5a5a0..e0de674 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -215,6 +215,10 @@ msgstr "關閉飛安模式開關以啟用藍牙。"
msgid "Bluetooth"
msgstr "藍牙"
+#: panels/network/network.ui:68
+msgid "Other Devices"
+msgstr "其他裝置"
+
#: panels/bluetooth/gnome-bluetooth-panel.desktop.in.in:4
msgid "Turn Bluetooth on and off and connect your devices"
msgstr "開啟或關閉藍牙與連接您的裝置"
--
2.27.0.rc2

View File

@ -0,0 +1,81 @@
From 8eab500540c1631dbdc760bca617a581e2969ed6 Mon Sep 17 00:00:00 2001
From: Felipe Borges <felipeborges@gnome.org>
Date: Mon, 1 Aug 2022 10:57:07 +0200
Subject: [PATCH] info-overview: Allow changing "Device Name" by pressing
"Enter"
The hostname/device name dialog has only a GtkEntry. So a user
navigating with only a keyboard should be able to apply their
changes by pressing "Enter".
---
panels/info-overview/cc-info-overview-panel.c | 34 +++++++++++++++++++
.../info-overview/cc-info-overview-panel.ui | 1 +
2 files changed, 35 insertions(+)
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index a2cb70755..e8881d70d 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -818,6 +818,38 @@ on_device_name_entry_changed (CcInfoOverviewPanel *self)
g_strcmp0 (current_hostname, new_hostname) != 0);
}
+static void
+update_device_name (CcInfoOverviewPanel *self)
+{
+ const gchar *hostname;
+
+ /* We simply change the CcHostnameEntry text. CcHostnameEntry
+ * listens to changes and updates hostname on change.
+ */
+ hostname = gtk_entry_get_text (GTK_ENTRY (self->device_name_entry));
+ gtk_entry_set_text (GTK_ENTRY (self->hostname_entry), hostname);
+}
+
+static void
+on_hostname_editor_dialog_response_cb (GtkDialog *dialog,
+ gint response,
+ CcInfoOverviewPanel *self)
+{
+ if (response == GTK_RESPONSE_APPLY)
+ {
+ update_device_name (self);
+ }
+
+ gtk_window_close (GTK_WINDOW (dialog));
+}
+
+static void
+on_device_name_entry_activated_cb (CcInfoOverviewPanel *self)
+{
+ update_device_name (self);
+ gtk_window_close (GTK_WINDOW (self->hostname_editor));
+}
+
static void
open_hostname_edit_dialog (CcInfoOverviewPanel *self)
{
@@ -906,6 +938,8 @@ cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
gtk_widget_class_bind_template_callback (widget_class, cc_info_panel_row_activated_cb);
gtk_widget_class_bind_template_callback (widget_class, on_device_name_entry_changed);
+ gtk_widget_class_bind_template_callback (widget_class, on_device_name_entry_activated_cb);
+ gtk_widget_class_bind_template_callback (widget_class, on_hostname_editor_dialog_response_cb);
g_type_ensure (CC_TYPE_LIST_ROW);
g_type_ensure (CC_TYPE_HOSTNAME_ENTRY);
diff --git a/panels/info-overview/cc-info-overview-panel.ui b/panels/info-overview/cc-info-overview-panel.ui
index 2f5d3cf8b..adf3b5409 100644
--- a/panels/info-overview/cc-info-overview-panel.ui
+++ b/panels/info-overview/cc-info-overview-panel.ui
@@ -219,6 +219,7 @@
<object class="GtkEntry" id="device_name_entry">
<property name="visible">True</property>
<signal name="changed" handler="on_device_name_entry_changed" swapped="yes"/>
+ <signal name="activate" handler="on_device_name_entry_activated_cb" swapped="yes" />
</object>
</child>
</object>
--
2.34.1

View File

@ -0,0 +1,416 @@
From c999bade4d27e0384b6495ee3bbf88df1b9e256b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Thu, 24 Feb 2022 12:30:23 +0100
Subject: [PATCH 1/2] display: Add 'NightLightSupported' property support
---
panels/display/cc-display-config-manager-dbus.c | 17 +++++++++++++++++
panels/display/cc-display-config-manager.c | 6 ++++++
panels/display/cc-display-config-manager.h | 3 +++
3 files changed, 26 insertions(+)
diff --git a/panels/display/cc-display-config-manager-dbus.c b/panels/display/cc-display-config-manager-dbus.c
index 392140101..678b696db 100644
--- a/panels/display/cc-display-config-manager-dbus.c
+++ b/panels/display/cc-display-config-manager-dbus.c
@@ -33,6 +33,7 @@ struct _CcDisplayConfigManagerDBus
GVariant *current_state;
gboolean apply_allowed;
+ gboolean night_light_supported;
};
G_DEFINE_TYPE (CcDisplayConfigManagerDBus,
@@ -169,6 +170,12 @@ bus_gotten (GObject *object,
else
g_warning ("Missing property 'ApplyMonitorsConfigAllowed' on DisplayConfig API");
+ variant = g_dbus_proxy_get_cached_property (proxy, "NightLightSupported");
+ if (variant)
+ self->night_light_supported = g_variant_get_boolean (variant);
+ else
+ g_warning ("Missing property 'NightLightSupported' on DisplayConfig API");
+
get_current_state (self);
}
@@ -176,6 +183,7 @@ static void
cc_display_config_manager_dbus_init (CcDisplayConfigManagerDBus *self)
{
self->apply_allowed = TRUE;
+ self->night_light_supported = TRUE;
self->cancellable = g_cancellable_new ();
g_bus_get (G_BUS_TYPE_SESSION, self->cancellable, bus_gotten, self);
}
@@ -205,6 +213,14 @@ cc_display_config_manager_dbus_get_apply_allowed (CcDisplayConfigManager *pself)
return self->apply_allowed;
}
+static gboolean
+cc_display_config_manager_dbus_get_night_light_supported (CcDisplayConfigManager *pself)
+{
+ CcDisplayConfigManagerDBus *self = CC_DISPLAY_CONFIG_MANAGER_DBUS (pself);
+
+ return self->night_light_supported;
+}
+
static void
cc_display_config_manager_dbus_class_init (CcDisplayConfigManagerDBusClass *klass)
{
@@ -215,6 +231,7 @@ cc_display_config_manager_dbus_class_init (CcDisplayConfigManagerDBusClass *klas
parent_class->get_current = cc_display_config_manager_dbus_get_current;
parent_class->get_apply_allowed = cc_display_config_manager_dbus_get_apply_allowed;
+ parent_class->get_night_light_supported = cc_display_config_manager_dbus_get_night_light_supported;
}
CcDisplayConfigManager *
diff --git a/panels/display/cc-display-config-manager.c b/panels/display/cc-display-config-manager.c
index 3d683c53d..f231edd69 100644
--- a/panels/display/cc-display-config-manager.c
+++ b/panels/display/cc-display-config-manager.c
@@ -65,3 +65,9 @@ cc_display_config_manager_get_apply_allowed (CcDisplayConfigManager *self)
{
return CC_DISPLAY_CONFIG_MANAGER_GET_CLASS (self)->get_apply_allowed (self);
}
+
+gboolean
+cc_display_config_manager_get_night_light_supported (CcDisplayConfigManager *self)
+{
+ return CC_DISPLAY_CONFIG_MANAGER_GET_CLASS (self)->get_night_light_supported (self);
+}
diff --git a/panels/display/cc-display-config-manager.h b/panels/display/cc-display-config-manager.h
index 64f0775e9..ab1e84f85 100644
--- a/panels/display/cc-display-config-manager.h
+++ b/panels/display/cc-display-config-manager.h
@@ -35,12 +35,15 @@ struct _CcDisplayConfigManagerClass
CcDisplayConfig * (*get_current) (CcDisplayConfigManager *self);
gboolean (* get_apply_allowed) (CcDisplayConfigManager *self);
+ gboolean (* get_night_light_supported) (CcDisplayConfigManager *self);
};
CcDisplayConfig * cc_display_config_manager_get_current (CcDisplayConfigManager *self);
gboolean cc_display_config_manager_get_apply_allowed (CcDisplayConfigManager *self);
+gboolean cc_display_config_manager_get_night_light_supported (CcDisplayConfigManager *self);
+
void _cc_display_config_manager_emit_changed (CcDisplayConfigManager *self);
G_END_DECLS
--
2.34.1
From 414e23272f89198efc452a4f8d50442c72a07956 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Thu, 24 Feb 2022 12:31:00 +0100
Subject: [PATCH 2/2] display: Show infobar if night light isn't supported
This may be the case on e.g. fully remote / headless sessions, or as of
now, when using the NVIDIA driver to run a Wayland session.
Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1659
---
panels/display/cc-night-light-page.c | 153 +++++++++++++++-----------
panels/display/cc-night-light-page.ui | 41 ++++++-
2 files changed, 129 insertions(+), 65 deletions(-)
diff --git a/panels/display/cc-night-light-page.c b/panels/display/cc-night-light-page.c
index f51b0ba69..482b90fea 100644
--- a/panels/display/cc-night-light-page.c
+++ b/panels/display/cc-night-light-page.c
@@ -29,15 +29,18 @@
#include "list-box-helper.h"
#include "shell/cc-object-storage.h"
+#include "cc-display-config-manager-dbus.h"
struct _CcNightLightPage {
GtkBin parent;
+ GtkWidget *night_light_settings;
GtkWidget *box_manual;
GtkButton *button_from_am;
GtkButton *button_from_pm;
GtkButton *button_to_am;
GtkButton *button_to_pm;
+ GtkWidget *infobar_unsupported;
GtkWidget *infobar_disabled;
GtkListBox *listbox;
GtkWidget *scale_color_temperature;
@@ -64,6 +67,8 @@ struct _CcNightLightPage {
gboolean ignore_value_changed;
guint timer_id;
GDesktopClockFormat clock_format;
+
+ CcDisplayConfigManager *config_manager;
};
G_DEFINE_TYPE (CcNightLightPage, cc_night_light_page, GTK_TYPE_BIN);
@@ -122,88 +127,97 @@ dialog_adjustments_set_frac_hours (CcNightLightPage *self,
static void
dialog_update_state (CcNightLightPage *self)
{
- gboolean automatic;
- gboolean disabled_until_tomorrow = FALSE;
- gboolean enabled;
- gdouble value = 0.f;
-
- /* only show the infobar if we are disabled */
- if (self->proxy_color != NULL)
+ if (cc_display_config_manager_get_night_light_supported (self->config_manager))
{
- g_autoptr(GVariant) disabled = NULL;
- disabled = g_dbus_proxy_get_cached_property (self->proxy_color,
- "DisabledUntilTomorrow");
- if (disabled != NULL)
- disabled_until_tomorrow = g_variant_get_boolean (disabled);
- }
- gtk_widget_set_visible (self->infobar_disabled, disabled_until_tomorrow);
+ gboolean automatic;
+ gboolean disabled_until_tomorrow = FALSE;
+ gboolean enabled;
+ gdouble value = 0.f;
- /* make things insensitive if the switch is disabled */
- enabled = g_settings_get_boolean (self->settings_display, "night-light-enabled");
- automatic = g_settings_get_boolean (self->settings_display, "night-light-schedule-automatic");
+ /* only show the infobar if we are disabled */
+ if (self->proxy_color != NULL)
+ {
+ g_autoptr(GVariant) disabled = NULL;
+ disabled = g_dbus_proxy_get_cached_property (self->proxy_color,
+ "DisabledUntilTomorrow");
+ if (disabled != NULL)
+ disabled_until_tomorrow = g_variant_get_boolean (disabled);
+ }
+ gtk_widget_set_visible (self->infobar_disabled, disabled_until_tomorrow);
- gtk_widget_set_sensitive (self->box_manual, enabled && !automatic);
+ /* make things insensitive if the switch is disabled */
+ enabled = g_settings_get_boolean (self->settings_display, "night-light-enabled");
+ automatic = g_settings_get_boolean (self->settings_display, "night-light-schedule-automatic");
- gtk_combo_box_set_active_id (self->schedule_type_combo, automatic ? "automatic" : "manual");
+ gtk_widget_set_sensitive (self->box_manual, enabled && !automatic);
- /* set from */
- if (automatic && self->proxy_color != NULL)
- {
- g_autoptr(GVariant) sunset = NULL;
- sunset = g_dbus_proxy_get_cached_property (self->proxy_color, "Sunset");
- if (sunset != NULL)
+ gtk_combo_box_set_active_id (self->schedule_type_combo, automatic ? "automatic" : "manual");
+
+ /* set from */
+ if (automatic && self->proxy_color != NULL)
{
- value = g_variant_get_double (sunset);
+ g_autoptr(GVariant) sunset = NULL;
+ sunset = g_dbus_proxy_get_cached_property (self->proxy_color, "Sunset");
+ if (sunset != NULL)
+ {
+ value = g_variant_get_double (sunset);
+ }
+ else
+ {
+ value = 16.0f;
+ g_warning ("no sunset data, using %02.2f", value);
+ }
}
else
{
- value = 16.0f;
- g_warning ("no sunset data, using %02.2f", value);
+ value = g_settings_get_double (self->settings_display, "night-light-schedule-from");
+ value = fmod (value, 24.f);
}
- }
- else
- {
- value = g_settings_get_double (self->settings_display, "night-light-schedule-from");
- value = fmod (value, 24.f);
- }
- dialog_adjustments_set_frac_hours (self, value,
- self->adjustment_from_hours,
- self->adjustment_from_minutes,
- self->stack_from,
- self->button_from_am,
- self->button_from_pm);
-
- /* set to */
- if (automatic && self->proxy_color != NULL)
- {
- g_autoptr(GVariant) sunset = NULL;
- sunset = g_dbus_proxy_get_cached_property (self->proxy_color, "Sunrise");
- if (sunset != NULL)
+ dialog_adjustments_set_frac_hours (self, value,
+ self->adjustment_from_hours,
+ self->adjustment_from_minutes,
+ self->stack_from,
+ self->button_from_am,
+ self->button_from_pm);
+
+ /* set to */
+ if (automatic && self->proxy_color != NULL)
{
- value = g_variant_get_double (sunset);
+ g_autoptr(GVariant) sunset = NULL;
+ sunset = g_dbus_proxy_get_cached_property (self->proxy_color, "Sunrise");
+ if (sunset != NULL)
+ {
+ value = g_variant_get_double (sunset);
+ }
+ else
+ {
+ value = 8.0f;
+ g_warning ("no sunrise data, using %02.2f", value);
+ }
}
else
{
- value = 8.0f;
- g_warning ("no sunrise data, using %02.2f", value);
+ value = g_settings_get_double (self->settings_display, "night-light-schedule-to");
+ value = fmod (value, 24.f);
}
+ dialog_adjustments_set_frac_hours (self, value,
+ self->adjustment_to_hours,
+ self->adjustment_to_minutes,
+ self->stack_to,
+ self->button_to_am,
+ self->button_to_pm);
+
+ self->ignore_value_changed = TRUE;
+ value = (gdouble) g_settings_get_uint (self->settings_display, "night-light-temperature");
+ gtk_adjustment_set_value (self->adjustment_color_temperature, value);
+ self->ignore_value_changed = FALSE;
}
else
{
- value = g_settings_get_double (self->settings_display, "night-light-schedule-to");
- value = fmod (value, 24.f);
+ gtk_widget_set_visible (self->infobar_unsupported, TRUE);
+ gtk_widget_set_visible (self->infobar_disabled, FALSE);
+ gtk_widget_set_sensitive (self->night_light_settings, FALSE);
}
- dialog_adjustments_set_frac_hours (self, value,
- self->adjustment_to_hours,
- self->adjustment_to_minutes,
- self->stack_to,
- self->button_to_am,
- self->button_to_pm);
-
- self->ignore_value_changed = TRUE;
- value = (gdouble) g_settings_get_uint (self->settings_display, "night-light-temperature");
- gtk_adjustment_set_value (self->adjustment_color_temperature, value);
- self->ignore_value_changed = FALSE;
}
static void
@@ -549,6 +563,13 @@ dialog_am_pm_to_button_clicked_cb (GtkButton *button,
g_debug ("new value = %.3f", value);
}
+static void
+config_manager_changed_cb (CcDisplayConfigManager *config_manager,
+ CcNightLightPage *self)
+{
+ dialog_update_state (self);
+}
+
/* GObject overrides */
static void
cc_night_light_page_finalize (GObject *object)
@@ -583,11 +604,13 @@ cc_night_light_page_class_init (CcNightLightPageClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, adjustment_to_hours);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, adjustment_to_minutes);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, adjustment_color_temperature);
+ gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, night_light_settings);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, box_manual);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, button_from_am);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, button_from_pm);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, button_to_am);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, button_to_pm);
+ gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, infobar_unsupported);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, infobar_disabled);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, listbox);
gtk_widget_class_bind_template_child (widget_class, CcNightLightPage, night_light_toggle_switch);
@@ -700,6 +723,10 @@ cc_night_light_page_init (CcNightLightPage *self)
G_CALLBACK (dialog_clock_settings_changed_cb),
self, G_CONNECT_SWAPPED);
+ self->config_manager = cc_display_config_manager_dbus_new ();
+ g_signal_connect (self->config_manager, "changed",
+ G_CALLBACK (config_manager_changed_cb), self);
+
dialog_update_state (self);
}
diff --git a/panels/display/cc-night-light-page.ui b/panels/display/cc-night-light-page.ui
index 02b14f731..cb18837ad 100644
--- a/panels/display/cc-night-light-page.ui
+++ b/panels/display/cc-night-light-page.ui
@@ -6,9 +6,45 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="halign">center</property>
<property name="valign">start</property>
<property name="orientation">vertical</property>
+ <child>
+ <object class="GtkInfoBar" id="infobar_unsupported">
+ <property name="visible">False</property>
+ <property name="name">infobar_unsupported</property>
+ <property name="message-type">warning</property>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">16</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="margin-start">6</property>
+ <property name="hexpand">False</property>
+ <property name="label" translatable="yes">Night Light unavailable</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="margin-start">6</property>
+ <property name="hexpand">False</property>
+ <property name="label" translatable="yes">This could be the result of the graphics driver being used, or the desktop being used remotely</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+
<child>
<object class="GtkInfoBar" id="infobar_disabled">
<property name="name">infobar_disabled</property>
@@ -70,8 +106,9 @@
</child>
<child>
- <object class="GtkBox">
+ <object class="GtkBox" id="night_light_settings">
<property name="visible">True</property>
+ <property name="halign">center</property>
<property name="can_focus">False</property>
<property name="margin_top">30</property>
<property name="margin_end">12</property>
--
2.34.1

View File

@ -1,99 +1,195 @@
From 73be5fcb0764cb8e7bdcbcf3ee06b833078d576a Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Sun, 31 Mar 2013 20:28:19 -0400
Subject: [PATCH] info: Switch around GNOME and distro information
From 4369e31ec541172e1c0d7c64645c7990e413bbca Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Tue, 9 Mar 2021 14:51:54 -0600
Subject: [PATCH 1/3] info-overview: add build option to control distributor
logo
This makes the distribution logo prominent, and puts GNOME version
information in the small print.
Currently, we display a 256x256 version of the OS icon from
/etc/os-release. This is too big for my taste, and it's also not
sufficient for distros that want to display a logo that is not an icon.
For instance, because we no longer display the operating system name
immediately beneath the logo, it may be desirable to use a logo variant
that includes text. This patch adds a meson build option that
distributions can use to override the logo.
https://bugzilla.gnome.org/show_bug.cgi?id=695691
Because the logo might include text, distributions may want to vary the
logo used in dark mode. A subsequent commit will add a second option for
this.
---
panels/info/cc-info-overview-panel.c | 7 ++-----
panels/info/info-overview.ui | 14 ++++++++------
2 files changed, 10 insertions(+), 11 deletions(-)
meson.build | 6 ++++++
meson_options.txt | 1 +
panels/info-overview/cc-info-overview-panel.c | 4 ++++
3 files changed, 11 insertions(+)
diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c
index 7a5879c6b..ce15e92d0 100644
--- a/panels/info/cc-info-overview-panel.c
+++ b/panels/info/cc-info-overview-panel.c
@@ -446,7 +446,7 @@ static char *
get_os_name (void)
diff --git a/meson.build b/meson.build
index e8333c0da..1661caa4b 100644
--- a/meson.build
+++ b/meson.build
@@ -50,6 +50,12 @@ foreach define: set_defines
config_h.set_quoted(define[0], define[1])
endforeach
+distributor_logo = get_option('distributor_logo')
+if (distributor_logo != '')
+ config_h.set_quoted('DISTRIBUTOR_LOGO', distributor_logo,
+ description: 'Define to absolute path of distributor logo')
+endif
+
# meson does not support octal values, so it must be handled as a
# string. See: https://github.com/mesonbuild/meson/issues/2047
config_h.set('USER_DIR_MODE', '0700',
diff --git a/meson_options.txt b/meson_options.txt
index 1b7b54810..93e551373 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -8,3 +8,4 @@ option('tracing', type: 'boolean', value: false, description: 'add extra debuggi
option('wayland', type: 'boolean', value: true, description: 'build with Wayland support')
option('profile', type: 'combo', choices: ['default','development'], value: 'default')
option('malcontent', type: 'boolean', value: false, description: 'build with malcontent support')
+option('distributor_logo', type: 'string', description: 'absolute path to distributor logo for the About panel')
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index bd0e07762..95a5904df 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -869,6 +869,9 @@ cc_info_panel_row_activated_cb (CcInfoOverviewPanel *self,
static void
setup_os_logo (CcInfoOverviewPanel *panel)
{
GHashTable *os_info;
- gchar *name, *version_id, *pretty_name, *build_id;
+ gchar *name, *version_id, *build_id;
gchar *result = NULL;
g_autofree gchar *name_version = NULL;
+#ifdef DISTRIBUTOR_LOGO
+ gtk_image_set_from_file (panel->os_logo, DISTRIBUTOR_LOGO);
+#else
g_autofree char *logo_name = g_get_os_info ("LOGO");
if (logo_name != NULL)
{
@@ -879,6 +882,7 @@ setup_os_logo (CcInfoOverviewPanel *panel)
{
gtk_image_set_from_resource (panel->os_logo, "/org/gnome/control-center/info-overview/GnomeLogoVerticalMedium.svg");
}
+#endif
}
@@ -457,12 +457,9 @@ get_os_name (void)
name = g_hash_table_lookup (os_info, "NAME");
version_id = g_hash_table_lookup (os_info, "VERSION_ID");
- pretty_name = g_hash_table_lookup (os_info, "PRETTY_NAME");
build_id = g_hash_table_lookup (os_info, "BUILD_ID");
- if (pretty_name)
- name_version = g_strdup (pretty_name);
- else if (name && version_id)
+ if (name && version_id)
name_version = g_strdup_printf ("%s %s", name, version_id);
else
name_version = g_strdup (_("Unknown"));
diff --git a/panels/info/info-overview.ui b/panels/info/info-overview.ui
index 219a83c4c..aa87fbec2 100644
--- a/panels/info/info-overview.ui
+++ b/panels/info/info-overview.ui
@@ -12,13 +12,14 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">18</property>
+ <property name="spacing">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkImage" id="system_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="resource">/org/gnome/control-center/info/GnomeLogoVerticalMedium.svg</property>
+ <property name="pixel_size">128</property>
+ <property name="icon_name">fedora-logo-icon</property>
</object>
<packing>
<property name="expand">False</property>
@@ -27,11 +28,12 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="version_label">
+ <object class="GtkLabel" id="os_name_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">Version 3.0</property>
<property name="selectable">True</property>
+ <property name="margin-bottom">24</property>
<attributes>
<attribute name="scale" value="1.25"/>
</attributes>
@@ -118,8 +120,8 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
- <property name="label" translatable="yes" comments="To translators: this field contains the distro name and version">OS name</property>
- <property name="mnemonic_widget">os_name_label</property>
+ <property name="label">GNOME</property>
+ <property name="mnemonic_widget">version_label</property>
<style>
<class name="dim-label"/>
</style>
@@ -228,7 +230,7 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="os_name_label">
+ <object class="GtkLabel" id="version_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
static void
--
2.13.0
GitLab
From f08669767ca87ff99fc08e1a7334c8f2e7f18f0b Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Tue, 9 Mar 2021 16:02:46 -0600
Subject: [PATCH 2/3] info-overview: add build option to specify a dark mode
logo variant
Let's allow distributions to specify a different logo to use when using
a dark GTK theme. This is best-effort only since it relies on the
convention that dark themes must end with "dark" and therefore will fail
for a theme named "midnight" or anything that doesn't match convention.
---
meson.build | 5 ++++
meson_options.txt | 1 +
panels/info-overview/cc-info-overview-panel.c | 27 +++++++++++++++++++
3 files changed, 33 insertions(+)
diff --git a/meson.build b/meson.build
index 1661caa4b..124171626 100644
--- a/meson.build
+++ b/meson.build
@@ -54,6 +54,11 @@ distributor_logo = get_option('distributor_logo')
if (distributor_logo != '')
config_h.set_quoted('DISTRIBUTOR_LOGO', distributor_logo,
description: 'Define to absolute path of distributor logo')
+ dark_mode_distributor_logo = get_option('dark_mode_distributor_logo')
+ if (dark_mode_distributor_logo != '')
+ config_h.set_quoted('DARK_MODE_DISTRIBUTOR_LOGO', dark_mode_distributor_logo,
+ description: 'Define to absolute path of distributor logo for use in dark mode')
+ endif
endif
# meson does not support octal values, so it must be handled as a
diff --git a/meson_options.txt b/meson_options.txt
index 93e551373..5305c8606 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -9,3 +9,4 @@ option('wayland', type: 'boolean', value: true, description: 'build with Wayland
option('profile', type: 'combo', choices: ['default','development'], value: 'default')
option('malcontent', type: 'boolean', value: false, description: 'build with malcontent support')
option('distributor_logo', type: 'string', description: 'absolute path to distributor logo for the About panel')
+option('dark_mode_distributor_logo', type: 'string', description: 'absolute path to distributor logo dark mode variant')
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index 95a5904df..cb20e16b1 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -866,10 +866,37 @@ cc_info_panel_row_activated_cb (CcInfoOverviewPanel *self,
open_software_update (self);
}
+#ifdef DARK_MODE_DISTRIBUTOR_LOGO
+static gboolean
+is_dark_mode (CcInfoOverviewPanel *panel)
+{
+ GdkScreen *screen;
+ GtkSettings *settings;
+ g_autofree char *theme_name = NULL;
+
+ theme_name = g_strdup (g_getenv ("GTK_THEME"));
+ if (theme_name != NULL)
+ return g_str_has_suffix (theme_name, "dark");
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (panel));
+ settings = gtk_settings_get_for_screen (screen);
+
+ g_object_get (settings, "gtk-theme-name", &theme_name, NULL);
+ return theme_name != NULL && g_str_has_suffix (theme_name, "dark");
+}
+#endif
+
static void
setup_os_logo (CcInfoOverviewPanel *panel)
{
#ifdef DISTRIBUTOR_LOGO
+#ifdef DARK_MODE_DISTRIBUTOR_LOGO
+ if (is_dark_mode (panel))
+ {
+ gtk_image_set_from_file (panel->os_logo, DARK_MODE_DISTRIBUTOR_LOGO);
+ return;
+ }
+#endif
gtk_image_set_from_file (panel->os_logo, DISTRIBUTOR_LOGO);
#else
g_autofree char *logo_name = g_get_os_info ("LOGO");
--
GitLab
From c379ccc4e8f0bcdee78361f134ba29d3a25f7528 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Wed, 10 Mar 2021 11:30:57 -0600
Subject: [PATCH 3/3] info-overview: reduce size of logo when using icon from
/etc/os-release
When using the icon from /etc/os-release, display it as 128x128 rather
than 256x256. In distributions that don't ship a 128x128, such as
Fedora, this results in the 256x256 icon being scaled down to a
reasonable size. 256x256 is so large here as to be clearly undesirable.
128x128 is also the size that Ubuntu uses in its downstream patch. Might
as well reduce the need for patching as far as possible, even though
Fedora doesn't plan to use this codepath.
---
panels/info-overview/cc-info-overview-panel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index cb20e16b1..3575b90c5 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -903,7 +903,7 @@ setup_os_logo (CcInfoOverviewPanel *panel)
if (logo_name != NULL)
{
gtk_image_set_from_icon_name (panel->os_logo, logo_name, GTK_ICON_SIZE_INVALID);
- gtk_image_set_pixel_size (panel->os_logo, 256);
+ gtk_image_set_pixel_size (panel->os_logo, 128);
}
else
{
--
GitLab

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,199 @@
From 960ebdb61c947ca9b3e3cde60c45a514b4da5113 Mon Sep 17 00:00:00 2001
From: Dirk Su <dirk.su@canonical.com>
Date: Mon, 1 Aug 2022 20:06:51 +0000
Subject: [PATCH] panels: wwan: Add WWAN 5G connection support
---
panels/wwan/cc-wwan-device.c | 151 +++++++++++++++++++++++++++---
panels/wwan/cc-wwan-mode-dialog.c | 5 +
2 files changed, 145 insertions(+), 11 deletions(-)
diff --git a/panels/wwan/cc-wwan-device.c b/panels/wwan/cc-wwan-device.c
index 55a627a5a..3d5fc8b83 100644
--- a/panels/wwan/cc-wwan-device.c
+++ b/panels/wwan/cc-wwan-device.c
@@ -992,19 +992,148 @@ cc_wwan_device_get_string_from_mode (CcWwanDevice *self,
g_return_val_if_fail (CC_IS_WWAN_DEVICE (self), NULL);
g_return_val_if_fail (allowed != 0, NULL);
+ if (allowed == MM_MODEM_MODE_2G)
+ return g_strdup (_("2G Only"));
+
+ if (allowed == MM_MODEM_MODE_3G)
+ return g_strdup (_("3G Only"));
+
+ if (allowed == MM_MODEM_MODE_4G)
+ return g_strdup (_("4G Only"));
+
+ if (allowed == MM_MODEM_MODE_5G)
+ return g_strdup (_("5G Only"));
+
str = g_string_sized_new (10);
- if (allowed & MM_MODEM_MODE_2G)
- APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_2G, preferred, "2G");
- if (allowed & MM_MODEM_MODE_3G)
- APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_3G, preferred, "3G");
- if (allowed & MM_MODEM_MODE_4G)
- APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_4G, preferred, "4G");
-
- if (allowed == MM_MODEM_MODE_2G ||
- allowed == MM_MODEM_MODE_3G ||
- allowed == MM_MODEM_MODE_4G)
- g_string_append (str, _(" Only"));
+ if (allowed & MM_MODEM_MODE_2G &&
+ allowed & MM_MODEM_MODE_3G &&
+ allowed & MM_MODEM_MODE_4G &&
+ allowed & MM_MODEM_MODE_5G)
+ {
+ if (preferred & MM_MODEM_MODE_5G)
+ g_string_append (str, _("2G, 3G, 4G, 5G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_4G)
+ g_string_append (str, _("2G, 3G, 4G (Preferred), 5G"));
+ else if (preferred & MM_MODEM_MODE_3G)
+ g_string_append (str, _("2G, 3G (Preferred), 4G, 5G"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("2G (Preferred), 3G, 4G, 5G"));
+ else
+ g_string_append (str, _("2G, 3G, 4G, 5G"));
+ }
+ else if (allowed & MM_MODEM_MODE_2G &&
+ allowed & MM_MODEM_MODE_3G &&
+ allowed & MM_MODEM_MODE_4G)
+ {
+ if (preferred & MM_MODEM_MODE_4G)
+ g_string_append (str, _("2G, 3G, 4G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_3G)
+ g_string_append (str, _("2G, 3G (Preferred), 4G"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("2G (Preferred), 3G, 4G"));
+ else
+ g_string_append (str, _("2G, 3G, 4G"));
+ }
+ else if (allowed & MM_MODEM_MODE_3G &&
+ allowed & MM_MODEM_MODE_4G &&
+ allowed & MM_MODEM_MODE_5G)
+ {
+ if (preferred & MM_MODEM_MODE_5G)
+ g_string_append (str, _("3G, 4G, 5G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_4G)
+ g_string_append (str, _("3G, 4G (Preferred), 5G"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("3G (Preferred), 4G, 5G"));
+ else
+ g_string_append (str, _("3G, 4G, 5G"));
+ }
+ else if (allowed & MM_MODEM_MODE_2G &&
+ allowed & MM_MODEM_MODE_4G &&
+ allowed & MM_MODEM_MODE_5G)
+ {
+ if (preferred & MM_MODEM_MODE_5G)
+ g_string_append (str, _("2G, 4G, 5G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_4G)
+ g_string_append (str, _("2G, 4G (Preferred), 5G"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("2G (Preferred), 4G, 5G"));
+ else
+ g_string_append (str, _("2G, 4G, 5G"));
+ }
+ else if (allowed & MM_MODEM_MODE_2G &&
+ allowed & MM_MODEM_MODE_3G &&
+ allowed & MM_MODEM_MODE_5G)
+ {
+ if (preferred & MM_MODEM_MODE_5G)
+ g_string_append (str, _("2G, 3G, 5G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_3G)
+ g_string_append (str, _("2G, 3G (Preferred), 5G"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("2G (Preferred), 3G, 5G"));
+ else
+ g_string_append (str, _("2G, 3G, 5G"));
+ }
+ else if (allowed & MM_MODEM_MODE_3G &&
+ allowed & MM_MODEM_MODE_4G)
+ {
+ if (preferred & MM_MODEM_MODE_4G)
+ g_string_append (str, _("3G, 4G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_3G)
+ g_string_append (str, _("3G (Preferred), 4G"));
+ else
+ g_string_append (str, _("3G, 4G"));
+ }
+ else if (allowed & MM_MODEM_MODE_2G &&
+ allowed & MM_MODEM_MODE_4G)
+ {
+ if (preferred & MM_MODEM_MODE_4G)
+ g_string_append (str, _("2G, 4G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("2G (Preferred), 4G"));
+ else
+ g_string_append (str, _("2G, 4G"));
+ }
+ else if (allowed & MM_MODEM_MODE_2G &&
+ allowed & MM_MODEM_MODE_3G)
+ {
+ if (preferred & MM_MODEM_MODE_3G)
+ g_string_append (str, _("2G, 3G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("2G (Preferred), 3G"));
+ else
+ g_string_append (str, _("2G, 3G"));
+ }
+ else if (allowed & MM_MODEM_MODE_2G &&
+ allowed & MM_MODEM_MODE_5G)
+ {
+ if (preferred & MM_MODEM_MODE_5G)
+ g_string_append (str, _("2G, 5G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_2G)
+ g_string_append (str, _("2G (Preferred), 5G"));
+ else
+ g_string_append (str, _("2G, 5G"));
+ }
+ else if (allowed & MM_MODEM_MODE_3G &&
+ allowed & MM_MODEM_MODE_5G)
+ {
+ if (preferred & MM_MODEM_MODE_5G)
+ g_string_append (str, _("3G, 5G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_3G)
+ g_string_append (str, _("3G (Preferred), 5G"));
+ else
+ g_string_append (str, _("3G, 5G"));
+ }
+ else if (allowed & MM_MODEM_MODE_4G &&
+ allowed & MM_MODEM_MODE_5G)
+ {
+ if (preferred & MM_MODEM_MODE_5G)
+ g_string_append (str, _("4G, 5G (Preferred)"));
+ else if (preferred & MM_MODEM_MODE_4G)
+ g_string_append (str, _("4G (Preferred), 5G"));
+ else
+ g_string_append (str, _("4G, 5G"));
+ }
if (str->len == 0)
return g_string_free (str, TRUE);
diff --git a/panels/wwan/cc-wwan-mode-dialog.c b/panels/wwan/cc-wwan-mode-dialog.c
index e5917a41c..5dbdd884e 100644
--- a/panels/wwan/cc-wwan-mode-dialog.c
+++ b/panels/wwan/cc-wwan-mode-dialog.c
@@ -163,12 +163,17 @@ cc_wwan_mode_dialog_update (CcWwanModeDialog *self)
{
MMModemMode allowed;
MMModemMode modes[][2] = {
+ {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, MM_MODEM_MODE_5G},
+ {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, 0},
+ {MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, MM_MODEM_MODE_5G},
+ {MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, 0},
{MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, MM_MODEM_MODE_4G},
{MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, 0},
{MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, MM_MODEM_MODE_4G},
{MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, 0},
{MM_MODEM_MODE_2G | MM_MODEM_MODE_3G, MM_MODEM_MODE_3G},
{MM_MODEM_MODE_2G | MM_MODEM_MODE_3G, 0},
+ {MM_MODEM_MODE_5G, 0},
{MM_MODEM_MODE_4G, 0},
{MM_MODEM_MODE_3G, 0},
{MM_MODEM_MODE_2G, 0},
--
2.37.1

File diff suppressed because it is too large Load Diff

View File

@ -1,644 +0,0 @@
--- gnome-control-center-3.28.2/panels/printers/cc-printers-panel.c
+++ gnome-control-center-3.28.2/panels/printers/cc-printers-panel.c
@@ -105,6 +105,8 @@ struct _CcPrintersPanelPrivate
gchar *renamed_printer_name;
gchar *old_printer_name;
gchar *deleted_printer_name;
+ GList *deleted_printers;
+ GObject *reference;
GHashTable *printer_entries;
gboolean entries_filled;
@@ -267,18 +269,40 @@ printer_removed_cb (GObject *source
GAsyncResult *result,
gpointer user_data)
{
- GError *error = NULL;
+ PpPrinter *printer = PP_PRINTER (source_object);
+ g_autoptr(GError) error = NULL;
+ g_autofree gchar *printer_name = NULL;
- pp_printer_delete_finish (PP_PRINTER (source_object), result, &error);
- g_object_unref (source_object);
+ g_object_get (printer, "printer-name", &printer_name, NULL);
+ pp_printer_delete_finish (printer, result, &error);
- if (error != NULL)
+ if (user_data != NULL)
{
- g_warning ("Printer could not be deleted: %s", error->message);
- g_error_free (error);
+ g_autoptr(GObject) reference = G_OBJECT (user_data);
+
+ if (g_object_get_data (reference, "self") != NULL)
+ {
+ CcPrintersPanel *self = CC_PRINTERS_PANEL (g_object_get_data (reference, "self"));
+ CcPrintersPanelPrivate *priv = self->priv;
+ GList *iter;
+
+ for (iter = priv->deleted_printers; iter != NULL; iter = iter->next)
+ {
+ if (g_strcmp0 (iter->data, printer_name) == 0)
+ {
+ g_free (iter->data);
+ priv->deleted_printers = g_list_delete_link (priv->deleted_printers, iter);
+ break;
+ }
+ }
+ }
}
+
+ if (error != NULL)
+ g_warning ("Printer could not be deleted: %s", error->message);
}
+
static void
cc_printers_panel_dispose (GObject *object)
{
@@ -368,6 +392,12 @@ cc_printers_panel_dispose (GObject *obje
g_clear_pointer (&priv->printer_entries, g_hash_table_destroy);
+ g_list_free_full (priv->deleted_printers, g_free);
+ priv->deleted_printers = NULL;
+ if (priv->reference != NULL)
+ g_object_set_data (priv->reference, "self", NULL);
+ g_clear_object (&priv->reference);
+
G_OBJECT_CLASS (cc_printers_panel_parent_class)->dispose (object);
}
@@ -740,13 +770,16 @@ on_printer_deletion_undone (GtkButton *b
{
CcPrintersPanelPrivate *priv;
CcPrintersPanel *self = (CcPrintersPanel*) user_data;
+ GtkWidget *widget;
priv = PRINTERS_PANEL_PRIVATE (self);
gtk_revealer_set_reveal_child (priv->notification, FALSE);
g_clear_pointer (&priv->deleted_printer_name, g_free);
- actualize_printers_list (self);
+
+ widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "content");
+ gtk_list_box_invalidate_filter (GTK_LIST_BOX (widget));
cancel_notification_timeout (self);
}
@@ -768,9 +801,11 @@ on_notification_dismissed (GtkButton *bu
pp_printer_delete_async (printer,
NULL,
printer_removed_cb,
- NULL);
+ g_object_ref (priv->reference));
- g_clear_pointer (&priv->deleted_printer_name, g_free);
+ priv->deleted_printers = g_list_prepend (priv->deleted_printers, priv->deleted_printer_name);
+ priv->deleted_printer_name = NULL;
+ g_object_unref (printer);
}
gtk_revealer_set_reveal_child (priv->notification, FALSE);
@@ -793,8 +828,7 @@ on_printer_deleted (PpPrinterEntry *prin
GtkLabel *label;
gchar *notification_message;
gchar *printer_name;
-
- gtk_widget_hide (GTK_WIDGET (printer_entry));
+ GtkWidget *widget;
priv = PRINTERS_PANEL_PRIVATE (self);
@@ -816,6 +850,9 @@ on_printer_deleted (PpPrinterEntry *prin
priv->deleted_printer_name = g_strdup (printer_name);
g_free (printer_name);
+ widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "content");
+ gtk_list_box_invalidate_filter (GTK_LIST_BOX (widget));
+
gtk_revealer_set_reveal_child (priv->notification, TRUE);
priv->remove_printer_timeout_id = g_timeout_add_seconds (10, on_remove_printer_timeout, self);
@@ -910,6 +947,36 @@ set_current_page (GObject *source_o
}
static void
+destroy_nonexisting_entries (PpPrinterEntry *entry,
+ gpointer user_data)
+{
+ CcPrintersPanelPrivate *priv;
+ CcPrintersPanel *self = (CcPrintersPanel *) user_data;
+ g_autofree gchar *printer_name = NULL;
+ gboolean exists = FALSE;
+ gint i;
+
+ priv = PRINTERS_PANEL_PRIVATE (self);
+
+ g_object_get (G_OBJECT (entry), "printer-name", &printer_name, NULL);
+
+ for (i = 0; i < priv->num_dests; i++)
+ {
+ if (g_strcmp0 (priv->dests[i].name, printer_name) == 0)
+ {
+ exists = TRUE;
+ break;
+ }
+ }
+
+ if (!exists)
+ {
+ gtk_widget_destroy (GTK_WIDGET (entry));
+ g_hash_table_remove (priv->printer_entries, printer_name);
+ }
+}
+
+static void
actualize_printers_list_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
@@ -920,6 +987,7 @@ actualize_printers_list_cb (GObject
PpCups *cups = PP_CUPS (source_object);
PpCupsDests *cups_dests;
gboolean new_printer_available = FALSE;
+ gpointer item;
GError *error = NULL;
int i;
@@ -950,7 +1018,7 @@ actualize_printers_list_cb (GObject
gtk_stack_set_visible_child_name (GTK_STACK (widget), "printers-list");
widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "content");
- gtk_container_foreach (GTK_CONTAINER (widget), (GtkCallback) gtk_widget_destroy, NULL);
+ gtk_container_foreach (GTK_CONTAINER (widget), (GtkCallback) destroy_nonexisting_entries, self);
for (i = 0; i < priv->num_dests; i++)
{
@@ -961,13 +1029,14 @@ actualize_printers_list_cb (GObject
for (i = 0; i < priv->num_dests; i++)
{
- if (g_strcmp0 (priv->dests[i].name, priv->deleted_printer_name) == 0)
- continue;
-
if (new_printer_available && g_strcmp0 (priv->dests[i].name, priv->old_printer_name) == 0)
continue;
- add_printer_entry (self, priv->dests[i]);
+ item = g_hash_table_lookup (priv->printer_entries, priv->dests[i].name);
+ if (item != NULL)
+ pp_printer_entry_update (PP_PRINTER_ENTRY (item), priv->dests[i], priv->is_authorized);
+ else
+ add_printer_entry (self, priv->dests[i]);
}
if (!priv->entries_filled)
@@ -983,6 +1052,30 @@ actualize_printers_list_cb (GObject
}
update_sensitivity (user_data);
+
+ if (priv->new_printer_name != NULL)
+ {
+ GtkScrolledWindow *scrolled_window;
+ GtkAllocation allocation;
+ GtkAdjustment *adjustment;
+ GtkWidget *printer_entry;
+
+ /* Scroll the view to show the newly added printer-entry. */
+ scrolled_window = GTK_SCROLLED_WINDOW (gtk_builder_get_object (priv->builder,
+ "scrolled-window"));
+ adjustment = gtk_scrolled_window_get_vadjustment (scrolled_window);
+
+ printer_entry = GTK_WIDGET (g_hash_table_lookup (priv->printer_entries,
+ priv->new_printer_name));
+ if (printer_entry != NULL)
+ {
+ gtk_widget_get_allocation (printer_entry, &allocation);
+ g_clear_pointer (&priv->new_printer_name, g_free);
+
+ gtk_adjustment_set_value (adjustment,
+ allocation.y - gtk_widget_get_margin_top (printer_entry));
+ }
+ }
}
static void
@@ -1028,10 +1121,6 @@ new_printer_dialog_response_cb (PpNewPri
{
CcPrintersPanelPrivate *priv;
CcPrintersPanel *self = (CcPrintersPanel*) user_data;
- GtkScrolledWindow *scrolled_window;
- GtkAllocation allocation;
- GtkAdjustment *adjustment;
- GtkWidget *printer_entry;
priv = PRINTERS_PANEL_PRIVATE (self);
@@ -1059,22 +1148,6 @@ new_printer_dialog_response_cb (PpNewPri
}
actualize_printers_list (self);
-
- if (priv->new_printer_name == NULL)
- return;
-
- /* Scroll the view to show the newly added printer-entry. */
- scrolled_window = GTK_SCROLLED_WINDOW (gtk_builder_get_object (priv->builder,
- "scrolled-window"));
- adjustment = gtk_scrolled_window_get_vadjustment (scrolled_window);
-
- printer_entry = GTK_WIDGET (g_hash_table_lookup (priv->printer_entries,
- priv->new_printer_name));
- gtk_widget_get_allocation (printer_entry, &allocation);
- g_clear_pointer (&priv->new_printer_name, g_free);
-
- gtk_adjustment_set_value (adjustment,
- allocation.y - gtk_widget_get_margin_top (printer_entry));
}
static void
@@ -1288,11 +1361,17 @@ filter_function (GtkListBoxRow *row,
CcPrintersPanel *self = (CcPrintersPanel*) user_data;
GtkWidget *search_entry;
gboolean retval;
- gchar *search;
- gchar *name;
- gchar *location;
- gchar *printer_name;
- gchar *printer_location;
+ g_autofree gchar *search = NULL;
+ g_autofree gchar *name = NULL;
+ g_autofree gchar *location = NULL;
+ g_autofree gchar *printer_name = NULL;
+ g_autofree gchar *printer_location = NULL;
+ GList *iter;
+
+ g_object_get (G_OBJECT (row),
+ "printer-name", &printer_name,
+ "printer-location", &printer_location,
+ NULL);
priv = PRINTERS_PANEL_PRIVATE (self);
@@ -1300,31 +1379,72 @@ filter_function (GtkListBoxRow *row,
gtk_builder_get_object (priv->builder, "search-entry");
if (gtk_entry_get_text_length (GTK_ENTRY (search_entry)) == 0)
- return TRUE;
+ {
+ retval = TRUE;
+ }
+ else
+ {
+ name = cc_util_normalize_casefold_and_unaccent (printer_name);
+ location = cc_util_normalize_casefold_and_unaccent (printer_location);
- g_object_get (G_OBJECT (row),
- "printer-name", &printer_name,
- "printer-location", &printer_location,
- NULL);
+ search = cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (search_entry)));
- name = cc_util_normalize_casefold_and_unaccent (printer_name);
- location = cc_util_normalize_casefold_and_unaccent (printer_location);
+ retval = strstr (name, search) != NULL;
+ if (location != NULL)
+ retval = retval || (strstr (location, search) != NULL);
+ }
- g_free (printer_name);
- g_free (printer_location);
+ if (priv->deleted_printer_name != NULL &&
+ g_strcmp0 (priv->deleted_printer_name, printer_name) == 0)
+ {
+ retval = FALSE;
+ }
- search = cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (search_entry)));
+ if (priv->deleted_printers != NULL)
+ {
+ for (iter = priv->deleted_printers; iter != NULL; iter = iter->next)
+ {
+ if (g_strcmp0 (iter->data, printer_name) == 0)
+ {
+ retval = FALSE;
+ break;
+ }
+ }
+ }
+ return retval;
+}
- retval = strstr (name, search) != NULL;
- if (location != NULL)
- retval = retval || (strstr (location, search) != NULL);
+static gint
+sort_function (GtkListBoxRow *row1,
+ GtkListBoxRow *row2,
+ gpointer user_data)
+{
+ g_autofree gchar *printer_name1 = NULL;
+ g_autofree gchar *printer_name2 = NULL;
- g_free (search);
- g_free (name);
- g_free (location);
+ g_object_get (G_OBJECT (row1),
+ "printer-name", &printer_name1,
+ NULL);
- return retval;
+ g_object_get (G_OBJECT (row2),
+ "printer-name", &printer_name2,
+ NULL);
+
+ if (printer_name1 != NULL)
+ {
+ if (printer_name2 != NULL)
+ return g_ascii_strcasecmp (printer_name1, printer_name2);
+ else
+ return 1;
+ }
+ else
+ {
+ if (printer_name2 != NULL)
+ return -1;
+ else
+ return 0;
+ }
}
static void
@@ -1364,6 +1484,8 @@ cc_printers_panel_init (CcPrintersPanel
priv->renamed_printer_name = NULL;
priv->old_printer_name = NULL;
priv->deleted_printer_name = NULL;
+ priv->deleted_printers = NULL;
+ priv->reference = g_object_new (G_TYPE_OBJECT, NULL);
priv->permission = NULL;
priv->lockdown_settings = NULL;
@@ -1380,6 +1502,8 @@ cc_printers_panel_init (CcPrintersPanel
priv->actualize_printers_list_cancellable = g_cancellable_new ();
priv->cups_status_check_cancellable = g_cancellable_new ();
+ g_object_set_data_full (priv->reference, "self", self, NULL);
+
builder_result = gtk_builder_add_objects_from_resource (priv->builder,
"/org/gnome/control-center/printers/printers.ui",
objects, &error);
@@ -1430,6 +1554,10 @@ cc_printers_panel_init (CcPrintersPanel
"search-changed",
G_CALLBACK (gtk_list_box_invalidate_filter),
widget);
+ gtk_list_box_set_sort_func (GTK_LIST_BOX (widget),
+ sort_function,
+ NULL,
+ NULL);
priv->lockdown_settings = g_settings_new ("org.gnome.desktop.lockdown");
if (priv->lockdown_settings)
--- gnome-control-center-3.28.2/panels/printers/pp-printer-entry.c
+++ gnome-control-center-3.28.2/panels/printers/pp-printer-entry.c
@@ -45,7 +45,6 @@ struct _PpPrinterEntry
{
GtkListBoxRow parent;
- gchar *printer_uri;
gchar *printer_name;
gchar *ppd_file_name;
int num_jobs;
@@ -156,10 +155,27 @@ pp_printer_entry_set_property (GObject
}
}
+static InkLevelData *
+ink_level_data_new (void)
+{
+ return g_slice_new0 (InkLevelData);
+}
+
+static void
+ink_level_data_free (InkLevelData *data)
+{
+ g_clear_pointer (&data->marker_names, g_free);
+ g_clear_pointer (&data->marker_levels, g_free);
+ g_clear_pointer (&data->marker_colors, g_free);
+ g_clear_pointer (&data->marker_types, g_free);
+ g_slice_free (InkLevelData, data);
+}
+
static void
pp_printer_entry_init (PpPrinterEntry *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
+ self->inklevel = ink_level_data_new ();
}
typedef struct {
@@ -260,9 +276,8 @@ tone_down_color (GdkRGBA *color,
}
static gboolean
-supply_levels_draw_cb (GtkWidget *widget,
- cairo_t *cr,
- PpPrinterEntry *self)
+supply_levels_draw_cb (PpPrinterEntry *self,
+ cairo_t *cr)
{
GtkStyleContext *context;
gboolean is_empty = TRUE;
@@ -271,10 +286,10 @@ supply_levels_draw_cb (GtkWidget *w
gint height;
int i;
- context = gtk_widget_get_style_context (widget);
+ context = gtk_widget_get_style_context (GTK_WIDGET (self->supply_drawing_area));
- width = gtk_widget_get_allocated_width (widget);
- height = gtk_widget_get_allocated_height (widget);
+ width = gtk_widget_get_allocated_width (GTK_WIDGET (self->supply_drawing_area));
+ height = gtk_widget_get_allocated_height (GTK_WIDGET (self->supply_drawing_area));
gtk_render_background (context, cr, 0, 0, width, height);
@@ -376,13 +391,13 @@ supply_levels_draw_cb (GtkWidget *w
if (tooltip_text)
{
- gtk_widget_set_tooltip_text (widget, tooltip_text);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (self->supply_drawing_area), tooltip_text);
g_free (tooltip_text);
}
else
{
- gtk_widget_set_tooltip_text (widget, NULL);
- gtk_widget_set_has_tooltip (widget, FALSE);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (self->supply_drawing_area), NULL);
+ gtk_widget_set_has_tooltip (GTK_WIDGET (self->supply_drawing_area), FALSE);
}
}
@@ -727,11 +742,34 @@ pp_printer_entry_new (cups_dest_t print
gboolean is_authorized)
{
PpPrinterEntry *self;
+
+ self = g_object_new (PP_PRINTER_ENTRY_TYPE, "printer-name", printer.name, NULL);
+
+ self->clean_command = pp_maintenance_command_new (self->printer_name,
+ "Clean",
+ "all",
+ /* Translators: Name of job which makes printer to clean its heads */
+ _("Clean print heads"));
+ check_clean_heads_maintenance_command (self);
+
+ g_signal_connect_object (self->supply_drawing_area, "draw", G_CALLBACK (supply_levels_draw_cb), self, G_CONNECT_SWAPPED);
+
+ pp_printer_entry_update (self, printer, is_authorized);
+
+ return self;
+}
+
+void
+pp_printer_entry_update (PpPrinterEntry *self,
+ cups_dest_t printer,
+ gboolean is_authorized)
+{
cups_ptype_t printer_type = 0;
- gboolean is_accepting_jobs;
+ gboolean is_accepting_jobs = TRUE;
gboolean ink_supply_is_empty;
gchar *instance;
gchar *printer_uri = NULL;
+ const gchar *device_uri = NULL;
gchar *location = NULL;
gchar *printer_icon_name = NULL;
gchar *default_icon_name = NULL;
@@ -798,10 +836,6 @@ pp_printer_entry_new (cups_dest_t print
N_("The optical photo conductor is no longer functioning")
};
- self = g_object_new (PP_PRINTER_ENTRY_TYPE, "printer-name", printer.name, NULL);
-
- self->inklevel = g_slice_new0 (InkLevelData);
-
if (printer.instance)
{
instance = g_strdup_printf ("%s / %s", printer.name, printer.instance);
@@ -816,7 +850,7 @@ pp_printer_entry_new (cups_dest_t print
for (i = 0; i < printer.num_options; i++)
{
if (g_strcmp0 (printer.options[i].name, "device-uri") == 0)
- self->printer_uri = printer.options[i].value;
+ device_uri = printer.options[i].value;
else if (g_strcmp0 (printer.options[i].name, "printer-uri-supported") == 0)
printer_uri = printer.options[i].value;
else if (g_strcmp0 (printer.options[i].name, "printer-type") == 0)
@@ -826,13 +860,25 @@ pp_printer_entry_new (cups_dest_t print
else if (g_strcmp0 (printer.options[i].name, "printer-state-reasons") == 0)
reason = printer.options[i].value;
else if (g_strcmp0 (printer.options[i].name, "marker-names") == 0)
- self->inklevel->marker_names = g_strcompress (printer.options[i].value);
+ {
+ g_free (self->inklevel->marker_names);
+ self->inklevel->marker_names = g_strcompress (printer.options[i].value);
+ }
else if (g_strcmp0 (printer.options[i].name, "marker-levels") == 0)
- self->inklevel->marker_levels = g_strdup (printer.options[i].value);
+ {
+ g_free (self->inklevel->marker_levels);
+ self->inklevel->marker_levels = g_strdup (printer.options[i].value);
+ }
else if (g_strcmp0 (printer.options[i].name, "marker-colors") == 0)
- self->inklevel->marker_colors = g_strdup (printer.options[i].value);
+ {
+ g_free (self->inklevel->marker_colors);
+ self->inklevel->marker_colors = g_strdup (printer.options[i].value);
+ }
else if (g_strcmp0 (printer.options[i].name, "marker-types") == 0)
- self->inklevel->marker_types = g_strdup (printer.options[i].value);
+ {
+ g_free (self->inklevel->marker_types);
+ self->inklevel->marker_types = g_strdup (printer.options[i].value);
+ }
else if (g_strcmp0 (printer.options[i].name, "printer-make-and-model") == 0)
printer_make_and_model = printer.options[i].value;
else if (g_strcmp0 (printer.options[i].name, "printer-state") == 0)
@@ -896,6 +942,11 @@ pp_printer_entry_new (cups_dest_t print
gtk_label_set_label (self->error_status, status);
gtk_widget_set_visible (GTK_WIDGET (self->printer_error), TRUE);
}
+ else
+ {
+ gtk_label_set_label (self->error_status, "");
+ gtk_widget_set_visible (GTK_WIDGET (self->printer_error), FALSE);
+ }
switch (self->printer_state)
{
@@ -921,7 +972,7 @@ pp_printer_entry_new (cups_dest_t print
break;
}
- if (printer_is_local (printer_type, self->printer_uri))
+ if (printer_is_local (printer_type, device_uri))
printer_icon_name = g_strdup ("printer");
else
printer_icon_name = g_strdup ("printer-network");
@@ -931,14 +982,8 @@ pp_printer_entry_new (cups_dest_t print
self->is_accepting_jobs = is_accepting_jobs;
self->is_authorized = is_authorized;
- self->printer_hostname = printer_get_hostname (printer_type, self->printer_uri, printer_uri);
-
- self->clean_command = pp_maintenance_command_new (self->printer_name,
- "Clean",
- "all",
- /* Translators: Name of job which makes printer to clean its heads */
- _("Clean print heads"));
- check_clean_heads_maintenance_command (self);
+ g_free (self->printer_hostname);
+ self->printer_hostname = printer_get_hostname (printer_type, device_uri, printer_uri);
gtk_image_set_from_icon_name (self->printer_icon, printer_icon_name, GTK_ICON_SIZE_DIALOG);
gtk_label_set_text (self->printer_status, printer_status);
@@ -970,7 +1015,6 @@ pp_printer_entry_new (cups_dest_t print
gtk_label_set_text (self->printer_location_address_label, location);
}
- g_signal_connect (self->supply_drawing_area, "draw", G_CALLBACK (supply_levels_draw_cb), self);
ink_supply_is_empty = supply_level_is_empty (self);
gtk_widget_set_visible (GTK_WIDGET (self->printer_inklevel_label), !ink_supply_is_empty);
gtk_widget_set_visible (GTK_WIDGET (self->supply_frame), !ink_supply_is_empty);
@@ -983,8 +1027,6 @@ pp_printer_entry_new (cups_dest_t print
g_free (instance);
g_free (printer_icon_name);
g_free (default_icon_name);
-
- return self;
}
static void
@@ -1008,6 +1050,7 @@ pp_printer_entry_dispose (GObject *objec
g_clear_pointer (&self->printer_location, g_free);
g_clear_pointer (&self->printer_make_and_model, g_free);
g_clear_pointer (&self->printer_hostname, g_free);
+ g_clear_pointer (&self->inklevel, ink_level_data_free);
if (self->get_jobs_cancellable != NULL)
{
--- gnome-control-center-3.28.2/panels/printers/pp-printer-entry.h
+++ gnome-control-center-3.28.2/panels/printers/pp-printer-entry.h
@@ -42,4 +42,8 @@ void pp_printer_entry_show_jo
void pp_printer_entry_authenticate_jobs (PpPrinterEntry *self);
+void pp_printer_entry_update (PpPrinterEntry *self,
+ cups_dest_t printer,
+ gboolean is_authorized);
+
#endif /* PP_PRINTER_ENTRY_H */

View File

@ -0,0 +1,64 @@
diff -up gnome-control-center-40.0/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in.rpminspect-desktop-fixes gnome-control-center-40.0/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in
--- gnome-control-center-40.0/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in.rpminspect-desktop-fixes 2022-02-02 14:10:24.722557740 +0100
+++ gnome-control-center-40.0/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in 2022-02-02 14:10:41.756366100 +0100
@@ -2,7 +2,7 @@
Name=Bluetooth
Comment=Turn Bluetooth on and off and connect your devices
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=bluetooth
+Icon=bluetooth-symbolic
Exec=gnome-control-center bluetooth
Terminal=false
Type=Application
diff -up gnome-control-center-40.0/panels/location/gnome-location-panel.desktop.in.in.rpminspect-desktop-fixes gnome-control-center-40.0/panels/location/gnome-location-panel.desktop.in.in
--- gnome-control-center-40.0/panels/location/gnome-location-panel.desktop.in.in.rpminspect-desktop-fixes 2022-02-02 14:11:08.849061293 +0100
+++ gnome-control-center-40.0/panels/location/gnome-location-panel.desktop.in.in 2022-02-02 14:11:20.606929011 +0100
@@ -4,7 +4,7 @@ Comment=Protect your location informatio
Exec=gnome-control-center location
# FIXME
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=location-services-active
+Icon=location-services-active-symbolic
Terminal=false
Type=Application
NoDisplay=true
diff -up gnome-control-center-40.0/panels/microphone/gnome-microphone-panel.desktop.in.in.rpminspect-desktop-fixes gnome-control-center-40.0/panels/microphone/gnome-microphone-panel.desktop.in.in
--- gnome-control-center-40.0/panels/microphone/gnome-microphone-panel.desktop.in.in.rpminspect-desktop-fixes 2022-02-02 14:12:15.652309721 +0100
+++ gnome-control-center-40.0/panels/microphone/gnome-microphone-panel.desktop.in.in 2022-02-02 14:12:28.849161249 +0100
@@ -4,7 +4,7 @@ Comment=Protect your conversations
Exec=gnome-control-center microphone
# FIXME
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=audio-input-microphone
+Icon=audio-input-microphone-symbolic
Terminal=false
Type=Application
NoDisplay=true
diff -up gnome-control-center-40.0/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in.rpminspect-desktop-fixes gnome-control-center-40.0/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in
--- gnome-control-center-40.0/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in.rpminspect-desktop-fixes 2022-02-02 14:12:50.891913256 +0100
+++ gnome-control-center-40.0/panels/thunderbolt/gnome-thunderbolt-panel.desktop.in.in 2022-02-02 14:12:59.811812903 +0100
@@ -3,7 +3,7 @@ Name=Thunderbolt
Comment=Manage Thunderbolt devices
Exec=gnome-control-center thunderbolt
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=thunderbolt
+Icon=thunderbolt-symbolic
Terminal=false
Type=Application
NoDisplay=true
diff -up gnome-control-center-40.0/panels/wwan/gnome-wwan-panel.desktop.in.in.rpminspect-desktop-fixes gnome-control-center-40.0/panels/wwan/gnome-wwan-panel.desktop.in.in
--- gnome-control-center-40.0/panels/wwan/gnome-wwan-panel.desktop.in.in.rpminspect-desktop-fixes 2022-02-02 14:09:27.862197449 +0100
+++ gnome-control-center-40.0/panels/wwan/gnome-wwan-panel.desktop.in.in 2022-02-02 14:13:34.301424876 +0100
@@ -4,11 +4,10 @@ Comment=Configure Telephony and mobile d
Exec=gnome-control-center wwan
# FIXME
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=network-cellular-signal-excellent
+Icon=network-cellular-signal-excellent-symbolic
Terminal=false
Type=Application
NoDisplay=true
-StartupNotify=true
Categories=GNOME;GTK;Settings;X-GNOME-NetworkSettings;HardwareSettings;X-GNOME-Settings-Panel;X-GNOME-ConnectivitySettings;
OnlyShowIn=GNOME;Unity;
StartupNotify=true

File diff suppressed because it is too large Load Diff

View File

@ -1,105 +1,65 @@
%define gnome_online_accounts_version 3.25.3
%define glib2_version 2.53.0
%define gnome_desktop_version 3.27.90
%define gsd_version 3.32.0-13
%define gsettings_desktop_schemas_version 3.27.2
%define glib2_version 2.56.0
%define gnome_desktop_version 3.35.4
%define gsd_version 3.35.0
%define gsettings_desktop_schemas_version 3.37.1
%define upower_version 0.99.8
%define gtk3_version 3.22.20
%define upower_version 0.99.6
%define cheese_version 3.28.0
%define gnome_bluetooth_version 3.18.2
%define nm_version 1.24
%define power_profiles_daemon_version 0.9.0
%global tarball_version %%(echo %{version} | tr '~' '.')
Name: gnome-control-center
Version: 3.28.2
Release: 37%{?dist}
Version: 40.0
Release: 30%{?dist}
Summary: Utilities to configure the GNOME desktop
License: GPLv2+ and CC-BY-SA
URL: http://www.gnome.org
Source0: https://download.gnome.org/sources/gnome-control-center/3.28/gnome-control-center-%{version}.tar.xz
Source0: https://download.gnome.org/sources/gnome-control-center/40/gnome-control-center-%{tarball_version}.tar.xz
# https://bugzilla.gnome.org/show_bug.cgi?id=695691
# https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/965
Patch0: distro-logo.patch
# thunderbolt panel backported to 3.28.x
# https://gitlab.gnome.org/gicmo/gnome-control-center/commits/thunderbolt_3_28_1
Patch1: 0001-shell-Don-t-set-per-panel-icon.patch
Patch2: 0002-shell-Icon-name-helper-returns-symbolic-name.patch
Patch3: 0003-thunderbolt-new-panel-for-device-management.patch
Patch4: 0004-thunderbolt-move-to-the-Devices-page.patch
# Customized for RHEL 9 to skip the .gitlab-ci.yml file
# https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1345
# https://bugzilla.redhat.com/show_bug.cgi?id=1952274
Patch1: gnome-control-center-Drop-the-unused-build-dependency-on-Grilo.patch
Patch2: power-profiles-backport.patch
Patch3: wwan-backport-gnome-40.patch
Patch4: subscription-manager-support.patch
Patch5: application-use-icon-name-that-exists.patch
Patch6: backport-multitasking-panel.patch
Patch7: rpminspect-desktop-fixes.patch
# Backport of F29 screen sharing UI
Patch5: 0001-sharing-Enable-settings-widget-for-gnome-remote-desk.patch
Patch6: 0001-wacom-Update-Test-your-settings-button-sensitivity-o.patch
Patch7: 0001-wacom-Update-to-newer-output-setting.patch
# Subscription management
Patch80001: 0001-info-Add-subscription-manager-integration.patch
Patch80002: 0002-info-Move-helper-for-getting-subscription-status-to-.patch
Patch80003: 0003-info-Update-registration-state-in-panel-when-it-happ.patch
Patch80004: 0004-info-Better-support-registered-but-no-subscriptions-.patch
Patch9: 0001-sharing-Fix-warning-when-disabling-sharing.patch
Patch10: 0001-network-Use-g_signal_connect_object-when-dealing-wit.patch
Patch11: 0001-common-fix-udev-based-device-removal.patch
Patch12: 0001-network-Keep-a-ref-on-NetDeviceEthernet-while-a-edit.patch
Patch13: 0001-network-Make-list-in-new-VPN-dialog-fill-up-space.patch
Patch14: 0001-network-Make-IPv4-v6-pages-drive-the-scrolledwindow-.patch
Patch15: 0001-network-Update-VPN-empty-label-status-after-removing.patch
Patch16: 0001-network-Use-connect-object-on-signals.patch
Patch17: 0001-sharing-Remember-the-password-on-remote-desktop-shar.patch
Patch18: 0001-wacom-Pick-libwacom-s-Generic-Pen-stylus-if-tool-ID-.patch
Patch20: 0001-user-Support-devices-with-more-than-5-enroll-steps.patch
Patch21: backport-wacom-tool-id-fixes.patch
Patch22: 0001-power-correct-the-value-of-90-minutes-to-5400.patch
Patch23: 0001-sound-Ensure-to-preserve-sound-theme-when-changing-f.patch
Patch24: categorize-infiniband.patch
Patch25: printers-Update-entries.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1876291
Patch26: Update-translations.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1938323
Patch31: 0001-network-Populate-AP-list-from-idle-handler.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1915411
Patch32: 0002-ce-page-security-add-SAE-support.patch
Patch33: 0003-ce-page-details-add-SAE-support.patch
Patch34: 0004-net-device-wifi-Decode-SAE-AP-security.patch
Patch35: 0005-network-complete-SAE-support.patch
Patch36: 0006-Add-support-for-Enhanced-Open-WiFi-security.patch
Patch37: 0007-network-Fix-connection-selection-and-SSID-display-fo.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1938944
Patch38: 0008-network-Fix-saving-passwords-for-non-wifi-connection.patch
# Backport monitor config policy (#2001655)
Patch39: 0001-display-Only-display-configuration-options-if-apply-.patch
Patch40: 0001-displays-Don-t-enlarge-display-panel-artificially.patch
# Backport monitor config policy (#2046159)
Patch8: 0001-display-Only-display-configuration-options-if-apply-.patch
# Workaround for libnma not handling OWE https://gitlab.gnome.org/GNOME/libnma/-/issues/9
Patch41: 0001-network-Fix-OWE-settings.patch
Patch9: 0001-network-Fix-OWE-settings.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2097839
Patch42: 0001-timezone-use-blank-map.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2097838
Patch10: gnome-control-center-timezones.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2061182
Patch11: change-device-name-with-enter-key.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2057154
Patch12: display-infobar-if-night-light-unsupported.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2110581
Patch13: gnome-control-center-wwan-5g-support.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2079139
Patch43: 0001-wifi-Move-airplane-mode-widget-above-the-main-stack.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1926995
Patch44: 0001-shell-Avoid-handling-map-events-from-other-windows.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2168686
Patch14: 0001-shell-Avoid-handling-map-events-from-other-windows.patch
BuildRequires: chrpath
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
BuildRequires: docbook-style-xsl libxslt
BuildRequires: gcc
BuildRequires: gettext
BuildRequires: git
BuildRequires: libXxf86misc-devel
BuildRequires: meson
BuildRequires: pkgconfig(accountsservice)
BuildRequires: pkgconfig(cheese) >= %{cheese_version}
@ -114,14 +74,15 @@ BuildRequires: pkgconfig(gnome-desktop-3.0) >= %{gnome_desktop_version}
BuildRequires: pkgconfig(gnome-settings-daemon) >= %{gsd_version}
BuildRequires: pkgconfig(goa-1.0) >= %{gnome_online_accounts_version}
BuildRequires: pkgconfig(goa-backend-1.0)
BuildRequires: pkgconfig(grilo-0.3)
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version}
BuildRequires: pkgconfig(gsound)
BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
BuildRequires: pkgconfig(gudev-1.0)
BuildRequires: pkgconfig(ibus-1.0)
BuildRequires: pkgconfig(libcanberra-gtk3)
BuildRequires: pkgconfig(libgtop-2.0)
BuildRequires: pkgconfig(libnm)
BuildRequires: pkgconfig(libhandy-1)
BuildRequires: pkgconfig(libnm) >= %{nm_version}
BuildRequires: pkgconfig(libnma)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libpulse-mainloop-glib)
@ -135,6 +96,8 @@ BuildRequires: pkgconfig(smbclient)
BuildRequires: pkgconfig(upower-glib) >= %{upower_version}
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(udisks2)
BuildRequires: pkgconfig(gcr-3)
%ifnarch s390 s390x
BuildRequires: pkgconfig(gnome-bluetooth-1.0) >= %{gnome_bluetooth_version}
BuildRequires: pkgconfig(libwacom)
@ -147,10 +110,11 @@ Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version}
Requires: gnome-online-accounts%{?_isa} >= %{gnome_online_accounts_version}
Requires: gnome-settings-daemon%{?_isa} >= %{gsd_version}
# For g-s-d subscription manager patches
Requires: gnome-settings-daemon%{?_isa} >= 3.32.0-7
Requires: gnome-settings-daemon%{?_isa} >= 40.0.1-4
Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version}
Requires: gtk3%{?_isa} >= %{gtk3_version}
Requires: upower%{?_isa} >= %{upower_version}
Requires: power-profiles-daemon >= %{power_profiles_daemon_version}
%ifnarch s390 s390x
Requires: gnome-bluetooth%{?_isa} >= 1:%{gnome_bluetooth_version}
%endif
@ -160,30 +124,34 @@ Requires: %{name}-filesystem = %{version}-%{release}
Requires: accountsservice
Requires: alsa-lib
# For the thunderbolt panel
Requires: bolt
Recommends: bolt
# For the color panel
Requires: colord
# For the printers panel
Requires: cups-pk-helper
Requires: dbus-x11
Requires: dbus
# For the info/details panel
Requires: glx-utils
# For the user languages
Requires: iso-codes
# For the network panel
Requires: nm-connection-editor
Recommends: NetworkManager-wifi
%if 0%{?fedora}
Recommends: nm-connection-editor
# For Show Details in the color panel
Recommends: gnome-color-manager
# For the sharing panel
Requires: rygel
Recommends: gnome-remote-desktop
%if 0%{?fedora}
Recommends: rygel
%endif
# For the info/details panel
Requires: switcheroo-control
Recommends: switcheroo-control
# For the keyboard panel
Requires: /usr/bin/gkbd-keyboard-display
Recommends: vino
Recommends: system-config-printer-libs
%if 0%{?fedora} >= 35 || 0%{?rhel} >= 9
# For the power panel
Recommends: power-profiles-daemon
%endif
# Renamed in F28
Provides: control-center = 1:%{version}-%{release}
@ -212,10 +180,20 @@ can install configuration files that are picked up by the control-center
utilities.
%prep
%autosetup -p1 -Sgit
%autosetup -Sgit -p1 -n gnome-control-center-%{tarball_version}
%build
%meson -Ddocumentation=true
%meson \
-Ddocumentation=true \
%if 0%{?fedora}
-Ddistributor_logo=%{_datadir}/pixmaps/fedora_logo_med.png \
-Ddark_mode_distributor_logo=%{_datadir}/pixmaps/fedora_whitelogo_med.png \
%endif
%if 0%{?rhel}
-Ddistributor_logo=%{_datadir}/pixmaps/fedora-logo.png \
-Ddark_mode_distributor_logo=%{_datadir}/pixmaps/system-logo-white.png \
%endif
%{nil}
%meson_build
%install
@ -235,7 +213,7 @@ chrpath --delete $RPM_BUILD_ROOT%{_bindir}/gnome-control-center
%files -f %{name}.lang
%license COPYING
%doc AUTHORS NEWS README
%doc NEWS README.md
%{_bindir}/gnome-control-center
%{_datadir}/applications/*.desktop
%{_datadir}/bash-completion/completions/gnome-control-center
@ -243,10 +221,8 @@ chrpath --delete $RPM_BUILD_ROOT%{_bindir}/gnome-control-center
%{_datadir}/dbus-1/services/org.gnome.ControlCenter.service
%{_datadir}/gettext/
%{_datadir}/glib-2.0/schemas/org.gnome.ControlCenter.gschema.xml
%{_datadir}/gnome-control-center/icons/
%{_datadir}/gnome-control-center/keybindings/*.xml
%{_datadir}/gnome-control-center/pixmaps
%{_datadir}/gnome-control-center/sounds/gnome-sounds-default.xml
%{_datadir}/gnome-shell/search-providers/gnome-control-center-search-provider.ini
%{_datadir}/icons/hicolor/*/*/*
%{_datadir}/man/man1/gnome-control-center.1*
@ -258,162 +234,337 @@ chrpath --delete $RPM_BUILD_ROOT%{_bindir}/gnome-control-center
%{_datadir}/sounds/gnome/default/*/*.ogg
%{_libexecdir}/cc-remote-login-helper
%{_libexecdir}/gnome-control-center-search-provider
%{_libexecdir}/gnome-control-center-print-renderer
%files filesystem
%dir %{_datadir}/gnome-control-center
%dir %{_datadir}/gnome-control-center/keybindings
%dir %{_datadir}/gnome-control-center/sounds
%dir %{_datadir}/gnome/wm-properties
%changelog
* Mon Jan 02 2023 Felipe Borges <feborges@redhat.com> - 4.28.2-37
* Tue Jan 09 2024 Ray Strode <rstrode@redhat.com> - 40.0-30
- Handle subscription manager service not running without
crashing
Related: RHEL-20449
* Fri Feb 10 2023 Felipe Borges <feborges@redhat.com> - 40.0-29
- Fix keyboard accessibility of screen resolution list
Resolves: #1926995
Resolves: rhbz#2168686
* Mon Aug 15 2022 Felipe Borges <feborges@redhat.com> - 3.28.2-36
- Update airplane mode fix to synchronize with system changes
Resolves: #2079139
* Wed Oct 26 2022 Felipe Borges <feborges@redhat.com> - 40.0-28
- Support WWAN 5G connections
Resolves: rhbz#2110581
* Fri Jul 15 2022 Felipe Borges <feborges@redhat.com> - 3.28.2-35
- Fix issue with the airplane mode toggle visibility on Wifi panel
Resolves: #2079139
* Mon Aug 01 2022 Felipe Borges <feborges@redhat.com> - 40.0-27
- Show infobar if night light isn't supported
Resolves: rhbz#2057154
* Wed Jun 22 2022 Michael Catanzaro <mcatanzaro@redhat.com> - 3.28.2-34
* Mon Aug 01 2022 Felipe Borges <feborges@redhat.com> - 40.0-26
- Allow changing "Device Name" by pressing "Enter"
Resolves: rhbz#2061182
* Fri Jul 08 2022 Felipe Borges <feborges@redhat.com> - 40.0-25
- Backport translations for Multitasking panel
- Make Multitasking panel capable of handling Right-to-Left locales
Resolves: #2105228
* Wed Jun 22 2022 Tomas Popela <tpopela@redhat.com> - 40.0-24
- Bump the release to fix upgrades
- Related: rhbz#2097838
* Wed Jun 22 2022 Tomas Popela <tpopela@redhat.com> - 40.0-23
- Remove timezone boundaries
Resolves: #2097839
- Resolves: rhbz#2097838
* Thu Feb 24 2022 Benjamin Berg <bberg@redhat.com> - 3.28.2-33
* Thu Feb 24 2022 Benjamin Berg <bberg@redhat.com> - 40.0-22
- Work around libnma not handling OWE
Related: #2023156
Resolves: #2058163
* Thu Feb 10 2022 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-32
- Make displays panel able to fit in 800x600 resolution
Resolves: #1893650
* Fri Feb 04 2022 Jonas Ådahl <jadahl@redhat.com> - 3.28.3-31
* Fri Feb 04 2022 Jonas Ådahl <tpopela@redhat.com> - 40.0-21
- Backport monitor config policy
Resolves: #2001655
Resolves: #2046159
* Tue Jan 04 2022 Benjamin Berg <bberg@redhat.com> - 3.28.2-30
- Fix connection list AP selection and SSID display for OWE
Resolves: #2023156
- Fix saving passwords for non-wifi connections
Resolves: #1938944
* Wed Feb 02 2022 Tomas Popela <tpopela@redhat.com> - 40.0-20
- Fix rpminspect desktop files warnings
- Resolves: #2041348
* Wed Nov 10 2021 Benjamin Berg <bberg@redhat.com> - 3.28.2-29
- Backport SAE/WPA3/OWE support
Resolves: #1915411
Resolves: #2023156
- Add patch to fix wifi performance issue
Resolves: #1938323
* Fri Jan 28 2022 Felipe Borges <feborges@redhat.com> - 40.0-19
- Backport Multitasking panel
- Resolves: #2047723
* Fri Sep 10 2021 Kalev Lember <klember@redhat.com> - 3.28.2-28
- Update pt_BR translations
- Resolves: #2003069
* Thu Jan 20 2022 Felipe Borges <feborges@redhat.com> - 40.0-18
- Fix typo in the previous patch
- Resolves: #2041348
* Fri Jul 02 2021 Tomas Popela <tpopela@redhat.com> - 3.28.2-27
- Update fr, ja, zh_CN translations
- Resolves: #1933962
* Fri Jan 14 2022 Felipe Borges <feborges@redhat.com> - 40.0-17
- Set an existing Icon name in the Applications' panel desktop file
- Resolves: #2041348
* Sun Jan 24 2021 Ray Strode <rstrode@redhat.com> - 3.28.2-26
- Support Simple Content Access from subscription manager
Related: #1870837
* Tue Sep 07 2021 Kalev Lember <klember@redhat.com> - 40.0-16
- Add desktop file keywords for subscription support
- Resolves: #1937113
* Thu Dec 03 2020 Marek Kasik <mkasik@redhat.com> - 3.28.2-25
- Fix a leak found by Coverity
- Related: #1700002
* Thu Sep 02 2021 Kalev Lember <klember@redhat.com> - 40.0-15
- Forward port subscription manager support from RHEL 8
- Resolves: #1937113
* Wed Dec 02 2020 Marek Kasik <mkasik@redhat.com> - 3.28.2-24
- Fix crashes when updating printer entries
- Related: #1700002
- Resolves: #1903043
* Wed Aug 25 2021 Carlos Garnacho <cgarnach@redhat.com> - 40.0-14
- Backport WWAN panel
Resolves: #1995559
* Tue Nov 24 2020 Marek Kasik <mkasik@redhat.com> - 3.28.2-23
- Update list of printers instead of regenerating it
- Resolves: #1700002
* Fri Aug 20 2021 Carlos Garnacho <cgarnach@redhat.com> - 40.0.13
- Backport power profile changes
Resolves: #1994475
* Wed Sep 02 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-22
- Categorize Infiniband devices correctly
Resolves: #1826379
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 40.0-12
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Jun 29 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-21
- Honor sound theme changes when changing from the default theme
- Resolves: #1706008
* Tue Apr 27 2021 Debarshi Ray <rishi@fedoraproject.org> - 40.0-11
- Drop the unused build dependency on Grilo
Resolves: #1952274
* Mon Jun 29 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-20
- Fix 90min automatic sleep option to not last 80min
- Resolves: #1706076
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 40.0-10
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Fri Feb 21 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-19
- Backport tool serial/ID detection fixes
- Resolves: #1782517
* Fri Apr 02 2021 Kalev Lember <klember@redhat.com> - 40.0-9
- Only enable power-profiles-daemon on F35+ and RHEL 9+
* Thu Feb 13 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-18
- Pick "Generic Pen" correctly on unknown tool IDs
- Resolves: #1782517
* Wed Mar 31 2021 Pete Walter <pwalter@fedoraproject.org> - 40.0-8
- Add back power-profiles-daemon once more
* Thu Feb 13 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-17
- Restore remote desktop password on wayland
- Resolves: #1763207
* Wed Mar 31 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40.0-7
- Drop Recommends: power-profiles-daemon for F34
* Mon Jan 20 2020 Benjamin Berg <bberg@redhat.com> - 3.28.2-16
- Add patch to support more than 5 enroll steps
- Resolves: #1789474
* Tue Mar 30 2021 Pete Walter <pwalter@fedoraproject.org> - 40.0-6
- Use recommends for a few more things
* Mon Dec 16 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-15
- Fix another crash changing panel with Ethernet dialog opened
- Resolves: #1692299
* Tue Mar 30 2021 Bastien Nocera <bnocera@redhat.com> - 40.0-4
- Drag power-profiles-daemon in for the power panel
* Fri Dec 13 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-14
- Restore placeholder label after removing last VPN connection
- Resolves: #1782425
* Mon Mar 29 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40.0-3
- Update Fedora logos to larger versions
* Fri Dec 13 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-13
- Make IPv4/v6 configuration pages scroll to focus
- Resolves: #1671709
* Wed Mar 24 2021 Kalev Lember <klember@redhat.com> - 40.0-2
- Rebuilt
* Fri Dec 13 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-12
- Fix spacing in "new VPN" dialog
- Resolves: #1656988
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 40.0-1
- Update to 40.0
* Wed Dec 04 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-11
- Fix crash when changing panel with Ethernet dialog opened
- Resolves: #1692299
* Mon Mar 15 2021 Kalev Lember <klember@redhat.com> - 40~rc-1
- Update to 40.rc
* Wed Dec 04 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-10
- Fix Wacom tablet removal on wayland session
- Resolves: #1658001
* Wed Mar 10 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40~beta-5
- Refresh distro logo patch
- Drop Recommends: vino, let vino die!
* Tue Dec 03 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-9
- Fix possible crash when closing the wifi panel
- Resolves: #1778668
* Sun Mar 07 2021 Igor Raits <ignatenkobrain@fedoraproject.org> - 40~beta-4
- Fix modifications of the networks (Fixes: RHBZ#1932674)
* Mon Dec 01 2019 Tomas Pelka <tpelka@redhat.com> - 3.28.2-8
- Need rebuild in correct build target
- Resolves: #1749372
* Wed Feb 24 2021 Felipe Borges <feborges@redhat.com> - 40~beta-3
- Include missing patch from 40~beta-2
* Fri Nov 29 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-7
- Fix warning when disabling sharing
- Resolves: #1749372
* Tue Feb 23 2021 Felipe Borges <feborges@redhat.com> - 40~beta-2
- Fix error preventing the Region & Language panel from loading
* Mon Nov 18 2019 Kalev Lember <klember@redhat.com> - 3.28.2-6
- Add subscription manager integration
- Resolves: #1720251
* Sun Feb 21 2021 Kalev Lember <klember@redhat.com> - 40~beta-1
- Update to 40.beta
* Tue Jul 23 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-5
- Update wacom panel to newer "output" setting
- Resolves: #1718133
* Mon Feb 15 2021 Kalev Lember <klember@redhat.com> - 3.38.4-1
- Update to 3.38.4
* Mon Feb 11 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-4
- Update "Test your settings" wacom button sensitivity on device availability
- Resolves: #1656995
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.38.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Dec 13 2018 Marek Kasik <mkasik@redhat.com> - 3.28.2-3
- Recommend system-config-printer-libs as a dependency
- Resolves: #1637370
* Sat Jan 16 2021 Kalev Lember <klember@redhat.com> - 3.38.3-1
- Update to 3.38.3
* Tue Aug 14 2018 Jonas Ådahl <jadahl@redhat.com> - 3.28.2-1
- Backport screen sharing UI (rhbz#1615810)
* Fri Nov 20 2020 Kalev Lember <klember@redhat.com> - 3.38.2-2
- search: Check for either tracker 2.x or 3.x schemas
* Fri Nov 20 2020 Kalev Lember <klember@redhat.com> - 3.38.2-1
- Update to 3.38.2
* Tue Oct 13 2020 Kalev Lember <klember@redhat.com> - 3.38.1-2
- Add Recommends: nm-connection-editor for the network panel (#1887891)
* Mon Oct 5 2020 Kalev Lember <klember@redhat.com> - 3.38.1-1
- Update to 3.38.1
* Sat Sep 19 2020 Yaroslav Fedevych <yaroslav@fedevych.name> - 3.38.0-2
- Specify the minimum libnm version needed to build the package
* Sat Sep 12 2020 Kalev Lember <klember@redhat.com> - 3.38.0-1
- Update to 3.38.0
* Sun Sep 06 2020 Kalev Lember <klember@redhat.com> - 3.37.92-1
- Update to 3.37.92
* Mon Aug 17 2020 Kalev Lember <klember@redhat.com> - 3.37.90-1
- Update to 3.37.90
* Tue Aug 04 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 3.37.3-4
- Add Recommends: gnome-color-manager for the color panel
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.37.3-3
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.37.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 20 2020 Kalev Lember <klember@redhat.com> - 3.37.3-1
- Update to 3.37.3
* Mon Jul 20 2020 Kalev Lember <klember@redhat.com> - 3.36.4-1
- Update to 3.36.4
* Wed Jun 03 2020 Kalev Lember <klember@redhat.com> - 3.36.3-1
- Update to 3.36.3
* Fri May 01 2020 Kalev Lember <klember@redhat.com> - 3.36.2-1
- Update to 3.36.2
* Tue Apr 28 2020 Felipe Borges <feborges@redhat.com> - 3.36.1-2
- Add "Model" row info for Lenovo devices
* Fri Mar 27 2020 Kalev Lember <klember@redhat.com> - 3.36.1-1
- Update to 3.36.1
* Thu Mar 19 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 3.36.0-3
- No changes, bump revision to maintain upgrade path from F32
* Mon Mar 16 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 3.36.0-2
- Update distro-logo.patch to use fedora_vertical version of logo.
* Sat Mar 07 2020 Kalev Lember <klember@redhat.com> - 3.36.0-1
- Update to 3.36.0
* Mon Mar 02 2020 Kalev Lember <klember@redhat.com> - 3.35.92-1
- Update to 3.35.92
* Mon Feb 17 2020 Kalev Lember <klember@redhat.com> - 3.35.91-1
- Update to 3.35.91
* Mon Feb 03 2020 Bastien Nocera <bnocera@redhat.com> - 3.35.90-1
+ gnome-control-center-3.35.90-1
- Update to 3.35.90
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.34.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jan 16 2020 Kalev Lember <klember@redhat.com> - 3.34.2-3
- Backport a patch to fix the build with latest libgnome-desktop
* Mon Dec 09 2019 Michael Catanzaro <mcatanzaro@gnome.org> - 3.34.2-2
- Drop nm-connection-editor requires, per gnome-control-center#512
- To edit mobile broadband connections, install nm-connection-editor
* Wed Nov 27 2019 Kalev Lember <klember@redhat.com> - 3.34.2-1
- Update to 3.34.2
* Thu Oct 10 2019 Adam Williamson <awilliam@redhat.com> - 3.34.1-4
- Add patch to fix crash when selecting display with no modes (rhbz#1756553)
* Wed Oct 09 2019 Felipe Borges <feborges@redhat.com> - 3.34.1-3
- Add patch to fix parsing of addresses while adding printers (rhbz#1750394)
* Mon Oct 07 2019 Benjamin Berg <bberg@redhat.com> - 3.34.1-2
- Add patch to fix resetting of system wide format locale (rhbz#1759221)
* Mon Oct 07 2019 Kalev Lember <klember@redhat.com> - 3.34.1-1
- Update to 3.34.1
* Sat Oct 05 2019 Michael Catanzaro <mcatanzaro@gnome.org> - 3.34.0.1-3
- Add patch to fix editing wired connection settings (rhbz#1750805)
- Remove broken remote printers patch
* Wed Oct 02 2019 Michael Catanzaro <mcatanzaro@gnome.org> - 3.34.0.1-2
- Add patch to fix crash when configuring remote printers
* Mon Sep 09 2019 Kalev Lember <klember@redhat.com> - 3.34.0.1-1
- Update to 3.34.0.1
* Mon Sep 09 2019 Kalev Lember <klember@redhat.com> - 3.34.0-1
- Update to 3.34.0
* Mon Aug 12 2019 Kalev Lember <klember@redhat.com> - 3.33.90-1
- Update to 3.33.90
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.33.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Jul 21 2019 Kalev Lember <klember@redhat.com> - 3.33.3-2
- Remove libXxf86misc-devel BuildRequires as the package no longer exists
* Wed Jun 19 2019 Kalev Lember <klember@redhat.com> - 3.33.3-1
- Update to 3.33.3
* Fri May 24 2019 Kalev Lember <klember@redhat.com> - 3.32.2-1
- Update to 3.32.2
* Tue Apr 16 2019 Adam Williamson <awilliam@redhat.com> - 3.32.1-2
- Rebuild with Meson fix for #1699099
* Fri Mar 29 2019 Kalev Lember <klember@redhat.com> - 3.32.1-1
- Update to 3.32.1
* Mon Mar 11 2019 Kalev Lember <klember@redhat.com> - 3.32.0.1-1
- Update to 3.32.0.1
* Mon Mar 11 2019 Kalev Lember <klember@redhat.com> - 3.32.0-1
- Update to 3.32.0
* Mon Mar 04 2019 Kalev Lember <klember@redhat.com> - 3.31.92-1
- Update to 3.31.92
* Sat Feb 23 2019 Kevin Fenzi <kevin@scrye.com> - 3.31.90-2
- Add https://gitlab.gnome.org/GNOME/gnome-control-center/merge_requests/387.patch
to fix udisks crash
* Thu Feb 07 2019 Kalev Lember <klember@redhat.com> - 3.31.90-1
- Update to 3.31.90
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.31.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Jan 09 2019 Kalev Lember <klember@redhat.com> - 3.31.4-1
- Update to 3.31.4
* Tue Nov 20 2018 Pete Walter <pwalter@fedoraproject.org> - 3.30.2-3
- Recommend gnome-remote-desktop for the sharing panel
* Sat Nov 17 2018 Pete Walter <pwalter@fedoraproject.org> - 3.30.2-2
- Change bolt requires to recommends (#1643709)
- Change rygel requires to recommends
* Thu Nov 01 2018 Kalev Lember <klember@redhat.com> - 3.30.2-1
- Update to 3.30.2
* Thu Oct 11 2018 David Herrmann <dh.herrmann@gmail.com> - 3.30.1-4
- Reduce 'dbus-x11' dependency to 'dbus'. The xinit scripts are no longer the
canonical way to start dbus, but the 'dbus' package is nowadays required to
provide a user and system bus to its dependents.
* Wed Oct 10 2018 Benjamin Berg <bberg@redhat.com> - 3.30.1-3
- Add patch to improve background loading. The patch is not acceptable
upstream as is, but is also a good improvement on the current situation
(#1631002)
* Sun Oct 07 2018 Kalev Lember <klember@redhat.com> - 3.30.1-2
- Backport an upstream fix for a crash in the online accounts panel
* Wed Sep 26 2018 Kalev Lember <klember@redhat.com> - 3.30.1-1
- Update to 3.30.1
* Thu Sep 06 2018 Kalev Lember <klember@redhat.com> - 3.30.0-1
- Update to 3.30.0
* Sun Aug 12 2018 Kalev Lember <klember@redhat.com> - 3.29.90-1
- Update to 3.29.90
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.28.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue May 29 2018 Kalev Lember <klember@redhat.com> - 3.28.2-1
- Update to 3.28.2