Compare commits
No commits in common. "c9" and "c8" have entirely different histories.
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/gnome-control-center-40.0.tar.xz
|
||||
SOURCES/gnome-control-center-3.28.2.tar.xz
|
||||
|
@ -1 +1 @@
|
||||
06a456d779b174a29ea65801133d2b85fcc02732 SOURCES/gnome-control-center-40.0.tar.xz
|
||||
68f77d7fd2921025a65d0b0904e6db018ca7c1d0 SOURCES/gnome-control-center-3.28.2.tar.xz
|
||||
|
75
SOURCES/0001-common-fix-udev-based-device-removal.patch
Normal file
75
SOURCES/0001-common-fix-udev-based-device-removal.patch
Normal file
@ -0,0 +1,75 @@
|
||||
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
|
||||
|
@ -1,6 +1,6 @@
|
||||
From f6e0cba768d376a7f710dd8a69c17ec50c7a13a9 Mon Sep 17 00:00:00 2001
|
||||
From 22c43422f83a69d7654953db368585f168952aab Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Fri, 4 Feb 2022 11:09:24 +0100
|
||||
Date: Fri, 4 Feb 2022 11:45:53 +0100
|
||||
Subject: [PATCH] display: Only display configuration options if apply is
|
||||
allowed
|
||||
|
||||
@ -16,12 +16,11 @@ 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 | 11 ++++++
|
||||
panels/display/cc-display-panel.ui | 2 +-
|
||||
5 files changed, 57 insertions(+), 1 deletion(-)
|
||||
panels/display/cc-display-panel.c | 23 ++++++++++++
|
||||
4 files changed, 68 insertions(+)
|
||||
|
||||
diff --git a/panels/display/cc-display-config-manager-dbus.c b/panels/display/cc-display-config-manager-dbus.c
|
||||
index 653bea0b5..392140101 100644
|
||||
index 8912faaa8..7f85c3a01 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
|
||||
@ -33,16 +32,16 @@ index 653bea0b5..392140101 100644
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (CcDisplayConfigManagerDBus,
|
||||
@@ -118,6 +120,8 @@ bus_gotten (GObject *object,
|
||||
@@ -119,6 +121,8 @@ bus_gotten (GObject *object,
|
||||
CcDisplayConfigManagerDBus *self;
|
||||
GDBusConnection *connection;
|
||||
g_autoptr(GError) error = NULL;
|
||||
GError *error = NULL;
|
||||
+ g_autoptr(GDBusProxy) proxy = NULL;
|
||||
+ g_autoptr(GVariant) variant = NULL;
|
||||
|
||||
connection = g_bus_get_finish (result, &error);
|
||||
if (!connection)
|
||||
@@ -143,12 +147,35 @@ bus_gotten (GObject *object,
|
||||
@@ -145,12 +149,35 @@ bus_gotten (GObject *object,
|
||||
monitors_changed,
|
||||
self,
|
||||
NULL);
|
||||
@ -78,7 +77,7 @@ index 653bea0b5..392140101 100644
|
||||
self->cancellable = g_cancellable_new ();
|
||||
g_bus_get (G_BUS_TYPE_SESSION, self->cancellable, bus_gotten, self);
|
||||
}
|
||||
@@ -170,6 +197,14 @@ cc_display_config_manager_dbus_finalize (GObject *object)
|
||||
@@ -172,6 +199,14 @@ cc_display_config_manager_dbus_finalize (GObject *object)
|
||||
G_OBJECT_CLASS (cc_display_config_manager_dbus_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
@ -93,7 +92,7 @@ index 653bea0b5..392140101 100644
|
||||
static void
|
||||
cc_display_config_manager_dbus_class_init (CcDisplayConfigManagerDBusClass *klass)
|
||||
{
|
||||
@@ -179,6 +214,7 @@ cc_display_config_manager_dbus_class_init (CcDisplayConfigManagerDBusClass *klas
|
||||
@@ -181,6 +216,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;
|
||||
@ -116,10 +115,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 1e1b36373..64f0775e9 100644
|
||||
index 134cea0a1..22c16758c 100644
|
||||
--- a/panels/display/cc-display-config-manager.h
|
||||
+++ b/panels/display/cc-display-config-manager.h
|
||||
@@ -34,10 +34,13 @@ struct _CcDisplayConfigManagerClass
|
||||
@@ -35,10 +35,13 @@ struct _CcDisplayConfigManagerClass
|
||||
GObjectClass parent_class;
|
||||
|
||||
CcDisplayConfig * (*get_current) (CcDisplayConfigManager *self);
|
||||
@ -134,56 +133,53 @@ index 1e1b36373..64f0775e9 100644
|
||||
|
||||
G_END_DECLS
|
||||
diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c
|
||||
index 93c983f89..2cfd714d3 100644
|
||||
index 0b4fa193d..1b0db8321 100644
|
||||
--- a/panels/display/cc-display-panel.c
|
||||
+++ b/panels/display/cc-display-panel.c
|
||||
@@ -69,6 +69,8 @@ struct _CcDisplayPanel
|
||||
@@ -1245,6 +1245,22 @@ make_output_ui (CcDisplayPanel *panel)
|
||||
return listbox;
|
||||
}
|
||||
|
||||
gint rebuilding_counter;
|
||||
|
||||
+ 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))
|
||||
+static GtkWidget *
|
||||
+make_night_light_only_ui (CcDisplayPanel *panel)
|
||||
+{
|
||||
+ gtk_widget_set_visible (panel->displays_page, FALSE);
|
||||
+ return;
|
||||
+ 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);
|
||||
+}
|
||||
+
|
||||
panel->rebuilding_counter++;
|
||||
static GtkWidget *
|
||||
make_single_output_ui (CcDisplayPanel *panel)
|
||||
{
|
||||
@@ -2097,6 +2113,12 @@ on_screen_changed (CcDisplayPanel *panel)
|
||||
if (!priv->current_config)
|
||||
goto show_error;
|
||||
|
||||
+ gtk_widget_set_visible (panel->displays_page, TRUE);
|
||||
+ if (!cc_display_config_manager_get_apply_allowed (priv->manager))
|
||||
+ {
|
||||
+ main_widget = make_night_light_only_ui (panel);
|
||||
+ goto show_main_widget;
|
||||
+ }
|
||||
+
|
||||
g_list_store_remove_all (panel->primary_display_list);
|
||||
gtk_list_store_clear (panel->output_selection_list);
|
||||
ensure_monitor_labels (panel);
|
||||
|
||||
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 @@
|
||||
if (!priv->current_output)
|
||||
@@ -2121,6 +2143,7 @@ on_screen_changed (CcDisplayPanel *panel)
|
||||
main_widget = make_multi_output_ui (panel);
|
||||
}
|
||||
|
||||
<!-- 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>
|
||||
+ 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);
|
||||
--
|
||||
2.33.1
|
||||
|
||||
|
@ -0,0 +1,41 @@
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
From 43bb1d9200554527cefaa2ce969bebc80d781c73 Mon Sep 17 00:00:00 2001
|
||||
From 5b280e46029f1d857fb69ccc0db2e63b8a0e3c82 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 a63b9394a..c7cd7d940 100644
|
||||
index 52efb9da1..ce42be146 100644
|
||||
--- a/panels/network/connection-editor/ce-page-security.c
|
||||
+++ b/panels/network/connection-editor/ce-page-security.c
|
||||
@@ -460,10 +460,25 @@ ce_page_security_validate (CEPage *page,
|
||||
}
|
||||
}
|
||||
@@ -435,10 +435,25 @@ validate (CEPage *page,
|
||||
|
||||
wireless_security_unref (sec);
|
||||
} 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 (self))->security_combo) == 0) {
|
||||
+ if (gtk_combo_box_get_active ((CE_PAGE_SECURITY (page))->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);
|
||||
|
@ -0,0 +1,46 @@
|
||||
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
|
||||
|
@ -0,0 +1,72 @@
|
||||
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
|
||||
|
@ -0,0 +1,27 @@
|
||||
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
|
||||
|
@ -0,0 +1,73 @@
|
||||
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
|
||||
|
@ -0,0 +1,63 @@
|
||||
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
|
||||
|
40
SOURCES/0001-network-Use-connect-object-on-signals.patch
Normal file
40
SOURCES/0001-network-Use-connect-object-on-signals.patch
Normal file
@ -0,0 +1,40 @@
|
||||
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
|
||||
|
@ -0,0 +1,55 @@
|
||||
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
|
||||
|
@ -0,0 +1,25 @@
|
||||
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
|
||||
|
@ -0,0 +1,383 @@
|
||||
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
|
||||
|
@ -0,0 +1,30 @@
|
||||
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
|
||||
|
@ -0,0 +1,66 @@
|
||||
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
|
||||
|
@ -1,6 +1,6 @@
|
||||
From 7196e8aaea48054dd5fe825d371aec2319960897 Mon Sep 17 00:00:00 2001
|
||||
From 928eebadf0fd960472a83159c9888d946cd75ed2 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Wed, 21 Apr 2021 20:54:06 +0200
|
||||
Date: Wed, 21 Apr 2021 18:54:06 +0000
|
||||
Subject: [PATCH] shell: Avoid handling map events from other windows
|
||||
|
||||
The CcWindow tries to unset the focus when first mapping the window.
|
||||
@ -14,21 +14,19 @@ 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 | 15 ++++++++++-----
|
||||
1 file changed, 10 insertions(+), 5 deletions(-)
|
||||
shell/cc-window.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/shell/cc-window.c b/shell/cc-window.c
|
||||
index 400c39116..de4eccc04 100644
|
||||
index 9144834a4..fe5ad1ee7 100644
|
||||
--- a/shell/cc-window.c
|
||||
+++ b/shell/cc-window.c
|
||||
@@ -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)
|
||||
@@ -458,10 +458,14 @@ window_map_event_cb (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
CcWindow *self)
|
||||
{
|
||||
- /* 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
|
||||
@ -46,5 +44,5 @@ index 400c39116..de4eccc04 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.37.3
|
||||
2.37.1
|
||||
|
||||
|
47
SOURCES/0001-shell-Don-t-set-per-panel-icon.patch
Normal file
47
SOURCES/0001-shell-Don-t-set-per-panel-icon.patch
Normal file
@ -0,0 +1,47 @@
|
||||
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
|
||||
|
@ -0,0 +1,36 @@
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,102 @@
|
||||
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
|
||||
|
@ -0,0 +1,31 @@
|
||||
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
|
||||
|
@ -0,0 +1,72 @@
|
||||
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
|
||||
|
41
SOURCES/0001-wacom-Update-to-newer-output-setting.patch
Normal file
41
SOURCES/0001-wacom-Update-to-newer-output-setting.patch
Normal file
@ -0,0 +1,41 @@
|
||||
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
|
||||
|
@ -0,0 +1,599 @@
|
||||
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
|
||||
|
61
SOURCES/0002-ce-page-security-add-SAE-support.patch
Normal file
61
SOURCES/0002-ce-page-security-add-SAE-support.patch
Normal file
@ -0,0 +1,61 @@
|
||||
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
|
||||
|
@ -0,0 +1,228 @@
|
||||
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
|
||||
|
@ -0,0 +1,78 @@
|
||||
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
|
||||
|
37
SOURCES/0003-ce-page-details-add-SAE-support.patch
Normal file
37
SOURCES/0003-ce-page-details-add-SAE-support.patch
Normal file
@ -0,0 +1,37 @@
|
||||
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
|
||||
|
@ -0,0 +1,654 @@
|
||||
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
|
||||
|
6388
SOURCES/0003-thunderbolt-new-panel-for-device-management.patch
Normal file
6388
SOURCES/0003-thunderbolt-new-panel-for-device-management.patch
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
42
SOURCES/0004-net-device-wifi-Decode-SAE-AP-security.patch
Normal file
42
SOURCES/0004-net-device-wifi-Decode-SAE-AP-security.patch
Normal file
@ -0,0 +1,42 @@
|
||||
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
|
||||
|
51
SOURCES/0004-thunderbolt-move-to-the-Devices-page.patch
Normal file
51
SOURCES/0004-thunderbolt-move-to-the-Devices-page.patch
Normal file
@ -0,0 +1,51 @@
|
||||
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
|
||||
|
477
SOURCES/0005-network-complete-SAE-support.patch
Normal file
477
SOURCES/0005-network-complete-SAE-support.patch
Normal file
@ -0,0 +1,477 @@
|
||||
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
|
||||
|
114
SOURCES/0006-Add-support-for-Enhanced-Open-WiFi-security.patch
Normal file
114
SOURCES/0006-Add-support-for-Enhanced-Open-WiFi-security.patch
Normal file
@ -0,0 +1,114 @@
|
||||
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
|
||||
|
@ -0,0 +1,216 @@
|
||||
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
|
||||
|
@ -0,0 +1,51 @@
|
||||
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
|
||||
|
25594
SOURCES/Update-translations.patch
Normal file
25594
SOURCES/Update-translations.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,42 +0,0 @@
|
||||
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
102
SOURCES/backport-wacom-tool-id-fixes.patch
Normal file
102
SOURCES/backport-wacom-tool-id-fixes.patch
Normal file
@ -0,0 +1,102 @@
|
||||
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
|
||||
|
708
SOURCES/categorize-infiniband.patch
Normal file
708
SOURCES/categorize-infiniband.patch
Normal file
@ -0,0 +1,708 @@
|
||||
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 "Bluetooth’u 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 "Bluetooth’u 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
|
||||
|
@ -1,81 +0,0 @@
|
||||
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
|
||||
|
@ -1,416 +0,0 @@
|
||||
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
|
||||
|
@ -1,195 +1,99 @@
|
||||
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
|
||||
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
|
||||
|
||||
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.
|
||||
This makes the distribution logo prominent, and puts GNOME version
|
||||
information in the small print.
|
||||
|
||||
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.
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=695691
|
||||
---
|
||||
meson.build | 6 ++++++
|
||||
meson_options.txt | 1 +
|
||||
panels/info-overview/cc-info-overview-panel.c | 4 ++++
|
||||
3 files changed, 11 insertions(+)
|
||||
panels/info/cc-info-overview-panel.c | 7 ++-----
|
||||
panels/info/info-overview.ui | 14 ++++++++------
|
||||
2 files changed, 10 insertions(+), 11 deletions(-)
|
||||
|
||||
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)
|
||||
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)
|
||||
{
|
||||
+#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
|
||||
}
|
||||
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;
|
||||
|
||||
static void
|
||||
--
|
||||
GitLab
|
||||
@@ -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");
|
||||
|
||||
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);
|
||||
}
|
||||
- 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>
|
||||
--
|
||||
GitLab
|
||||
2.13.0
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,199 +0,0 @@
|
||||
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
644
SOURCES/printers-Update-entries.patch
Normal file
644
SOURCES/printers-Update-entries.patch
Normal file
@ -0,0 +1,644 @@
|
||||
--- 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 */
|
@ -1,64 +0,0 @@
|
||||
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
@ -1,65 +1,105 @@
|
||||
%define gnome_online_accounts_version 3.25.3
|
||||
%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 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 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: 40.0
|
||||
Release: 30%{?dist}
|
||||
Version: 3.28.2
|
||||
Release: 37%{?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/40/gnome-control-center-%{tarball_version}.tar.xz
|
||||
Source0: https://download.gnome.org/sources/gnome-control-center/3.28/gnome-control-center-%{version}.tar.xz
|
||||
|
||||
# https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/965
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=695691
|
||||
Patch0: distro-logo.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
|
||||
# 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
|
||||
|
||||
# Backport monitor config policy (#2046159)
|
||||
Patch8: 0001-display-Only-display-configuration-options-if-apply-.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
|
||||
|
||||
# Workaround for libnma not handling OWE https://gitlab.gnome.org/GNOME/libnma/-/issues/9
|
||||
Patch9: 0001-network-Fix-OWE-settings.patch
|
||||
Patch41: 0001-network-Fix-OWE-settings.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=2097839
|
||||
Patch42: 0001-timezone-use-blank-map.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2168686
|
||||
Patch14: 0001-shell-Avoid-handling-map-events-from-other-windows.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
|
||||
|
||||
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}
|
||||
@ -74,15 +114,14 @@ 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(libhandy-1)
|
||||
BuildRequires: pkgconfig(libnm) >= %{nm_version}
|
||||
BuildRequires: pkgconfig(libnm)
|
||||
BuildRequires: pkgconfig(libnma)
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
BuildRequires: pkgconfig(libpulse-mainloop-glib)
|
||||
@ -96,8 +135,6 @@ 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)
|
||||
@ -110,11 +147,10 @@ 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} >= 40.0.1-4
|
||||
Requires: gnome-settings-daemon%{?_isa} >= 3.32.0-7
|
||||
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
|
||||
@ -124,34 +160,30 @@ Requires: %{name}-filesystem = %{version}-%{release}
|
||||
Requires: accountsservice
|
||||
Requires: alsa-lib
|
||||
# For the thunderbolt panel
|
||||
Recommends: bolt
|
||||
Requires: bolt
|
||||
# For the color panel
|
||||
Requires: colord
|
||||
# For the printers panel
|
||||
Requires: cups-pk-helper
|
||||
Requires: dbus
|
||||
Requires: dbus-x11
|
||||
# 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
|
||||
Recommends: nm-connection-editor
|
||||
# For Show Details in the color panel
|
||||
Recommends: gnome-color-manager
|
||||
# For the sharing panel
|
||||
Recommends: gnome-remote-desktop
|
||||
%if 0%{?fedora}
|
||||
Recommends: rygel
|
||||
# For the sharing panel
|
||||
Requires: rygel
|
||||
%endif
|
||||
# For the info/details panel
|
||||
Recommends: switcheroo-control
|
||||
Requires: switcheroo-control
|
||||
# For the keyboard panel
|
||||
Requires: /usr/bin/gkbd-keyboard-display
|
||||
%if 0%{?fedora} >= 35 || 0%{?rhel} >= 9
|
||||
# For the power panel
|
||||
Recommends: power-profiles-daemon
|
||||
%endif
|
||||
|
||||
Recommends: vino
|
||||
Recommends: system-config-printer-libs
|
||||
|
||||
# Renamed in F28
|
||||
Provides: control-center = 1:%{version}-%{release}
|
||||
@ -180,20 +212,10 @@ can install configuration files that are picked up by the control-center
|
||||
utilities.
|
||||
|
||||
%prep
|
||||
%autosetup -Sgit -p1 -n gnome-control-center-%{tarball_version}
|
||||
%autosetup -p1 -Sgit
|
||||
|
||||
%build
|
||||
%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 -Ddocumentation=true
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
@ -213,7 +235,7 @@ chrpath --delete $RPM_BUILD_ROOT%{_bindir}/gnome-control-center
|
||||
|
||||
%files -f %{name}.lang
|
||||
%license COPYING
|
||||
%doc NEWS README.md
|
||||
%doc AUTHORS NEWS README
|
||||
%{_bindir}/gnome-control-center
|
||||
%{_datadir}/applications/*.desktop
|
||||
%{_datadir}/bash-completion/completions/gnome-control-center
|
||||
@ -221,8 +243,10 @@ 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*
|
||||
@ -234,337 +258,162 @@ 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
|
||||
* 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
|
||||
* Mon Jan 02 2023 Felipe Borges <feborges@redhat.com> - 4.28.2-37
|
||||
- Fix keyboard accessibility of screen resolution list
|
||||
Resolves: rhbz#2168686
|
||||
Resolves: #1926995
|
||||
|
||||
* Wed Oct 26 2022 Felipe Borges <feborges@redhat.com> - 40.0-28
|
||||
- Support WWAN 5G connections
|
||||
Resolves: rhbz#2110581
|
||||
* Mon Aug 15 2022 Felipe Borges <feborges@redhat.com> - 3.28.2-36
|
||||
- Update airplane mode fix to synchronize with system changes
|
||||
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
|
||||
* 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-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
|
||||
* Wed Jun 22 2022 Michael Catanzaro <mcatanzaro@redhat.com> - 3.28.2-34
|
||||
- Remove timezone boundaries
|
||||
- Resolves: rhbz#2097838
|
||||
Resolves: #2097839
|
||||
|
||||
* Thu Feb 24 2022 Benjamin Berg <bberg@redhat.com> - 40.0-22
|
||||
* Thu Feb 24 2022 Benjamin Berg <bberg@redhat.com> - 3.28.2-33
|
||||
- Work around libnma not handling OWE
|
||||
Resolves: #2058163
|
||||
Related: #2023156
|
||||
|
||||
* Fri Feb 04 2022 Jonas Ådahl <tpopela@redhat.com> - 40.0-21
|
||||
* 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
|
||||
- Backport monitor config policy
|
||||
Resolves: #2046159
|
||||
Resolves: #2001655
|
||||
|
||||
* 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 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 Sep 10 2021 Kalev Lember <klember@redhat.com> - 3.28.2-28
|
||||
- Update pt_BR translations
|
||||
- Resolves: #2003069
|
||||
|
||||
* Fri Jul 02 2021 Tomas Popela <tpopela@redhat.com> - 3.28.2-27
|
||||
- Update fr, ja, zh_CN translations
|
||||
- Resolves: #1933962
|
||||
|
||||
* Sun Jan 24 2021 Ray Strode <rstrode@redhat.com> - 3.28.2-26
|
||||
- Support Simple Content Access from subscription manager
|
||||
Related: #1870837
|
||||
|
||||
* Thu Dec 03 2020 Marek Kasik <mkasik@redhat.com> - 3.28.2-25
|
||||
- Fix a leak found by Coverity
|
||||
- Related: #1700002
|
||||
|
||||
* Wed Dec 02 2020 Marek Kasik <mkasik@redhat.com> - 3.28.2-24
|
||||
- Fix crashes when updating printer entries
|
||||
- Related: #1700002
|
||||
- Resolves: #1903043
|
||||
|
||||
* Tue Nov 24 2020 Marek Kasik <mkasik@redhat.com> - 3.28.2-23
|
||||
- Update list of printers instead of regenerating it
|
||||
- Resolves: #1700002
|
||||
|
||||
* Wed Sep 02 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-22
|
||||
- Categorize Infiniband devices correctly
|
||||
Resolves: #1826379
|
||||
|
||||
* 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
|
||||
|
||||
* Mon Jun 29 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-20
|
||||
- Fix 90min automatic sleep option to not last 80min
|
||||
- Resolves: #1706076
|
||||
|
||||
* Fri Feb 21 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-19
|
||||
- Backport tool serial/ID detection fixes
|
||||
- Resolves: #1782517
|
||||
|
||||
* Thu Feb 13 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-18
|
||||
- Pick "Generic Pen" correctly on unknown tool IDs
|
||||
- Resolves: #1782517
|
||||
|
||||
* Thu Feb 13 2020 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-17
|
||||
- Restore remote desktop password on wayland
|
||||
- Resolves: #1763207
|
||||
|
||||
* Mon Jan 20 2020 Benjamin Berg <bberg@redhat.com> - 3.28.2-16
|
||||
- Add patch to support more than 5 enroll steps
|
||||
- Resolves: #1789474
|
||||
|
||||
* Mon Dec 16 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-15
|
||||
- Fix another crash changing panel with Ethernet dialog opened
|
||||
- Resolves: #1692299
|
||||
|
||||
* Fri Dec 13 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-14
|
||||
- Restore placeholder label after removing last VPN connection
|
||||
- Resolves: #1782425
|
||||
|
||||
* Fri Dec 13 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-13
|
||||
- Make IPv4/v6 configuration pages scroll to focus
|
||||
- Resolves: #1671709
|
||||
|
||||
* Fri Dec 13 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-12
|
||||
- Fix spacing in "new VPN" dialog
|
||||
- Resolves: #1656988
|
||||
|
||||
* Wed Dec 04 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-11
|
||||
- Fix crash when changing panel with Ethernet dialog opened
|
||||
- Resolves: #1692299
|
||||
|
||||
* Wed Dec 04 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-10
|
||||
- Fix Wacom tablet removal on wayland session
|
||||
- Resolves: #1658001
|
||||
|
||||
* Tue Dec 03 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-9
|
||||
- Fix possible crash when closing the wifi panel
|
||||
- Resolves: #1778668
|
||||
|
||||
* Mon Dec 01 2019 Tomas Pelka <tpelka@redhat.com> - 3.28.2-8
|
||||
- Need rebuild in correct build target
|
||||
- Resolves: #1749372
|
||||
|
||||
* Fri Nov 29 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-7
|
||||
- Fix warning when disabling sharing
|
||||
- Resolves: #1749372
|
||||
|
||||
* Mon Nov 18 2019 Kalev Lember <klember@redhat.com> - 3.28.2-6
|
||||
- Add subscription manager integration
|
||||
- Resolves: #1720251
|
||||
|
||||
* Wed Feb 02 2022 Tomas Popela <tpopela@redhat.com> - 40.0-20
|
||||
- Fix rpminspect desktop files warnings
|
||||
- Resolves: #2041348
|
||||
* Tue Jul 23 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.2-5
|
||||
- Update wacom panel to newer "output" setting
|
||||
- Resolves: #1718133
|
||||
|
||||
* Fri Jan 28 2022 Felipe Borges <feborges@redhat.com> - 40.0-19
|
||||
- Backport Multitasking panel
|
||||
- Resolves: #2047723
|
||||
* 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
|
||||
|
||||
* Thu Jan 20 2022 Felipe Borges <feborges@redhat.com> - 40.0-18
|
||||
- Fix typo in the previous patch
|
||||
- Resolves: #2041348
|
||||
* Thu Dec 13 2018 Marek Kasik <mkasik@redhat.com> - 3.28.2-3
|
||||
- Recommend system-config-printer-libs as a dependency
|
||||
- Resolves: #1637370
|
||||
|
||||
* 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
|
||||
|
||||
* Tue Sep 07 2021 Kalev Lember <klember@redhat.com> - 40.0-16
|
||||
- Add desktop file keywords for subscription support
|
||||
- Resolves: #1937113
|
||||
|
||||
* Thu Sep 02 2021 Kalev Lember <klember@redhat.com> - 40.0-15
|
||||
- Forward port subscription manager support from RHEL 8
|
||||
- Resolves: #1937113
|
||||
|
||||
* Wed Aug 25 2021 Carlos Garnacho <cgarnach@redhat.com> - 40.0-14
|
||||
- Backport WWAN panel
|
||||
Resolves: #1995559
|
||||
|
||||
* Fri Aug 20 2021 Carlos Garnacho <cgarnach@redhat.com> - 40.0.13
|
||||
- Backport power profile changes
|
||||
Resolves: #1994475
|
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 40.0-12
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
|
||||
* Tue Apr 27 2021 Debarshi Ray <rishi@fedoraproject.org> - 40.0-11
|
||||
- Drop the unused build dependency on Grilo
|
||||
Resolves: #1952274
|
||||
|
||||
* 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 Apr 02 2021 Kalev Lember <klember@redhat.com> - 40.0-9
|
||||
- Only enable power-profiles-daemon on F35+ and RHEL 9+
|
||||
|
||||
* Wed Mar 31 2021 Pete Walter <pwalter@fedoraproject.org> - 40.0-8
|
||||
- Add back power-profiles-daemon once more
|
||||
|
||||
* Wed Mar 31 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40.0-7
|
||||
- Drop Recommends: power-profiles-daemon for F34
|
||||
|
||||
* Tue Mar 30 2021 Pete Walter <pwalter@fedoraproject.org> - 40.0-6
|
||||
- Use recommends for a few more things
|
||||
|
||||
* Tue Mar 30 2021 Bastien Nocera <bnocera@redhat.com> - 40.0-4
|
||||
- Drag power-profiles-daemon in for the power panel
|
||||
|
||||
* Mon Mar 29 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40.0-3
|
||||
- Update Fedora logos to larger versions
|
||||
|
||||
* Wed Mar 24 2021 Kalev Lember <klember@redhat.com> - 40.0-2
|
||||
- Rebuilt
|
||||
|
||||
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 40.0-1
|
||||
- Update to 40.0
|
||||
|
||||
* Mon Mar 15 2021 Kalev Lember <klember@redhat.com> - 40~rc-1
|
||||
- Update to 40.rc
|
||||
|
||||
* Wed Mar 10 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40~beta-5
|
||||
- Refresh distro logo patch
|
||||
- Drop Recommends: vino, let vino die!
|
||||
|
||||
* Sun Mar 07 2021 Igor Raits <ignatenkobrain@fedoraproject.org> - 40~beta-4
|
||||
- Fix modifications of the networks (Fixes: RHBZ#1932674)
|
||||
|
||||
* Wed Feb 24 2021 Felipe Borges <feborges@redhat.com> - 40~beta-3
|
||||
- Include missing patch from 40~beta-2
|
||||
|
||||
* Tue Feb 23 2021 Felipe Borges <feborges@redhat.com> - 40~beta-2
|
||||
- Fix error preventing the Region & Language panel from loading
|
||||
|
||||
* Sun Feb 21 2021 Kalev Lember <klember@redhat.com> - 40~beta-1
|
||||
- Update to 40.beta
|
||||
|
||||
* Mon Feb 15 2021 Kalev Lember <klember@redhat.com> - 3.38.4-1
|
||||
- Update to 3.38.4
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.38.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Sat Jan 16 2021 Kalev Lember <klember@redhat.com> - 3.38.3-1
|
||||
- Update to 3.38.3
|
||||
|
||||
* 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 Aug 14 2018 Jonas Ådahl <jadahl@redhat.com> - 3.28.2-1
|
||||
- Backport screen sharing UI (rhbz#1615810)
|
||||
|
||||
* Tue May 29 2018 Kalev Lember <klember@redhat.com> - 3.28.2-1
|
||||
- Update to 3.28.2
|
||||
|
Loading…
Reference in New Issue
Block a user