[gnome-software: 1/2] ui: Disable markup in widgets derived from AdwPreferencesRow




commit d1b63113259cdda95d961f892650a0503654cf76
Author: Philip Withnall <pwithnall endlessos org>
Date:   Thu Mar 10 11:06:19 2022 +0000

    ui: Disable markup in widgets derived from AdwPreferencesRow
    
    This is a follow-up to !1280. If a recent enough version of libadwaita
    is available, it disables markup in widgets derived from
    `AdwPreferencesRow`, rather than having to explicitly escape all label
    contents.
    
    This is not worth bumping our libadwaita dependency for, as it’s a
    simple and small set of changes, and libadwaita 1.2.0 is not quite
    released yet (so won’t be in distros for a while).
    
    Signed-off-by: Philip Withnall <pwithnall endlessos org>

 src/gs-app-details-page.c   | 3 +++
 src/gs-context-dialog-row.c | 4 ++++
 src/gs-details-page.c       | 9 +++++++++
 src/gs-prefs-dialog.c       | 9 +++++++++
 src/gs-prefs-dialog.ui      | 4 ++--
 src/gs-repos-dialog.c       | 3 +++
 6 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/src/gs-app-details-page.c b/src/gs-app-details-page.c
index 80de5ea56..88b38d8e3 100644
--- a/src/gs-app-details-page.c
+++ b/src/gs-app-details-page.c
@@ -97,6 +97,9 @@ add_permissions_row (GsAppDetailsPage *page,
        if (!is_warning_row)
                gtk_widget_set_opacity (image, 0);
 
+#if ADW_CHECK_VERSION(1,2,0)
+       adw_preferences_row_set_use_markup (ADW_PREFERENCES_ROW (row), FALSE);
+#endif
        adw_action_row_add_prefix (ADW_ACTION_ROW (row), image);
        adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), title);
        adw_action_row_set_subtitle (ADW_ACTION_ROW (row), subtitle);
diff --git a/src/gs-context-dialog-row.c b/src/gs-context-dialog-row.c
index 73f8fcbfc..420816f98 100644
--- a/src/gs-context-dialog-row.c
+++ b/src/gs-context-dialog-row.c
@@ -74,6 +74,10 @@ static void
 gs_context_dialog_row_init (GsContextDialogRow *self)
 {
        gtk_widget_init_template (GTK_WIDGET (self));
+
+#if ADW_CHECK_VERSION(1,2,0)
+       adw_preferences_row_set_use_markup (ADW_PREFERENCES_ROW (self), FALSE);
+#endif
 }
 
 static void
diff --git a/src/gs-details-page.c b/src/gs-details-page.c
index a35a4e967..03bdc0b6e 100644
--- a/src/gs-details-page.c
+++ b/src/gs-details-page.c
@@ -953,10 +953,19 @@ update_action_row_from_link (AdwActionRow *row,
                              AsUrlKind     url_kind)
 {
        const gchar *url = gs_app_get_url (app, url_kind);
+
+#if ADW_CHECK_VERSION(1,2,0)
+       adw_preferences_row_set_use_markup (ADW_PREFERENCES_ROW (row), FALSE);
+
+       if (url != NULL)
+               adw_action_row_set_subtitle (row, url);
+#else
        if (url != NULL) {
                g_autofree gchar *escaped_url = g_markup_escape_text (url, -1);
                adw_action_row_set_subtitle (row, escaped_url);
        }
+#endif
+
        gtk_widget_set_visible (GTK_WIDGET (row), url != NULL);
 
        return (url != NULL);
diff --git a/src/gs-prefs-dialog.c b/src/gs-prefs-dialog.c
index 3c24dba0e..df49aa034 100644
--- a/src/gs-prefs-dialog.c
+++ b/src/gs-prefs-dialog.c
@@ -25,6 +25,8 @@ struct _GsPrefsDialog
        GsPluginLoader          *plugin_loader;
        GtkWidget               *switch_updates;
        GtkWidget               *switch_updates_notify;
+       AdwActionRow            *automatic_updates_row;
+       AdwActionRow            *automatic_update_notifications_row;
 };
 
 G_DEFINE_TYPE (GsPrefsDialog, gs_prefs_dialog, ADW_TYPE_PREFERENCES_WINDOW)
@@ -58,6 +60,11 @@ gs_prefs_dialog_init (GsPrefsDialog *dialog)
                         dialog->switch_updates,
                         "active",
                         G_SETTINGS_BIND_DEFAULT);
+
+#if ADW_CHECK_VERSION(1,2,0)
+       adw_preferences_row_set_use_markup (ADW_PREFERENCES_ROW (dialog->automatic_updates_row), FALSE);
+       adw_preferences_row_set_use_markup (ADW_PREFERENCES_ROW (dialog->automatic_update_notifications_row), 
FALSE);
+#endif
 }
 
 static void
@@ -71,6 +78,8 @@ gs_prefs_dialog_class_init (GsPrefsDialogClass *klass)
        gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Software/gs-prefs-dialog.ui");
        gtk_widget_class_bind_template_child (widget_class, GsPrefsDialog, switch_updates);
        gtk_widget_class_bind_template_child (widget_class, GsPrefsDialog, switch_updates_notify);
+       gtk_widget_class_bind_template_child (widget_class, GsPrefsDialog, automatic_updates_row);
+       gtk_widget_class_bind_template_child (widget_class, GsPrefsDialog, 
automatic_update_notifications_row);
 }
 
 GtkWidget *
diff --git a/src/gs-prefs-dialog.ui b/src/gs-prefs-dialog.ui
index d5cdbcd62..3fcb8c1bd 100644
--- a/src/gs-prefs-dialog.ui
+++ b/src/gs-prefs-dialog.ui
@@ -15,7 +15,7 @@
           <object class="AdwPreferencesGroup">
             <property name="description" translatable="yes">To avoid charges and network caps, software 
updates are not automatically downloaded on mobile or metered connections.</property>
             <child>
-              <object class="AdwActionRow">
+              <object class="AdwActionRow" id="automatic_updates_row">
                 <property name="title" translatable="yes">Automatic Updates</property>
                 <property name="subtitle" translatable="yes">Downloads and installs software updates in the 
background, when possible.</property>
                 <property name="subtitle_lines">0</property>
@@ -28,7 +28,7 @@
               </object>
             </child>
             <child>
-              <object class="AdwActionRow">
+              <object class="AdwActionRow" id="automatic_update_notifications_row">
                 <property name="title" translatable="yes">Automatic Update Notifications</property>
                 <property name="subtitle" translatable="yes">Show notifications when updates have been 
automatically installed.</property>
                 <property name="subtitle_lines">0</property>
diff --git a/src/gs-repos-dialog.c b/src/gs-repos-dialog.c
index 40fccd5ec..bb9546392 100644
--- a/src/gs-repos-dialog.c
+++ b/src/gs-repos-dialog.c
@@ -502,6 +502,9 @@ get_sources_cb (GsPluginLoader *plugin_loader,
                gtk_widget_show (widget);
 
                row = adw_action_row_new ();
+#if ADW_CHECK_VERSION(1,2,0)
+               adw_preferences_row_set_use_markup (ADW_PREFERENCES_ROW (row), FALSE);
+#endif
                adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), _("Enable New Repositories"));
                adw_action_row_set_subtitle (ADW_ACTION_ROW (row), _("Turn on new repositories when they are 
added."));
                adw_action_row_set_activatable_widget (ADW_ACTION_ROW (row), widget);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]