From 143563c54226c3a99c236570311df5d2b9c4ac55 Mon Sep 17 00:00:00 2001 From: Matthew Jakeman Date: Wed, 23 Mar 2022 06:24:01 +1300 Subject: [PATCH 1/5] project: Remove reference to placeholder labels in NEWS --- NEWS | 1 - 1 file changed, 1 deletion(-) diff --git a/NEWS b/NEWS index 213cfbba..58431117 100644 --- a/NEWS +++ b/NEWS @@ -16,7 +16,6 @@ Second feature update to extension-manager - In-app release notes on first run - Allow installing unsupported extensions - Option to sort extensions by enabled status - - Add placeholder labels when no extensions are installed - Focus search entry on first open ### Maintenance From 93919a2f8c5167ddefc719e6d2a034f9ba04db56 Mon Sep 17 00:00:00 2001 From: Matthew Jakeman Date: Wed, 23 Mar 2022 06:24:32 +1300 Subject: [PATCH 2/5] extension: Fix issue with repeatedly escaping description and name In fact, we should not be escaping at all. Remove this to properly display text. --- src/local/exm-extension.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/local/exm-extension.c b/src/local/exm-extension.c index 6eb25d85..5c6dd010 100644 --- a/src/local/exm-extension.c +++ b/src/local/exm-extension.c @@ -68,11 +68,9 @@ exm_extension_get_property (GObject *object, break; case PROP_DISPLAY_NAME: g_value_set_string (value, self->display_name); - self->display_name = g_markup_escape_text (self->display_name, -1); break; case PROP_DESCRIPTION: g_value_set_string (value, self->description); - self->description = g_markup_escape_text (self->description, -1); break; case PROP_STATE: g_value_set_enum (value, self->state); @@ -114,9 +112,13 @@ exm_extension_set_property (GObject *object, self->uuid = g_value_dup_string (value); break; case PROP_DISPLAY_NAME: + if (self->display_name) + g_free (self->display_name); self->display_name = g_value_dup_string (value); break; case PROP_DESCRIPTION: + if (self->description) + g_free (self->description); self->description = g_value_dup_string (value); break; case PROP_STATE: From b6b7fbdac9b7b42832473562ea0832d3a9423eca Mon Sep 17 00:00:00 2001 From: Matthew Jakeman Date: Wed, 23 Mar 2022 06:27:10 +1300 Subject: [PATCH 3/5] installed-page: Additional safety checks and refactor --- src/exm-installed-page.c | 44 ++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/exm-installed-page.c b/src/exm-installed-page.c index 71230555..62c712c4 100644 --- a/src/exm-installed-page.c +++ b/src/exm-installed-page.c @@ -131,8 +131,9 @@ widget_factory (ExmExtension* extension) { ExmExtensionRow *row; - row = exm_extension_row_new (extension); + g_return_if_fail (EXM_IS_EXTENSION (extension)); + row = exm_extension_row_new (extension); return GTK_WIDGET (row); } @@ -168,6 +169,9 @@ bind_list_box (GtkListBox *list_box, GtkStringSorter *alphabetical_sorter; GtkSortListModel *sorted_model; + g_return_if_fail (GTK_IS_LIST_BOX (list_box)); + g_return_if_fail (G_IS_LIST_MODEL (model)); + // Sort alphabetically expression = gtk_property_expression_new (EXM_TYPE_EXTENSION, NULL, "display-name"); alphabetical_sorter = gtk_string_sorter_new (expression); @@ -237,23 +241,15 @@ invalidate_model_bindings (ExmInstalledPage *self) "system-extensions", &system_ext_model, NULL); - if (!user_ext_model || !system_ext_model) - return; - - bind_list_box (self->user_list_box, user_ext_model, self->sort_enabled_first); - bind_list_box (self->system_list_box, system_ext_model, self->sort_enabled_first); + if (user_ext_model) + bind_list_box (self->user_list_box, + user_ext_model, + self->sort_enabled_first); - g_object_bind_property (self->manager, - "extensions-enabled", - self->user_list_box, - "sensitive", - G_BINDING_SYNC_CREATE); - - g_object_bind_property (self->manager, - "extensions-enabled", - self->system_list_box, - "sensitive", - G_BINDING_SYNC_CREATE); + if (system_ext_model) + bind_list_box (self->system_list_box, + system_ext_model, + self->sort_enabled_first); } static void @@ -267,6 +263,18 @@ on_bind_manager (ExmInstalledPage *self) G_CALLBACK (on_updates_available), self); + g_object_bind_property (self->manager, + "extensions-enabled", + self->user_list_box, + "sensitive", + G_BINDING_SYNC_CREATE); + + g_object_bind_property (self->manager, + "extensions-enabled", + self->system_list_box, + "sensitive", + G_BINDING_SYNC_CREATE); + // Check if updates are available // NOTE: We need to do this *after* connecting the signal // handler above, otherwise we will not be notified. @@ -326,4 +334,6 @@ exm_installed_page_init (ExmInstalledPage *self) g_settings_bind (settings, "sort-enabled-first", self, "sort-enabled-first", G_SETTINGS_BIND_GET); + + g_object_unref (settings); } From cfe4e93b300d5e8d5352834bb83aa7d242a213c9 Mon Sep 17 00:00:00 2001 From: Matthew Jakeman Date: Wed, 23 Mar 2022 06:27:25 +1300 Subject: [PATCH 4/5] application: Unref settings object --- src/exm-application.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/exm-application.c b/src/exm-application.c index fd4418e6..ca843a16 100644 --- a/src/exm-application.c +++ b/src/exm-application.c @@ -210,6 +210,8 @@ exm_application_init (ExmApplication *self) map_setting_to_adw_style, NULL, NULL, NULL); + g_object_unref (settings); + const char *accels[] = {"q", NULL}; gtk_application_set_accels_for_action (GTK_APPLICATION (self), "app.quit", accels); } From 710a755a01991002a57109fa237f684b70d256d4 Mon Sep 17 00:00:00 2001 From: Matthew Jakeman Date: Wed, 23 Mar 2022 06:41:32 +1300 Subject: [PATCH 5/5] i18n: Add translators comment to what's new dialog --- src/exm-window.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/exm-window.c b/src/exm-window.c index 2d699d6e..04e6d4f4 100644 --- a/src/exm-window.c +++ b/src/exm-window.c @@ -375,6 +375,7 @@ do_version_check (ExmWindow *self) gtk_dialog_add_button (GTK_DIALOG (dialog), _("View Release Notes"), GTK_RESPONSE_YES); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES); + // Translators: '%s' = Current version of Extension Manager (e.g. '0.3.0') gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog), _("This is your first time using Extension Manager %s.\nWould you like to see the release notes?"), APP_VERSION);