From f41ab920b3411205984f046365ac52d97eb086e7 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Mon, 18 Oct 2021 11:25:46 -0300 Subject: [PATCH 01/42] Disable all panels and tests We'll start the transition by disabling all panels and tests, so that we can go through them one by one, which should make the review process significantly less painful. --- meson.build | 2 +- panels/meson.build | 64 +++++++++--------- shell/cc-panel-loader.c | 140 ++++++++++++++++++++-------------------- 3 files changed, 103 insertions(+), 103 deletions(-) diff --git a/meson.build b/meson.build index 6e662e2167..e9b2d7345c 100644 --- a/meson.build +++ b/meson.build @@ -293,7 +293,7 @@ subdir('shell') subdir('search-provider') if get_option('tests') - subdir('tests') +# subdir('tests') endif if get_option('documentation') diff --git a/panels/meson.build b/panels/meson.build index f603db919a..beeb0587d0 100644 --- a/panels/meson.build +++ b/panels/meson.build @@ -1,45 +1,45 @@ subdir('common') panels = [ - 'applications', - 'background', - 'camera', - 'color', - 'datetime', - 'default-apps', - 'diagnostics', - 'display', - 'info-overview', - 'keyboard', - 'location', - 'lock', - 'microphone', - 'mouse', - 'multitasking', - 'notifications', - 'online-accounts', - 'power', - 'printers', - 'region', - 'removable-media', - 'search', - 'sharing', - 'sound', - 'universal-access', - 'usage', - 'user-accounts', - 'wwan', +# 'applications', +# 'background', +# 'camera', +# 'color', +# 'datetime', +# 'default-apps', +# 'diagnostics', +# 'display', +# 'info-overview', +# 'keyboard', +# 'location', +# 'lock', +# 'microphone', +# 'mouse', +# 'multitasking', +# 'notifications', +# 'online-accounts', +# 'power', +# 'printers', +# 'region', +# 'removable-media', +# 'search', +# 'sharing', +# 'sound', +# 'universal-access', +# 'usage', +# 'user-accounts', +# 'wwan', ] if host_is_linux - panels += ['network'] +# panels += ['network'] endif if host_is_linux_not_s390 panels += [ - 'bluetooth', - 'thunderbolt', - 'wacom' +# 'bluetooth', +# 'thunderbolt', +# 'wacom' ] endif diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c index 67f3f1b460..a6ead7e909 100644 --- a/shell/cc-panel-loader.c +++ b/shell/cc-panel-loader.c @@ -31,60 +31,60 @@ #ifndef CC_PANEL_LOADER_NO_GTYPES /* Extension points */ -extern GType cc_applications_panel_get_type (void); -extern GType cc_background_panel_get_type (void); +//extern GType cc_applications_panel_get_type (void); +//extern GType cc_background_panel_get_type (void); #ifdef BUILD_BLUETOOTH -extern GType cc_bluetooth_panel_get_type (void); +//extern GType cc_bluetooth_panel_get_type (void); #endif /* BUILD_BLUETOOTH */ -extern GType cc_color_panel_get_type (void); -extern GType cc_date_time_panel_get_type (void); -extern GType cc_default_apps_panel_get_type (void); -extern GType cc_display_panel_get_type (void); -extern GType cc_info_overview_panel_get_type (void); -extern GType cc_keyboard_panel_get_type (void); -extern GType cc_mouse_panel_get_type (void); -extern GType cc_multitasking_panel_get_type (void); +//extern GType cc_color_panel_get_type (void); +//extern GType cc_date_time_panel_get_type (void); +//extern GType cc_default_apps_panel_get_type (void); +//extern GType cc_display_panel_get_type (void); +//extern GType cc_info_overview_panel_get_type (void); +//extern GType cc_keyboard_panel_get_type (void); +//extern GType cc_mouse_panel_get_type (void); +//extern GType cc_multitasking_panel_get_type (void); #ifdef BUILD_NETWORK -extern GType cc_network_panel_get_type (void); -extern GType cc_wifi_panel_get_type (void); +//extern GType cc_network_panel_get_type (void); +//extern GType cc_wifi_panel_get_type (void); #endif /* BUILD_NETWORK */ -extern GType cc_notifications_panel_get_type (void); -extern GType cc_goa_panel_get_type (void); -extern GType cc_power_panel_get_type (void); -extern GType cc_printers_panel_get_type (void); -extern GType cc_region_panel_get_type (void); -extern GType cc_removable_media_panel_get_type (void); -extern GType cc_search_panel_get_type (void); -extern GType cc_sharing_panel_get_type (void); -extern GType cc_sound_panel_get_type (void); +//extern GType cc_notifications_panel_get_type (void); +//extern GType cc_goa_panel_get_type (void); +//extern GType cc_power_panel_get_type (void); +//extern GType cc_printers_panel_get_type (void); +//extern GType cc_region_panel_get_type (void); +//extern GType cc_removable_media_panel_get_type (void); +//extern GType cc_search_panel_get_type (void); +//extern GType cc_sharing_panel_get_type (void); +//extern GType cc_sound_panel_get_type (void); #ifdef BUILD_THUNDERBOLT -extern GType cc_bolt_panel_get_type (void); +//extern GType cc_bolt_panel_get_type (void); #endif /* BUILD_THUNDERBOLT */ -extern GType cc_ua_panel_get_type (void); -extern GType cc_user_panel_get_type (void); +//extern GType cc_ua_panel_get_type (void); +//extern GType cc_user_panel_get_type (void); #ifdef BUILD_WACOM -extern GType cc_wacom_panel_get_type (void); +//extern GType cc_wacom_panel_get_type (void); #endif /* BUILD_WACOM */ #ifdef BUILD_WWAN -extern GType cc_wwan_panel_get_type (void); +//extern GType cc_wwan_panel_get_type (void); #endif /* BUILD_WWAN */ -extern GType cc_location_panel_get_type (void); -extern GType cc_camera_panel_get_type (void); -extern GType cc_microphone_panel_get_type (void); -extern GType cc_usage_panel_get_type (void); -extern GType cc_lock_panel_get_type (void); -extern GType cc_diagnostics_panel_get_type (void); +//extern GType cc_location_panel_get_type (void); +//extern GType cc_camera_panel_get_type (void); +//extern GType cc_microphone_panel_get_type (void); +//extern GType cc_usage_panel_get_type (void); +//extern GType cc_lock_panel_get_type (void); +//extern GType cc_diagnostics_panel_get_type (void); /* Static init functions */ -extern void cc_diagnostics_panel_static_init_func (void); +//extern void cc_diagnostics_panel_static_init_func (void); #ifdef BUILD_NETWORK -extern void cc_wifi_panel_static_init_func (void); +//extern void cc_wifi_panel_static_init_func (void); #endif /* BUILD_NETWORK */ #ifdef BUILD_WACOM -extern void cc_wacom_panel_static_init_func (void); +//extern void cc_wacom_panel_static_init_func (void); #endif /* BUILD_WACOM */ #ifdef BUILD_WWAN -extern void cc_wwan_panel_static_init_func (void); +//extern void cc_wwan_panel_static_init_func (void); #endif /* BUILD_WWAN */ #define PANEL_TYPE(name, get_type, init_func) { name, get_type, init_func } @@ -97,48 +97,48 @@ extern void cc_wwan_panel_static_init_func (void); static CcPanelLoaderVtable default_panels[] = { - PANEL_TYPE("applications", cc_applications_panel_get_type, NULL), - PANEL_TYPE("background", cc_background_panel_get_type, NULL), + //PANEL_TYPE("applications", cc_applications_panel_get_type, NULL), + //PANEL_TYPE("background", cc_background_panel_get_type, NULL), #ifdef BUILD_BLUETOOTH - PANEL_TYPE("bluetooth", cc_bluetooth_panel_get_type, NULL), + //PANEL_TYPE("bluetooth", cc_bluetooth_panel_get_type, NULL), #endif - PANEL_TYPE("camera", cc_camera_panel_get_type, NULL), - PANEL_TYPE("color", cc_color_panel_get_type, NULL), - PANEL_TYPE("datetime", cc_date_time_panel_get_type, NULL), - PANEL_TYPE("default-apps", cc_default_apps_panel_get_type, NULL), - PANEL_TYPE("diagnostics", cc_diagnostics_panel_get_type, cc_diagnostics_panel_static_init_func), - PANEL_TYPE("display", cc_display_panel_get_type, NULL), - PANEL_TYPE("info-overview", cc_info_overview_panel_get_type, NULL), - PANEL_TYPE("keyboard", cc_keyboard_panel_get_type, NULL), - PANEL_TYPE("location", cc_location_panel_get_type, NULL), - PANEL_TYPE("lock", cc_lock_panel_get_type, NULL), - PANEL_TYPE("microphone", cc_microphone_panel_get_type, NULL), - PANEL_TYPE("mouse", cc_mouse_panel_get_type, NULL), - PANEL_TYPE("multitasking", cc_multitasking_panel_get_type, NULL), + //PANEL_TYPE("camera", cc_camera_panel_get_type, NULL), + //PANEL_TYPE("color", cc_color_panel_get_type, NULL), + //PANEL_TYPE("datetime", cc_date_time_panel_get_type, NULL), + //PANEL_TYPE("default-apps", cc_default_apps_panel_get_type, NULL), + //PANEL_TYPE("diagnostics", cc_diagnostics_panel_get_type, cc_diagnostics_panel_static_init_func), + //PANEL_TYPE("display", cc_display_panel_get_type, NULL), + //PANEL_TYPE("info-overview", cc_info_overview_panel_get_type, NULL), + //PANEL_TYPE("keyboard", cc_keyboard_panel_get_type, NULL), + //PANEL_TYPE("location", cc_location_panel_get_type, NULL), + //PANEL_TYPE("lock", cc_lock_panel_get_type, NULL), + //PANEL_TYPE("microphone", cc_microphone_panel_get_type, NULL), + //PANEL_TYPE("mouse", cc_mouse_panel_get_type, NULL), + //PANEL_TYPE("multitasking", cc_multitasking_panel_get_type, NULL), #ifdef BUILD_NETWORK - PANEL_TYPE("network", cc_network_panel_get_type, NULL), - PANEL_TYPE("wifi", cc_wifi_panel_get_type, cc_wifi_panel_static_init_func), + //PANEL_TYPE("network", cc_network_panel_get_type, NULL), + //PANEL_TYPE("wifi", cc_wifi_panel_get_type, cc_wifi_panel_static_init_func), #endif - PANEL_TYPE("notifications", cc_notifications_panel_get_type, NULL), - PANEL_TYPE("online-accounts", cc_goa_panel_get_type, NULL), - PANEL_TYPE("power", cc_power_panel_get_type, NULL), - PANEL_TYPE("printers", cc_printers_panel_get_type, NULL), - PANEL_TYPE("region", cc_region_panel_get_type, NULL), - PANEL_TYPE("removable-media", cc_removable_media_panel_get_type, NULL), - PANEL_TYPE("search", cc_search_panel_get_type, NULL), - PANEL_TYPE("sharing", cc_sharing_panel_get_type, NULL), - PANEL_TYPE("sound", cc_sound_panel_get_type, NULL), + //PANEL_TYPE("notifications", cc_notifications_panel_get_type, NULL), + //PANEL_TYPE("online-accounts", cc_goa_panel_get_type, NULL), + //PANEL_TYPE("power", cc_power_panel_get_type, NULL), + //PANEL_TYPE("printers", cc_printers_panel_get_type, NULL), + //PANEL_TYPE("region", cc_region_panel_get_type, NULL), + //PANEL_TYPE("removable-media", cc_removable_media_panel_get_type, NULL), + //PANEL_TYPE("search", cc_search_panel_get_type, NULL), + //PANEL_TYPE("sharing", cc_sharing_panel_get_type, NULL), + //PANEL_TYPE("sound", cc_sound_panel_get_type, NULL), #ifdef BUILD_THUNDERBOLT - PANEL_TYPE("thunderbolt", cc_bolt_panel_get_type, NULL), + //PANEL_TYPE("thunderbolt", cc_bolt_panel_get_type, NULL), #endif - PANEL_TYPE("universal-access", cc_ua_panel_get_type, NULL), - PANEL_TYPE("usage", cc_usage_panel_get_type, NULL), - PANEL_TYPE("user-accounts", cc_user_panel_get_type, NULL), + //PANEL_TYPE("universal-access", cc_ua_panel_get_type, NULL), + //PANEL_TYPE("usage", cc_usage_panel_get_type, NULL), + //PANEL_TYPE("user-accounts", cc_user_panel_get_type, NULL), #ifdef BUILD_WACOM - PANEL_TYPE("wacom", cc_wacom_panel_get_type, cc_wacom_panel_static_init_func), + //PANEL_TYPE("wacom", cc_wacom_panel_get_type, cc_wacom_panel_static_init_func), #endif #ifdef BUILD_WWAN - PANEL_TYPE("wwan", cc_wwan_panel_get_type, cc_wwan_panel_static_init_func), + //PANEL_TYPE("wwan", cc_wwan_panel_get_type, cc_wwan_panel_static_init_func), #endif }; -- GitLab From 5303a977b1a6ae1c0c484a51bd32187724705756 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Mon, 18 Oct 2021 11:32:24 -0300 Subject: [PATCH 02/42] Switch to GTK4 & libadwaita Nothing builds now. --- .gitmodules | 3 --- meson.build | 25 ++++++++----------------- subprojects/libadwaita.wrap | 3 +++ subprojects/libhandy | 1 - 4 files changed, 11 insertions(+), 21 deletions(-) create mode 100644 subprojects/libadwaita.wrap delete mode 160000 subprojects/libhandy diff --git a/.gitmodules b/.gitmodules index 60b7a8dbab..5ab4a386da 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "subprojects/gvc"] path = subprojects/gvc url = https://gitlab.gnome.org/GNOME/libgnome-volume-control.git -[submodule "subprojects/libhandy"] - path = subprojects/libhandy - url = https://gitlab.gnome.org/GNOME/libhandy.git diff --git a/meson.build b/meson.build index e9b2d7345c..3815be78ff 100644 --- a/meson.build +++ b/meson.build @@ -99,24 +99,15 @@ libgvc = subproject( ) libgvc_dep = libgvc.get_variable('libgvc_dep') -libhandy_dep = dependency('libhandy-1', version: '>= 1.2.0', required: false) -if not libhandy_dep.found() - libhandy = subproject( - 'libhandy', - default_options: [ - 'examples=false', - 'glade_catalog=disabled', - 'introspection=disabled', - 'tests=false', - 'vapi=false', - ] - ) - libhandy_dep = libhandy.get_variable('libhandy_dep') -endif - goa_req_version = '>= 3.25.3' pulse_req_version = '>= 2.0' +libadwaita_dep = dependency( + 'libadwaita-1', + fallback: ['libadwaita', 'libadwaita_dep'], + default_options: ['examples=false', 'introspection=disabled', 'tests=false', 'vapi=false'], +) + accounts_dep = dependency('accountsservice', version: '>= 0.6.39') colord_dep = dependency('colord', version: '>= 0.1.34') gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0', version: '>= 2.23.0') @@ -141,10 +132,10 @@ common_deps = [ gio_dep, glib_dep, gsettings_desktop_dep, - libhandy_dep, + libadwaita_dep, dependency('gio-unix-2.0'), dependency('gthread-2.0'), - dependency('gtk+-3.0', version: '>= 3.22.20') + dependency('gtk4', version: '>= 4.4'), ] polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.103') diff --git a/subprojects/libadwaita.wrap b/subprojects/libadwaita.wrap new file mode 100644 index 0000000000..a0c0609379 --- /dev/null +++ b/subprojects/libadwaita.wrap @@ -0,0 +1,3 @@ +[wrap-git] +url = https://gitlab.gnome.org/GNOME/libadwaita.git +revision = main diff --git a/subprojects/libhandy b/subprojects/libhandy deleted file mode 160000 index 7b38a860ff..0000000000 --- a/subprojects/libhandy +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7b38a860ffcec6c2ad28153358cc3d037ddb618f -- GitLab From 5ca53a0a78108019bf37ba01b07ac25a123db34a Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 19 Oct 2021 20:27:39 -0300 Subject: [PATCH 03/42] Drop Cheese dependency Cheese is not ready for GTK4, and probably won't ever be, so just drop the dependency. We'll reimplement webcam support using PipeWire later. --- meson.build | 12 ------------ meson_options.txt | 1 - panels/user-accounts/meson.build | 4 ---- shell/main.c | 8 -------- shell/meson.build | 4 ---- 5 files changed, 29 deletions(-) diff --git a/meson.build b/meson.build index 3815be78ff..6c95516cbe 100644 --- a/meson.build +++ b/meson.build @@ -171,17 +171,6 @@ config_h.set10('HAVE_CUPS_HTTPCONNECT2', cc.has_function('httpConnect2', dependencies: cups_dep), description: 'Define if httpConnect2() is available in CUPS') -# Optional dependency for the user accounts panel -enable_cheese = get_option('cheese') -if enable_cheese - cheese_deps = [ - dependency('cheese', version: '>= 3.28.0'), - dependency('cheese-gtk', version: '>= 3.5.91') - ] -endif -config_h.set('HAVE_CHEESE', enable_cheese, - description: 'Define to 1 to enable cheese webcam support') - # IBus support enable_ibus = get_option('ibus') if enable_ibus @@ -310,7 +299,6 @@ summary({ }, section: 'Dependencies') summary({ - 'Cheese': enable_cheese, 'IBus': enable_ibus, 'Snap': enable_snap, 'Malcontent': enable_malcontent, diff --git a/meson_options.txt b/meson_options.txt index 1b7b54810f..dbca723876 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,4 +1,3 @@ -option('cheese', type: 'boolean', value: true, description: 'build with cheese webcam support') option('documentation', type: 'boolean', value: false, description: 'build documentation') option('ibus', type: 'boolean', value: true, description: 'build with IBus support') option('privileged_group', type: 'string', value: 'wheel', description: 'name of group that has elevated permissions') diff --git a/panels/user-accounts/meson.build b/panels/user-accounts/meson.build index b8ee9d98ea..895b0dfe0f 100644 --- a/panels/user-accounts/meson.build +++ b/panels/user-accounts/meson.build @@ -184,10 +184,6 @@ deps = common_deps + [ dependency('pwquality', version: '>= 1.2.2') ] -if enable_cheese - deps += cheese_deps -endif - if enable_malcontent deps += malcontent_dep endif diff --git a/shell/main.c b/shell/main.c index 14c81c5f77..e3ac0f3278 100644 --- a/shell/main.c +++ b/shell/main.c @@ -29,10 +29,6 @@ #include #endif -#ifdef HAVE_CHEESE -#include -#endif /* HAVE_CHEESE */ - #include "cc-application.h" static void @@ -42,10 +38,6 @@ initialize_dependencies (gint *argc, #ifdef GDK_WINDOWING_X11 XInitThreads (); #endif - - #ifdef HAVE_CHEESE - cheese_gtk_init (argc, argv); - #endif /* HAVE_CHEESE */ } int diff --git a/shell/meson.build b/shell/meson.build index 89b96590ea..2a6cbf46ff 100644 --- a/shell/meson.build +++ b/shell/meson.build @@ -115,10 +115,6 @@ shell_deps = common_deps + [ libshell_dep, ] -if enable_cheese - shell_deps += cheese_deps -endif - if host_is_linux_not_s390 shell_deps += wacom_deps endif -- GitLab From 59bdf8102806ed41697c05e75149b4b601f8c0e7 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 19 Oct 2021 20:53:12 -0300 Subject: [PATCH 04/42] common: Port to GTK4 This is only the bare minimum to make everything under panels/common build. Since these widgets are used by the main window, port them first. CcTimeEntry was particularly hard to port. That's because GtkEntry is a final class now. Overall, though, I'm happy with how it turned out to be - much cleaner, less code, more obvious. --- meson.build | 2 +- panels/common/cc-hostname-entry.c | 8 +- panels/common/cc-language-chooser.c | 34 ++- panels/common/cc-language-chooser.ui | 20 +- panels/common/cc-list-row.c | 3 + panels/common/cc-list-row.ui | 5 +- panels/common/cc-permission-infobar.c | 8 +- panels/common/cc-permission-infobar.h | 4 +- panels/common/cc-permission-infobar.ui | 94 +++---- panels/common/cc-time-editor.c | 29 ++- panels/common/cc-time-editor.h | 4 +- panels/common/cc-time-editor.ui | 147 +++++------ panels/common/cc-time-entry.c | 347 ++++++++++++++----------- panels/common/cc-time-entry.h | 3 +- panels/common/gnome-settings-bus.h | 2 +- panels/common/gsd-device-manager.c | 14 +- panels/common/gsd-input-helper.c | 2 +- panels/common/list-box-helper.c | 108 -------- panels/common/list-box-helper.h | 33 --- panels/common/meson.build | 1 - 20 files changed, 369 insertions(+), 499 deletions(-) delete mode 100644 panels/common/list-box-helper.c delete mode 100644 panels/common/list-box-helper.h diff --git a/meson.build b/meson.build index 6c95516cbe..e9b33f7189 100644 --- a/meson.build +++ b/meson.build @@ -113,7 +113,7 @@ colord_dep = dependency('colord', version: '>= 0.1.34') gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0', version: '>= 2.23.0') gio_dep = dependency('gio-2.0') glib_dep = dependency('glib-2.0', version: '>= 2.68.0') -gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 3.33.4') +gnome_desktop_dep = dependency('gnome-desktop-4') gnome_settings_dep = dependency('gnome-settings-daemon', version: '>= 3.27.90') goa_dep = dependency('goa-1.0', version: goa_req_version) gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 40.alpha') diff --git a/panels/common/cc-hostname-entry.c b/panels/common/cc-hostname-entry.c index aff139c315..8a79b0323a 100644 --- a/panels/common/cc-hostname-entry.c +++ b/panels/common/cc-hostname-entry.c @@ -19,6 +19,7 @@ */ +#include "cc-common-resources.h" #include "cc-hostname-entry.h" #include "hostname-helper.h" @@ -46,7 +47,7 @@ cc_hostname_entry_set_hostname (CcHostnameEntry *self) g_autoptr(GError) static_error = NULL; const gchar *text; - text = gtk_entry_get_text (GTK_ENTRY (self)); + text = gtk_editable_get_text (GTK_EDITABLE (self)); g_debug ("Setting PrettyHostname to '%s'", text); pretty_result = g_dbus_proxy_call_sync (self->hostnamed_proxy, @@ -229,9 +230,9 @@ cc_hostname_entry_constructed (GObject *object) str = cc_hostname_entry_get_display_hostname (CC_HOSTNAME_ENTRY (self)); if (str != NULL) - gtk_entry_set_text (GTK_ENTRY (self), str); + gtk_editable_set_text (GTK_EDITABLE (self), str); else - gtk_entry_set_text (GTK_ENTRY (self), ""); + gtk_editable_set_text (GTK_EDITABLE (self), ""); g_signal_connect (self, "changed", G_CALLBACK (text_changed_cb), NULL); } @@ -248,6 +249,7 @@ cc_hostname_entry_class_init (CcHostnameEntryClass *klass) static void cc_hostname_entry_init (CcHostnameEntry *self) { + g_resources_register (cc_common_get_resource ()); } CcHostnameEntry * diff --git a/panels/common/cc-language-chooser.c b/panels/common/cc-language-chooser.c index aa342d5064..1aa2ec4806 100644 --- a/panels/common/cc-language-chooser.c +++ b/panels/common/cc-language-chooser.c @@ -30,7 +30,6 @@ #include #include -#include "list-box-helper.h" #include "cc-common-language.h" #include "cc-util.h" @@ -165,7 +164,7 @@ language_filter_entry_search_changed_cb (CcLanguageChooser *self) g_clear_pointer (&self->filter_words, g_strfreev); filter_contents = - cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (self->language_filter_entry))); + cc_util_normalize_casefold_and_unaccent (gtk_editable_get_text (GTK_EDITABLE (self->language_filter_entry))); if (!filter_contents) { gtk_list_box_invalidate_filter (self->language_listbox); return; @@ -179,7 +178,7 @@ show_more (CcLanguageChooser *self, gboolean visible) { gint width, height; - gtk_window_get_size (GTK_WINDOW (self), &width, &height); + gtk_window_get_default_size (GTK_WINDOW (self), &width, &height); gtk_widget_set_size_request (GTK_WIDGET (self), width, height); gtk_search_bar_set_search_mode (self->search_bar, visible); @@ -194,29 +193,30 @@ static void set_locale_id (CcLanguageChooser *self, const gchar *locale_id) { - g_autoptr(GList) children = NULL; - GList *l; + GtkWidget *child; gtk_widget_set_sensitive (GTK_WIDGET (self->select_button), FALSE); - children = gtk_container_get_children (GTK_CONTAINER (self->language_listbox)); - for (l = children; l; l = l->next) { - GtkListBoxRow *row = l->data; + for (child = gtk_widget_get_first_child (GTK_WIDGET (self->language_listbox)); + child; + child = gtk_widget_get_next_sibling (child)) { + CcLanguageRow *row; - if (!CC_IS_LANGUAGE_ROW (row)) + if (!CC_IS_LANGUAGE_ROW (child)) continue; - if (g_strcmp0 (locale_id, cc_language_row_get_locale_id (CC_LANGUAGE_ROW (row))) == 0) { - cc_language_row_set_checked (CC_LANGUAGE_ROW (row), TRUE); + row = CC_LANGUAGE_ROW (child); + if (g_strcmp0 (locale_id, cc_language_row_get_locale_id (row)) == 0) { + cc_language_row_set_checked (row, TRUE); gtk_widget_set_sensitive (GTK_WIDGET (self->select_button), TRUE); /* make sure the selected language is shown */ - if (!self->showing_extra && cc_language_row_get_is_extra (CC_LANGUAGE_ROW (row))) { - cc_language_row_set_is_extra (CC_LANGUAGE_ROW (row), FALSE); + if (!self->showing_extra && cc_language_row_get_is_extra (row)) { + cc_language_row_set_is_extra (row, FALSE); gtk_list_box_invalidate_filter (self->language_listbox); } } else { - cc_language_row_set_checked (CC_LANGUAGE_ROW (row), FALSE); + cc_language_row_set_checked (row, FALSE); } } @@ -274,10 +274,6 @@ cc_language_chooser_init (CcLanguageChooser *self) sort_languages, self, NULL); gtk_list_box_set_filter_func (self->language_listbox, language_visible, self, NULL); - gtk_list_box_set_selection_mode (self->language_listbox, - GTK_SELECTION_NONE); - gtk_list_box_set_header_func (self->language_listbox, - cc_list_box_update_header_func, NULL, NULL); add_all_languages (self); gtk_list_box_invalidate_filter (self->language_listbox); @@ -327,7 +323,7 @@ void cc_language_chooser_clear_filter (CcLanguageChooser *self) { g_return_if_fail (CC_IS_LANGUAGE_CHOOSER (self)); - gtk_entry_set_text (GTK_ENTRY (self->language_filter_entry), ""); + gtk_editable_set_text (GTK_EDITABLE (self->language_filter_entry), ""); show_more (self, FALSE); } diff --git a/panels/common/cc-language-chooser.ui b/panels/common/cc-language-chooser.ui index 8f6fd53b18..cd8cd07d38 100644 --- a/panels/common/cc-language-chooser.ui +++ b/panels/common/cc-language-chooser.ui @@ -11,11 +11,7 @@ _Select - True False - True - True - True True center @@ -23,25 +19,19 @@ _Cancel - True - True True center - + - True vertical 0 - 0 - True True - True 30 @@ -50,22 +40,21 @@ - True never automatic True 200 - True True True fill fill + none + True - True No languages found False @@ -74,15 +63,12 @@ - True - True 10 More… - True True center view-more-symbolic diff --git a/panels/common/cc-list-row.c b/panels/common/cc-list-row.c index f58c99c5ee..d5dfe8d3e0 100644 --- a/panels/common/cc-list-row.c +++ b/panels/common/cc-list-row.c @@ -29,6 +29,7 @@ # include #endif +#include "cc-common-resources.h" #include "cc-list-row.h" struct _CcListRow @@ -302,6 +303,8 @@ cc_list_row_class_init (CcListRowClass *klass) static void cc_list_row_init (CcListRow *self) { + g_resources_register (cc_common_get_resource ()); + gtk_widget_init_template (GTK_WIDGET (self)); g_signal_connect_object (self, "notify::parent", G_CALLBACK (cc_list_row_parent_changed_cb), diff --git a/panels/common/cc-list-row.ui b/panels/common/cc-list-row.ui index 730b8d91a6..655fd050df 100644 --- a/panels/common/cc-list-row.ui +++ b/panels/common/cc-list-row.ui @@ -5,7 +5,10 @@ 1 - 12 + 12 + 12 + 12 + 12 12 diff --git a/panels/common/cc-permission-infobar.c b/panels/common/cc-permission-infobar.c index afe207bb13..78e2b07118 100644 --- a/panels/common/cc-permission-infobar.c +++ b/panels/common/cc-permission-infobar.c @@ -33,13 +33,14 @@ struct _CcPermissionInfobar { - GtkRevealer parent_instance; + AdwBin parent_instance; + GtkRevealer *revealer; GtkLabel *title; GtkLockButton *lock_button; }; -G_DEFINE_TYPE (CcPermissionInfobar, cc_permission_infobar, GTK_TYPE_REVEALER) +G_DEFINE_TYPE (CcPermissionInfobar, cc_permission_infobar, ADW_TYPE_BIN) static void on_permission_changed (CcPermissionInfobar *self) @@ -50,7 +51,7 @@ on_permission_changed (CcPermissionInfobar *self) permission = gtk_lock_button_get_permission (self->lock_button); is_authorized = g_permission_get_allowed (permission); - gtk_revealer_set_reveal_child (GTK_REVEALER (self), !is_authorized); + gtk_revealer_set_reveal_child (self->revealer, !is_authorized); } static void @@ -62,6 +63,7 @@ cc_permission_infobar_class_init (CcPermissionInfobarClass *klass) "/org/gnome/control-center/" "common/cc-permission-infobar.ui"); + gtk_widget_class_bind_template_child (widget_class, CcPermissionInfobar, revealer); gtk_widget_class_bind_template_child (widget_class, CcPermissionInfobar, title); gtk_widget_class_bind_template_child (widget_class, CcPermissionInfobar, lock_button); } diff --git a/panels/common/cc-permission-infobar.h b/panels/common/cc-permission-infobar.h index 03b8ad9880..4d7064d5a6 100644 --- a/panels/common/cc-permission-infobar.h +++ b/panels/common/cc-permission-infobar.h @@ -21,12 +21,12 @@ */ #pragma once -#include +#include G_BEGIN_DECLS #define CC_TYPE_PERMISSION_INFOBAR (cc_permission_infobar_get_type()) -G_DECLARE_FINAL_TYPE (CcPermissionInfobar, cc_permission_infobar, CC, PERMISSION_INFOBAR, GtkRevealer) +G_DECLARE_FINAL_TYPE (CcPermissionInfobar, cc_permission_infobar, CC, PERMISSION_INFOBAR, AdwBin) void cc_permission_infobar_set_permission (CcPermissionInfobar *self, GPermission *permission); diff --git a/panels/common/cc-permission-infobar.ui b/panels/common/cc-permission-infobar.ui index 770765e082..851fcd0404 100644 --- a/panels/common/cc-permission-infobar.ui +++ b/panels/common/cc-permission-infobar.ui @@ -1,63 +1,65 @@ -