[gnome-software: 6/10] gs-details-page: Add an infobar to highlight missing translations




commit 53f896e100a1a375febcc9e0b6a6dc9bbfb2435f
Author: Philip Withnall <pwithnall endlessos org>
Date:   Tue Aug 10 15:29:06 2021 +0100

    gs-details-page: Add an infobar to highlight missing translations
    
    If the app is <50% translated to the current locale, this infobar will
    be shown. If the app is FOSS and has provided a link for adding
    translations, a button will be shown to open the
    `GsAppTranslationDialog` with more information about how to contribute
    to translations.
    
    Signed-off-by: Philip Withnall <pwithnall endlessos org>
    
    Fixes: #1354

 src/gs-details-page.c  |   28 +
 src/gs-details-page.ui | 1347 +++++++++++++++++++++++++-----------------------
 2 files changed, 723 insertions(+), 652 deletions(-)
---
diff --git a/src/gs-details-page.c b/src/gs-details-page.c
index cdefe3c53..6eedf0a78 100644
--- a/src/gs-details-page.c
+++ b/src/gs-details-page.c
@@ -20,6 +20,7 @@
 #include "gs-details-page.h"
 #include "gs-app-addon-row.h"
 #include "gs-app-context-bar.h"
+#include "gs-app-translation-dialog.h"
 #include "gs-app-version-history-row.h"
 #include "gs-app-version-history-dialog.h"
 #include "gs-description-box.h"
@@ -141,6 +142,8 @@ struct _GsDetailsPage
        GtkWidget               *origin_box;
        GtkWidget               *origin_button_label;
        GsLicenseTile           *license_tile;
+       GtkInfoBar              *translation_infobar;
+       GtkButton               *translation_infobar_button;
 };
 
 G_DEFINE_TYPE (GsDetailsPage, gs_details_page, GS_TYPE_PAGE)
@@ -554,6 +557,18 @@ gs_details_page_license_tile_get_involved_activated_cb (GsLicenseTile *license_t
        gs_shell_show_uri (self->shell, gs_app_get_url (self->app, AS_URL_KIND_HOMEPAGE));
 }
 
+static void
+gs_details_page_translation_infobar_response_cb (GtkInfoBar *infobar,
+                                                 int         response,
+                                                 gpointer    user_data)
+{
+       GsDetailsPage *self = GS_DETAILS_PAGE (user_data);
+       GtkWindow *window;
+
+       window = GTK_WINDOW (gs_app_translation_dialog_new (self->app));
+       gs_shell_modal_dialog_present (self->shell, window);
+}
+
 static void
 gs_details_page_set_description (GsDetailsPage *self, const gchar *tmp)
 {
@@ -1011,6 +1026,16 @@ gs_details_page_refresh_all (GsDetailsPage *self)
        /* refresh buttons */
        gs_details_page_refresh_buttons (self);
 
+       /* Set up the translation infobar. Assume that translations can be
+        * contributed to if an app is FOSS and it has provided a link for
+        * contributing translations. */
+       gtk_widget_set_visible (GTK_WIDGET (self->translation_infobar_button),
+                               gs_app_translation_dialog_app_has_url (self->app) &&
+                               gs_app_get_license_is_free (self->app));
+       gtk_info_bar_set_revealed (self->translation_infobar,
+                                  gs_app_get_has_translations (self->app) &&
+                                  !gs_app_has_kudo (self->app, GS_APP_KUDO_MY_LANGUAGE));
+
        /* set the description */
        tmp = gs_app_get_description (self->app);
        gs_details_page_set_description (self, tmp);
@@ -2328,9 +2353,12 @@ gs_details_page_class_init (GsDetailsPageClass *klass)
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, origin_box);
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, origin_button_label);
        gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, license_tile);
+       gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, translation_infobar);
+       gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, translation_infobar_button);
 
        gtk_widget_class_bind_template_callback (widget_class, gs_details_page_link_row_activated_cb);
        gtk_widget_class_bind_template_callback (widget_class, 
gs_details_page_license_tile_get_involved_activated_cb);
+       gtk_widget_class_bind_template_callback (widget_class, 
gs_details_page_translation_infobar_response_cb);
 }
 
 static void
diff --git a/src/gs-details-page.ui b/src/gs-details-page.ui
index d087bc311..f733b8067 100644
--- a/src/gs-details-page.ui
+++ b/src/gs-details-page.ui
@@ -59,862 +59,905 @@
               <object class="GtkViewport" id="viewport1">
                 <property name="visible">True</property>
                 <child>
-                  <object class="GtkBox" id="box_details">
+                  <object class="GtkBox">
                     <property name="orientation">vertical</property>
                     <property name="visible">True</property>
-                    <property name="halign">fill</property>
-                    <property name="valign">start</property>
-                    <property name="spacing">18</property>
-                    <property name="hexpand">False</property>
-                    <style>
-                      <class name="details-page"/>
-                    </style>
                     <child>
-                      <object class="HdyClamp">
+                      <object class="GtkInfoBar" id="translation_infobar">
+                        <property name="revealed">False</property>
+                        <property name="show-close-button">False</property>
+                        <property name="spacing">12</property>
                         <property name="visible">True</property>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
-                        <child>
-                          <object class="GtkBox" id="box_details_header">
+                        <signal name="response" handler="gs_details_page_translation_infobar_response_cb"/>
+                        <child internal-child="content_area">
+                          <object class="GtkBox">
                             <property name="orientation">horizontal</property>
                             <property name="visible">True</property>
-                            <property name="spacing">32</property>
+                            <child type="center">
+                              <object class="GtkLabel" id="translation_infobar_label">
+                                <property name="hexpand">True</property>
+                                <property name="label" translatable="yes">This app is not available in your 
language and will appear in US English.</property>
+                                <property name="visible">True</property>
+                                <property name="xalign">0.5</property>
+                              </object>
+                            </child>
                             <child>
-                              <object class="GtkImage" id="application_details_icon">
+                              <object class="GtkButton" id="translation_infobar_button">
+                                <property name="label" translatable="yes">Help _Translate</property>
+                                <property name="use-underline">True</property>
                                 <property name="visible">True</property>
-                                <property name="halign">start</property>
-                                <property name="valign">start</property>
-                                <property name="pixel_size">128</property>
-                                <style>
-                                  <class name="icon-dropshadow"/>
-                                </style>
                               </object>
+                              <packing>
+                                <property name="pack-type">end</property>
+                              </packing>
                             </child>
+                          </object>
+                        </child>
+                        <action-widgets>
+                          <action-widget 
response="GTK_RESPONSE_OK">translation_infobar_button</action-widget>
+                        </action-widgets>
+                      </object>
+                    </child>
+
+                    <child>
+                      <object class="GtkBox" id="box_details">
+                        <property name="orientation">vertical</property>
+                        <property name="visible">True</property>
+                        <property name="halign">fill</property>
+                        <property name="valign">start</property>
+                        <property name="spacing">18</property>
+                        <property name="hexpand">False</property>
+                        <style>
+                          <class name="details-page"/>
+                        </style>
+                        <child>
+                          <object class="HdyClamp">
+                            <property name="visible">True</property>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
                             <child>
-                              <object class="GtkBox">
+                              <object class="GtkBox" id="box_details_header">
                                 <property name="orientation">horizontal</property>
                                 <property name="visible">True</property>
-                                <property name="spacing">10</property>
+                                <property name="spacing">32</property>
                                 <child>
-                                  <object class="GtkBox" id="box_details_header2">
-                                    <property name="orientation">vertical</property>
+                                  <object class="GtkImage" id="application_details_icon">
                                     <property name="visible">True</property>
-                                    <property name="halign">fill</property>
-                                    <property name="valign">center</property>
-                                    <property name="spacing">6</property>
+                                    <property name="halign">start</property>
+                                    <property name="valign">start</property>
+                                    <property name="pixel_size">128</property>
+                                    <style>
+                                      <class name="icon-dropshadow"/>
+                                    </style>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkBox">
+                                    <property name="orientation">horizontal</property>
+                                    <property name="visible">True</property>
+                                    <property name="spacing">10</property>
                                     <child>
-                                      <object class="GtkLabel" id="application_details_title">
+                                      <object class="GtkBox" id="box_details_header2">
+                                        <property name="orientation">vertical</property>
                                         <property name="visible">True</property>
                                         <property name="halign">fill</property>
-                                        <property name="valign">start</property>
-                                        <property name="hexpand">True</property>
-                                        <property name="xalign">0</property>
-                                        <property name="selectable">True</property>
-                                        <property name="wrap">True</property>
-                                        <property name="max_width_chars">20</property>
-                                        <style>
-                                          <class name="title-1"/>
-                                        </style>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="GtkBox">
-                                        <property name="visible" bind-source="developer_name_label" 
bind-property="visible" bind-flags="sync-create"/>
-                                        <property name="hexpand">True</property>
-                                        <property name="spacing">3</property>
-                                        <property name="orientation">horizontal</property>
+                                        <property name="valign">center</property>
+                                        <property name="spacing">6</property>
                                         <child>
-                                          <object class="GtkLabel" id="developer_name_label">
+                                          <object class="GtkLabel" id="application_details_title">
                                             <property name="visible">True</property>
-                                            <!-- This is a placeholder; the real value is set in code -->
-                                            <property name="label">Yorba</property>
-                                            <property name="wrap">False</property>
-                                            <property name="selectable">True</property>
-                                            <property name="max-width-chars">100</property>
+                                            <property name="halign">fill</property>
+                                            <property name="valign">start</property>
+                                            <property name="hexpand">True</property>
                                             <property name="xalign">0</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="hexpand">False</property>
+                                            <property name="selectable">True</property>
+                                            <property name="wrap">True</property>
+                                            <property name="max_width_chars">20</property>
                                             <style>
-                                              <class name="dim-label"/>
+                                              <class name="title-1"/>
                                             </style>
                                           </object>
                                         </child>
                                         <child>
-                                          <object class="GtkImage" id="developer_verified_image">
-                                            <property name="visible">True</property>
-                                            <property name="pixel-size">16</property>
-                                            <property name="icon-name">emblem-ok-symbolic</property>
+                                          <object class="GtkBox">
+                                            <property name="visible" bind-source="developer_name_label" 
bind-property="visible" bind-flags="sync-create"/>
+                                            <property name="hexpand">True</property>
+                                            <property name="spacing">3</property>
+                                            <property name="orientation">horizontal</property>
+                                            <child>
+                                              <object class="GtkLabel" id="developer_name_label">
+                                                <property name="visible">True</property>
+                                                <!-- This is a placeholder; the real value is set in code -->
+                                                <property name="label">Yorba</property>
+                                                <property name="wrap">False</property>
+                                                <property name="selectable">True</property>
+                                                <property name="max-width-chars">100</property>
+                                                <property name="xalign">0</property>
+                                                <property name="yalign">0.5</property>
+                                                <property name="hexpand">False</property>
+                                                <style>
+                                                  <class name="dim-label"/>
+                                                </style>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkImage" id="developer_verified_image">
+                                                <property name="visible">True</property>
+                                                <property name="pixel-size">16</property>
+                                                <property name="icon-name">emblem-ok-symbolic</property>
+                                              </object>
+                                            </child>
                                           </object>
                                         </child>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="GtkBox" id="star_box">
-                                        <property name="margin-top">6</property>
-                                        <property name="visible">True</property>
-                                        <property name="valign">start</property>
                                         <child>
-                                          <object class="GtkEventBox" id="star_eventbox">
+                                          <object class="GtkBox" id="star_box">
+                                            <property name="margin-top">6</property>
                                             <property name="visible">True</property>
+                                            <property name="valign">start</property>
                                             <child>
-                                              <object class="GsStarWidget" id="star">
+                                              <object class="GtkEventBox" id="star_eventbox">
                                                 <property name="visible">True</property>
+                                                <child>
+                                                  <object class="GsStarWidget" id="star">
+                                                    <property name="visible">True</property>
+                                                    <property name="halign">start</property>
+                                                    <property name="valign">center</property>
+                                                    <property name="icon-size">16</property>
+                                                  </object>
+                                                </child>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkLabel" id="label_review_count">
+                                                <property name="visible">True</property>
+                                                <property name="margin_start">5</property>
                                                 <property name="halign">start</property>
                                                 <property name="valign">center</property>
-                                                <property name="icon-size">16</property>
+                                                <style>
+                                                  <class name="dim-label"/>
+                                                </style>
                                               </object>
                                             </child>
                                           </object>
                                         </child>
+                                      </object>
+                                    </child>
+
+                                    <child>
+                                      <object class="GtkBox" id="box_install_remove">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">9</property>
                                         <child>
-                                          <object class="GtkLabel" id="label_review_count">
-                                            <property name="visible">True</property>
-                                            <property name="margin_start">5</property>
+                                          <object class="GtkButton" id="button_install">
+                                            <property name="visible">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="label" translatable="yes">_Install</property>
+                                            <property name="width_request">105</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
                                             <property name="halign">start</property>
                                             <property name="valign">center</property>
                                             <style>
-                                              <class name="dim-label"/>
+                                              <class name="suggested-action"/>
                                             </style>
                                           </object>
                                         </child>
-                                      </object>
-                                    </child>
-                                  </object>
-                                </child>
-
-                                <child>
-                                  <object class="GtkBox" id="box_install_remove">
-                                    <property name="visible">True</property>
-                                    <property name="spacing">9</property>
-                                    <child>
-                                      <object class="GtkButton" id="button_install">
-                                        <property name="visible">False</property>
-                                        <property name="use_underline">True</property>
-                                        <property name="label" translatable="yes">_Install</property>
-                                        <property name="width_request">105</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">True</property>
-                                        <property name="halign">start</property>
-                                        <property name="valign">center</property>
-                                        <style>
-                                          <class name="suggested-action"/>
-                                        </style>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="button_details_launch">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="use_underline">True</property>
-                                        <property name="valign">center</property>
-                                        <style>
-                                          <class name="suggested-action"/>
-                                        </style>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="button_remove">
-                                        <property name="visible">False</property>
-                                        <property name="use_underline">True</property>
-                                        <property name="label" translatable="yes">_Uninstall</property>
-                                        <property name="width_request">105</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">True</property>
-                                        <property name="halign">start</property>
-                                        <property name="valign">center</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinner" id="spinner_remove">
-                                        <property name="visible">False</property>
-                                        <property name="valign">center</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="GtkBox" id="box_progress">
-                                        <property name="visible">True</property>
-                                        <property name="spacing">3</property>
-                                        <property name="orientation">vertical</property>
-                                        <property name="hexpand">True</property>
-                                        <property name="valign">center</property>
                                         <child>
-                                          <object class="GtkBox" id="box_progress2">
+                                          <object class="GtkButton" id="button_details_launch">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="valign">center</property>
+                                            <style>
+                                              <class name="suggested-action"/>
+                                            </style>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="button_remove">
+                                            <property name="visible">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="label" translatable="yes">_Uninstall</property>
+                                            <property name="width_request">105</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
+                                            <property name="halign">start</property>
+                                            <property name="valign">center</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkSpinner" id="spinner_remove">
+                                            <property name="visible">False</property>
+                                            <property name="valign">center</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkBox" id="box_progress">
                                             <property name="visible">True</property>
                                             <property name="spacing">3</property>
-                                            <property name="halign">center</property>
+                                            <property name="orientation">vertical</property>
+                                            <property name="hexpand">True</property>
+                                            <property name="valign">center</property>
                                             <child>
-                                              <object class="GtkLabel" id="label_progress_status">
+                                              <object class="GtkBox" id="box_progress2">
                                                 <property name="visible">True</property>
-                                                <property name="valign">start</property>
-                                                <property name="label" 
translatable="yes">Downloading</property>
+                                                <property name="spacing">3</property>
+                                                <property name="halign">center</property>
+                                                <child>
+                                                  <object class="GtkLabel" id="label_progress_status">
+                                                    <property name="visible">True</property>
+                                                    <property name="valign">start</property>
+                                                    <property name="label" 
translatable="yes">Downloading</property>
+                                                  </object>
+                                                </child>
+                                                <child>
+                                                  <object class="GtkLabel" id="label_progress_percentage">
+                                                    <property name="visible">True</property>
+                                                    <property name="valign">start</property>
+                                                    <property name="label">50%</property>
+                                                  </object>
+                                                </child>
                                               </object>
                                             </child>
                                             <child>
-                                              <object class="GtkLabel" id="label_progress_percentage">
+                                              <object class="GtkProgressBar" id="progressbar_top">
                                                 <property name="visible">True</property>
-                                                <property name="valign">start</property>
-                                                <property name="label">50%</property>
+                                                <property name="fraction">0.5</property>
+                                                <property name="valign">center</property>
+                                                <property name="vexpand">True</property>
+                                                <property name="width_request">624</property>
+                                                <style>
+                                                  <class name="upgrade-progressbar"/>
+                                                </style>
                                               </object>
                                             </child>
                                           </object>
                                         </child>
                                         <child>
-                                          <object class="GtkProgressBar" id="progressbar_top">
-                                            <property name="visible">True</property>
-                                            <property name="fraction">0.5</property>
+                                          <object class="GtkButton" id="button_cancel">
+                                            <property name="visible">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="label" translatable="yes">_Cancel</property>
+                                            <property name="width_request">116</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
+                                            <property name="valign">center</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="button_update">
+                                            <property name="visible">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="label" translatable="yes">_Update</property>
+                                            <property name="width_request">105</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">True</property>
+                                            <property name="halign">start</property>
+                                            <property name="valign">center</property>
+                                          </object>
+                                          <packing>
+                                            <property name="pack-type">end</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="button_details_add_shortcut">
+                                            <property name="visible">False</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="label" translatable="yes" comments="Translators: 
A label for a button to add a shortcut to the selected application.">_Add shortcut</property>
                                             <property name="valign">center</property>
-                                            <property name="vexpand">True</property>
-                                            <property name="width_request">624</property>
                                             <style>
-                                              <class name="upgrade-progressbar"/>
+                                              <class name="suggested-action"/>
                                             </style>
                                           </object>
+                                          <packing>
+                                            <property name="pack-type">end</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="button_details_remove_shortcut">
+                                            <property name="visible">False</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="label" translatable="yes" comments="Translators: 
A label for a button to remove a shortcut to the selected application.">Re_move shortcut</property>
+                                            <property name="valign">center</property>
+                                          </object>
+                                          <packing>
+                                            <property name="pack-type">end</property>
+                                          </packing>
                                         </child>
                                       </object>
                                     </child>
-                                    <child>
-                                      <object class="GtkButton" id="button_cancel">
-                                        <property name="visible">False</property>
-                                        <property name="use_underline">True</property>
-                                        <property name="label" translatable="yes">_Cancel</property>
-                                        <property name="width_request">116</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">True</property>
-                                        <property name="valign">center</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="button_update">
-                                        <property name="visible">False</property>
-                                        <property name="use_underline">True</property>
-                                        <property name="label" translatable="yes">_Update</property>
-                                        <property name="width_request">105</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">True</property>
-                                        <property name="halign">start</property>
-                                        <property name="valign">center</property>
-                                      </object>
-                                      <packing>
-                                        <property name="pack-type">end</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="button_details_add_shortcut">
-                                        <property name="visible">False</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="use_underline">True</property>
-                                        <property name="label" translatable="yes" comments="Translators: A 
label for a button to add a shortcut to the selected application.">_Add shortcut</property>
-                                        <property name="valign">center</property>
-                                        <style>
-                                          <class name="suggested-action"/>
-                                        </style>
-                                      </object>
-                                      <packing>
-                                        <property name="pack-type">end</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="button_details_remove_shortcut">
-                                        <property name="visible">False</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="use_underline">True</property>
-                                        <property name="label" translatable="yes" comments="Translators: A 
label for a button to remove a shortcut to the selected application.">Re_move shortcut</property>
-                                        <property name="valign">center</property>
-                                      </object>
-                                      <packing>
-                                        <property name="pack-type">end</property>
-                                      </packing>
-                                    </child>
                                   </object>
                                 </child>
                               </object>
                             </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
-
-                    <child>
-                      <object class="GsScreenshotCarousel" id="screenshot_carousel">
-                        <property name="visible">True</property>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible">True</property>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GtkBox" id="application_details">
+                          <object class="GsScreenshotCarousel" id="screenshot_carousel">
                             <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
-                            <property name="spacing">12</property>
-                            <child>
-                              <object class="GtkLabel" id="application_details_summary">
-                                <property name="visible">True</property>
-                                <property name="halign">fill</property>
-                                <property name="valign">start</property>
-                                <property name="hexpand">True</property>
-                                <property name="xalign">0</property>
-                                <property name="selectable">True</property>
-                                <property name="wrap">True</property>
-                                <property name="max-width-chars">60</property>
-                                <style>
-                                  <class name="title-2"/>
-                                </style>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GsDescriptionBox" id="box_details_description">
-                                <property name="orientation">vertical</property>
-                                <property name="spacing">12</property>
-                                <property name="halign">fill</property>
-                                <property name="hexpand">True</property>
-                                <property name="valign">start</property>
-                                <property name="visible">FALSE</property>
-                                <property name="margin_bottom">14</property>
-                              </object>
-                            </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible">True</property>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GtkBox" id="box_addons">
+                          <object class="HdyClamp">
                             <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
-
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
                             <child>
-                              <object class="GtkBox" id="box_addons_title">
+                              <object class="GtkBox" id="application_details">
                                 <property name="visible">True</property>
                                 <property name="orientation">vertical</property>
-                                <property name="margin_bottom">12</property>
+                                <property name="spacing">12</property>
                                 <child>
-                                  <object class="GtkLabel" id="label_addons_title">
+                                  <object class="GtkLabel" id="application_details_summary">
                                     <property name="visible">True</property>
-                                    <property name="halign">start</property>
+                                    <property name="halign">fill</property>
                                     <property name="valign">start</property>
                                     <property name="hexpand">True</property>
                                     <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Add-ons</property>
+                                    <property name="selectable">True</property>
+                                    <property name="wrap">True</property>
+                                    <property name="max-width-chars">60</property>
                                     <style>
                                       <class name="title-2"/>
                                     </style>
                                   </object>
                                 </child>
                                 <child>
-                                  <object class="GtkLabel" id="label_addons_uninstalled_app">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="wrap">True</property>
-                                    <property name="max-width-chars">40</property>
-                                    <property name="label" translatable="yes">Selected add-ons will be 
installed with the application.</property>
+                                  <object class="GsDescriptionBox" id="box_details_description">
+                                    <property name="orientation">vertical</property>
+                                    <property name="spacing">12</property>
+                                    <property name="halign">fill</property>
+                                    <property name="hexpand">True</property>
+                                    <property name="valign">start</property>
+                                    <property name="visible">FALSE</property>
+                                    <property name="margin_bottom">14</property>
                                   </object>
                                 </child>
                               </object>
                             </child>
-                            <child>
-                              <object class="GtkListBox" id="list_box_addons">
-                                <property name="visible">True</property>
-                                <property name="selection_mode">none</property>
-                                <property name="halign">fill</property>
-                                <property name="valign">start</property>
-                                <style>
-                                  <class name="content"/>
-                                </style>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible">True</property>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
-                        <child>
-                          <object class="GsAppContextBar" id="context_bar">
-                            <property name="visible">True</property>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible">True</property>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GtkListBox" id="list_box_version_history">
+                          <object class="HdyClamp">
                             <property name="visible">True</property>
-                            <property name="selection_mode">none</property>
-                            <property name="halign">fill</property>
-                            <property name="valign">start</property>
-                            <style>
-                              <class name="content"/>
-                            </style>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
                             <child>
-                              <object class="GsAppVersionHistoryRow" id="row_latest_version">
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkListBoxRow" id="version_history_button">
+                              <object class="GtkBox" id="box_addons">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
+                                <property name="orientation">vertical</property>
+
                                 <child>
-                                  <object class="GtkBox">
+                                  <object class="GtkBox" id="box_addons_title">
                                     <property name="visible">True</property>
-                                    <property name="orientation">horizontal</property>
-                                    <property name="halign">center</property>
-                                    <property name="margin_top">12</property>
+                                    <property name="orientation">vertical</property>
                                     <property name="margin_bottom">12</property>
                                     <child>
-                                      <object class="GtkLabel">
+                                      <object class="GtkLabel" id="label_addons_title">
                                         <property name="visible">True</property>
+                                        <property name="halign">start</property>
+                                        <property name="valign">start</property>
+                                        <property name="hexpand">True</property>
                                         <property name="xalign">0</property>
-                                        <property name="yalign">0.5</property>
-                                        <property name="label" translatable="yes">Version History</property>
+                                        <property name="label" translatable="yes">Add-ons</property>
+                                        <style>
+                                          <class name="title-2"/>
+                                        </style>
                                       </object>
                                     </child>
                                     <child>
-                                      <object class="GtkImage">
+                                      <object class="GtkLabel" id="label_addons_uninstalled_app">
                                         <property name="visible">True</property>
-                                        <property name="icon-name">go-next-symbolic</property>
-                                        <property name="margin_start">6</property>
+                                        <property name="xalign">0</property>
+                                        <property name="wrap">True</property>
+                                        <property name="max-width-chars">40</property>
+                                        <property name="label" translatable="yes">Selected add-ons will be 
installed with the application.</property>
                                       </object>
                                     </child>
                                   </object>
                                 </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible" bind-source="label_webapp_warning" bind-property="visible" 
bind-flags="sync-create"/>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
-                        <child>
-                          <object class="GtkLabel" id="label_webapp_warning">
-                            <property name="visible">False</property>
-                            <property name="halign">center</property>
-                            <property name="hexpand">True</property>
-                            <property name="valign">start</property>
-                            <property name="xalign">0.0</property>
-                            <property name="label" translatable="yes">This application can only be used when 
there is an active internet connection.</property>
-                            <style>
-                              <class name="application-details-webapp-warning"/>
-                            </style>
+                                <child>
+                                  <object class="GtkListBox" id="list_box_addons">
+                                    <property name="visible">True</property>
+                                    <property name="selection_mode">none</property>
+                                    <property name="halign">fill</property>
+                                    <property name="valign">start</property>
+                                    <style>
+                                      <class name="content"/>
+                                    </style>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible" bind-source="infobar_details_app_repo" 
bind-property="visible" bind-flags="sync-create"/>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GsInfoBar" id="infobar_details_app_repo">
+                          <object class="HdyClamp">
                             <property name="visible">True</property>
-                            <property name="margin_top">20</property>
-                            <property name="title" translatable="yes">Software Repository Included</property>
-                            <property name="body" translatable="yes">This application includes a software 
repository which provides updates, as well as access to other software.</property>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
+                            <child>
+                              <object class="GsAppContextBar" id="context_bar">
+                                <property name="visible">True</property>
+                              </object>
+                            </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible" bind-source="infobar_details_app_norepo" 
bind-property="visible" bind-flags="sync-create"/>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GsInfoBar" id="infobar_details_app_norepo">
+                          <object class="HdyClamp">
                             <property name="visible">True</property>
-                            <property name="margin_top">20</property>
-                            <property name="title" translatable="yes">No Software Repository 
Included</property>
-                            <property name="body" translatable="yes">This application does not include a 
software repository. It will not be updated with new versions.</property>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
+                            <child>
+                              <object class="GtkListBox" id="list_box_version_history">
+                                <property name="visible">True</property>
+                                <property name="selection_mode">none</property>
+                                <property name="halign">fill</property>
+                                <property name="valign">start</property>
+                                <style>
+                                  <class name="content"/>
+                                </style>
+                                <child>
+                                  <object class="GsAppVersionHistoryRow" id="row_latest_version">
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkListBoxRow" id="version_history_button">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <child>
+                                      <object class="GtkBox">
+                                        <property name="visible">True</property>
+                                        <property name="orientation">horizontal</property>
+                                        <property name="halign">center</property>
+                                        <property name="margin_top">12</property>
+                                        <property name="margin_bottom">12</property>
+                                        <child>
+                                          <object class="GtkLabel">
+                                            <property name="visible">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="yalign">0.5</property>
+                                            <property name="label" translatable="yes">Version 
History</property>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkImage">
+                                            <property name="visible">True</property>
+                                            <property name="icon-name">go-next-symbolic</property>
+                                            <property name="margin_start">6</property>
+                                          </object>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible" bind-source="infobar_details_package_baseos" 
bind-property="visible" bind-flags="sync-create"/>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GsInfoBar" id="infobar_details_package_baseos">
-                            <property name="visible">True</property>
-                            <property name="message_type">warning</property>
-                            <property name="margin_top">20</property>
-                            <property name="title" translatable="yes">This software is already provided by 
your distribution and should not be replaced.</property>
+                          <object class="HdyClamp">
+                            <property name="visible" bind-source="label_webapp_warning" 
bind-property="visible" bind-flags="sync-create"/>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
+                            <child>
+                              <object class="GtkLabel" id="label_webapp_warning">
+                                <property name="visible">False</property>
+                                <property name="halign">center</property>
+                                <property name="hexpand">True</property>
+                                <property name="valign">start</property>
+                                <property name="xalign">0.0</property>
+                                <property name="label" translatable="yes">This application can only be used 
when there is an active internet connection.</property>
+                                <style>
+                                  <class name="application-details-webapp-warning"/>
+                                </style>
+                              </object>
+                            </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible" bind-source="infobar_details_repo" bind-property="visible" 
bind-flags="sync-create"/>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GsInfoBar" id="infobar_details_repo">
-                            <property name="visible">True</property>
-                            <property name="margin_top">20</property>
-                            <property name="title" translatable="yes" comments="Translators: a repository 
file used for installing software has been discovered.">Software Repository Identified</property>
-                            <property name="body" translatable="yes">Adding this software repository will 
give you access to additional software and upgrades.</property>
-                            <property name="warning" translatable="yes">Only use software repositories that 
you trust.</property>
+                          <object class="HdyClamp">
+                            <property name="visible" bind-source="infobar_details_app_repo" 
bind-property="visible" bind-flags="sync-create"/>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
+                            <child>
+                              <object class="GsInfoBar" id="infobar_details_app_repo">
+                                <property name="visible">True</property>
+                                <property name="margin_top">20</property>
+                                <property name="title" translatable="yes">Software Repository 
Included</property>
+                                <property name="body" translatable="yes">This application includes a 
software repository which provides updates, as well as access to other software.</property>
+                              </object>
+                            </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible">True</property>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GtkBox" id="box_license">
-                            <property name="visible">True</property>
-                            <property name="homogeneous">True</property>
-                            <property name="orientation">horizontal</property>
-                            <property name="spacing">12</property>
+                          <object class="HdyClamp">
+                            <property name="visible" bind-source="infobar_details_app_norepo" 
bind-property="visible" bind-flags="sync-create"/>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
+                            <child>
+                              <object class="GsInfoBar" id="infobar_details_app_norepo">
+                                <property name="visible">True</property>
+                                <property name="margin_top">20</property>
+                                <property name="title" translatable="yes">No Software Repository 
Included</property>
+                                <property name="body" translatable="yes">This application does not include a 
software repository. It will not be updated with new versions.</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
 
+                        <child>
+                          <object class="HdyClamp">
+                            <property name="visible" bind-source="infobar_details_package_baseos" 
bind-property="visible" bind-flags="sync-create"/>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
                             <child>
-                              <object class="GsLicenseTile" id="license_tile">
+                              <object class="GsInfoBar" id="infobar_details_package_baseos">
                                 <property name="visible">True</property>
-                                <property name="halign">fill</property>
-                                <property name="valign">start</property>
-                                <signal name="get-involved-activated" 
handler="gs_details_page_license_tile_get_involved_activated_cb"/>
+                                <property name="message_type">warning</property>
+                                <property name="margin_top">20</property>
+                                <property name="title" translatable="yes">This software is already provided 
by your distribution and should not be replaced.</property>
                               </object>
                             </child>
+                          </object>
+                        </child>
 
+                        <child>
+                          <object class="HdyClamp">
+                            <property name="visible" bind-source="infobar_details_repo" 
bind-property="visible" bind-flags="sync-create"/>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
                             <child>
-                              <object class="GtkStack" id="links_stack">
+                              <object class="GsInfoBar" id="infobar_details_repo">
                                 <property name="visible">True</property>
+                                <property name="margin_top">20</property>
+                                <property name="title" translatable="yes" comments="Translators: a 
repository file used for installing software has been discovered.">Software Repository Identified</property>
+                                <property name="body" translatable="yes">Adding this software repository 
will give you access to additional software and upgrades.</property>
+                                <property name="warning" translatable="yes">Only use software repositories 
that you trust.</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+
+                        <child>
+                          <object class="HdyClamp">
+                            <property name="visible">True</property>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
+                            <child>
+                              <object class="GtkBox" id="box_license">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">True</property>
+                                <property name="orientation">horizontal</property>
+                                <property name="spacing">12</property>
 
                                 <child>
-                                  <object class="GtkBox">
+                                  <object class="GsLicenseTile" id="license_tile">
+                                    <property name="visible">True</property>
+                                    <property name="halign">fill</property>
+                                    <property name="valign">start</property>
+                                    <signal name="get-involved-activated" 
handler="gs_details_page_license_tile_get_involved_activated_cb"/>
+                                  </object>
+                                </child>
+
+                                <child>
+                                  <object class="GtkStack" id="links_stack">
                                     <property name="visible">True</property>
-                                    <property name="hexpand-set">True</property>
-                                    <style>
-                                      <class name="content-box"/>
-                                    </style>
 
                                     <child>
                                       <object class="GtkBox">
                                         <property name="visible">True</property>
-                                        <property name="orientation">vertical</property>
-                                        <property name="spacing">8</property>
-                                        <property name="margin">14</property>
-                                        <property name="valign">center</property>
-                                        <property name="hexpand">True</property>
+                                        <property name="hexpand-set">True</property>
                                         <style>
-                                          <class name="dim-label"/>
+                                          <class name="content-box"/>
                                         </style>
 
                                         <child>
-                                          <object class="GtkImage">
-                                            <property name="icon-name">dialog-question-symbolic</property>
-                                            <property name="pixel-size">96</property>
-                                            <property name="visible">True</property>
-                                            <property name="margin-bottom">8</property>
-                                          </object>
-                                        </child>
-                                        <child>
-                                          <object class="GtkLabel">
-                                            <property name="label" translatable="yes">No Metadata</property>
+                                          <object class="GtkBox">
                                             <property name="visible">True</property>
-                                            <attributes>
-                                              <attribute name="weight" value="bold"/>
-                                            </attributes>
-                                          </object>
-                                        </child>
-                                        <child>
-                                          <object class="GtkLabel">
-                                            <property name="justify">center</property>
-                                            <property name="label" translatable="yes">This app doesn’t 
provide any links to a website, code repository or issue tracker.</property>
-                                            <property name="visible">True</property>
-                                            <property name="wrap">True</property>
-                                            <property name="xalign">0.5</property>
+                                            <property name="orientation">vertical</property>
+                                            <property name="spacing">8</property>
+                                            <property name="margin">14</property>
+                                            <property name="valign">center</property>
+                                            <property name="hexpand">True</property>
+                                            <style>
+                                              <class name="dim-label"/>
+                                            </style>
+
+                                            <child>
+                                              <object class="GtkImage">
+                                                <property 
name="icon-name">dialog-question-symbolic</property>
+                                                <property name="pixel-size">96</property>
+                                                <property name="visible">True</property>
+                                                <property name="margin-bottom">8</property>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkLabel">
+                                                <property name="label" translatable="yes">No 
Metadata</property>
+                                                <property name="visible">True</property>
+                                                <attributes>
+                                                  <attribute name="weight" value="bold"/>
+                                                </attributes>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkLabel">
+                                                <property name="justify">center</property>
+                                                <property name="label" translatable="yes">This app doesn’t 
provide any links to a website, code repository or issue tracker.</property>
+                                                <property name="visible">True</property>
+                                                <property name="wrap">True</property>
+                                                <property name="xalign">0.5</property>
+                                              </object>
+                                            </child>
                                           </object>
                                         </child>
                                       </object>
+                                      <packing>
+                                        <property name="name">empty</property>
+                                      </packing>
                                     </child>
-                                  </object>
-                                  <packing>
-                                    <property name="name">empty</property>
-                                  </packing>
-                                </child>
-
-                                <child>
-                                  <object class="GtkListBox">
-                                    <property name="visible">True</property>
-                                    <property name="selection_mode">none</property>
-                                    <property name="halign">fill</property>
-                                    <property name="valign">start</property>
-                                    <style>
-                                      <class name="content"/>
-                                    </style>
 
                                     <child>
-                                      <object class="HdyActionRow" id="project_website_row">
-                                        <property name="activatable">True</property>
+                                      <object class="GtkListBox">
                                         <property name="visible">True</property>
-                                        <property name="title" translatable="yes">Project _Website</property>
-                                        <!-- This is a placeholder; the actual URI is set in code -->
-                                        <property name="subtitle">gnome.org</property>
-                                        <property name="use-underline">True</property>
-                                        <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
-                                        <child type="prefix">
-                                          <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
-                                          <object class="GtkImage">
-                                            <property name="visible">True</property>
-                                            <property name="icon-name">web-browser-symbolic</property>
-                                            <property name="icon-size">4</property>
-                                          </object>
-                                        </child>
+                                        <property name="selection_mode">none</property>
+                                        <property name="halign">fill</property>
+                                        <property name="valign">start</property>
+                                        <style>
+                                          <class name="content"/>
+                                        </style>
+
                                         <child>
-                                          <object class="GtkImage">
+                                          <object class="HdyActionRow" id="project_website_row">
+                                            <property name="activatable">True</property>
                                             <property name="visible">True</property>
-                                            <property name="icon-name">external-link-symbolic</property>
+                                            <property name="title" translatable="yes">Project 
_Website</property>
+                                            <!-- This is a placeholder; the actual URI is set in code -->
+                                            <property name="subtitle">gnome.org</property>
+                                            <property name="use-underline">True</property>
+                                            <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
+                                            <child type="prefix">
+                                              <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">web-browser-symbolic</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">external-link-symbolic</property>
+                                              </object>
+                                            </child>
                                           </object>
                                         </child>
-                                      </object>
-                                    </child>
 
-                                    <child>
-                                      <object class="HdyActionRow" id="donate_row">
-                                        <property name="activatable">True</property>
-                                        <property name="visible">True</property>
-                                        <property name="title" translatable="yes">_Donate</property>
-                                        <!-- This is a placeholder; the actual URI is set in code -->
-                                        <property name="subtitle">gnome.org</property>
-                                        <property name="use-underline">True</property>
-                                        <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
-                                        <child type="prefix">
-                                          <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
-                                          <object class="GtkImage">
-                                            <property name="visible">True</property>
-                                            <property name="icon-name">money-symbolic</property>
-                                            <property name="icon-size">4</property>
-                                          </object>
-                                        </child>
                                         <child>
-                                          <object class="GtkImage">
+                                          <object class="HdyActionRow" id="donate_row">
+                                            <property name="activatable">True</property>
                                             <property name="visible">True</property>
-                                            <property name="icon-name">external-link-symbolic</property>
+                                            <property name="title" translatable="yes">_Donate</property>
+                                            <!-- This is a placeholder; the actual URI is set in code -->
+                                            <property name="subtitle">gnome.org</property>
+                                            <property name="use-underline">True</property>
+                                            <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
+                                            <child type="prefix">
+                                              <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">money-symbolic</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">external-link-symbolic</property>
+                                              </object>
+                                            </child>
                                           </object>
                                         </child>
-                                      </object>
-                                    </child>
 
-                                    <child>
-                                      <object class="HdyActionRow" id="translate_row">
-                                        <property name="activatable">True</property>
-                                        <property name="visible">True</property>
-                                        <property name="title" translatable="yes">_Contribute 
Translations</property>
-                                        <!-- This is a placeholder; the actual URI is set in code -->
-                                        <property name="subtitle">gnome.org</property>
-                                        <property name="use-underline">True</property>
-                                        <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
-                                        <child type="prefix">
-                                          <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
-                                          <object class="GtkImage">
-                                            <property name="visible">True</property>
-                                            <property name="icon-name">flag-outline-thin-symbolic</property>
-                                            <property name="icon-size">4</property>
-                                          </object>
-                                        </child>
                                         <child>
-                                          <object class="GtkImage">
+                                          <object class="HdyActionRow" id="translate_row">
+                                            <property name="activatable">True</property>
                                             <property name="visible">True</property>
-                                            <property name="icon-name">external-link-symbolic</property>
+                                            <property name="title" translatable="yes">_Contribute 
Translations</property>
+                                            <!-- This is a placeholder; the actual URI is set in code -->
+                                            <property name="subtitle">gnome.org</property>
+                                            <property name="use-underline">True</property>
+                                            <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
+                                            <child type="prefix">
+                                              <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property 
name="icon-name">flag-outline-thin-symbolic</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">external-link-symbolic</property>
+                                              </object>
+                                            </child>
                                           </object>
                                         </child>
-                                      </object>
-                                    </child>
 
-                                    <child>
-                                      <object class="HdyActionRow" id="report_an_issue_row">
-                                        <property name="activatable">True</property>
-                                        <property name="visible">True</property>
-                                        <property name="title" translatable="yes">_Report an Issue</property>
-                                        <!-- This is a placeholder; the actual URI is set in code -->
-                                        <property name="subtitle">gnome.org</property>
-                                        <property name="use-underline">True</property>
-                                        <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
-                                        <child type="prefix">
-                                          <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
-                                          <object class="GtkImage">
-                                            <property name="visible">True</property>
-                                            <property name="icon-name">computer-fail-symbolic</property>
-                                            <property name="icon-size">4</property>
-                                          </object>
-                                        </child>
                                         <child>
-                                          <object class="GtkImage">
+                                          <object class="HdyActionRow" id="report_an_issue_row">
+                                            <property name="activatable">True</property>
                                             <property name="visible">True</property>
-                                            <property name="icon-name">external-link-symbolic</property>
+                                            <property name="title" translatable="yes">_Report an 
Issue</property>
+                                            <!-- This is a placeholder; the actual URI is set in code -->
+                                            <property name="subtitle">gnome.org</property>
+                                            <property name="use-underline">True</property>
+                                            <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
+                                            <child type="prefix">
+                                              <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">computer-fail-symbolic</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">external-link-symbolic</property>
+                                              </object>
+                                            </child>
                                           </object>
                                         </child>
-                                      </object>
-                                    </child>
 
-                                    <child>
-                                      <object class="HdyActionRow" id="help_row">
-                                        <property name="activatable">True</property>
-                                        <property name="visible">True</property>
-                                        <property name="title" translatable="yes">_Help</property>
-                                        <!-- This is a placeholder; the actual URI is set in code -->
-                                        <property name="subtitle">gnome.org</property>
-                                        <property name="use-underline">True</property>
-                                        <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
-                                        <child type="prefix">
-                                          <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
-                                          <object class="GtkImage">
-                                            <property name="visible">True</property>
-                                            <property name="icon-name">help-browser-symbolic</property>
-                                            <property name="icon-size">4</property>
-                                          </object>
-                                        </child>
                                         <child>
-                                          <object class="GtkImage">
+                                          <object class="HdyActionRow" id="help_row">
+                                            <property name="activatable">True</property>
                                             <property name="visible">True</property>
-                                            <property name="icon-name">external-link-symbolic</property>
+                                            <property name="title" translatable="yes">_Help</property>
+                                            <!-- This is a placeholder; the actual URI is set in code -->
+                                            <property name="subtitle">gnome.org</property>
+                                            <property name="use-underline">True</property>
+                                            <signal name="activated" 
handler="gs_details_page_link_row_activated_cb"/>
+                                            <child type="prefix">
+                                              <!-- Provide the prefix icon as a widget rather than using the 
icon-name property so we can set the size -->
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">help-browser-symbolic</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                            <child>
+                                              <object class="GtkImage">
+                                                <property name="visible">True</property>
+                                                <property name="icon-name">external-link-symbolic</property>
+                                              </object>
+                                            </child>
                                           </object>
                                         </child>
                                       </object>
+                                      <packing>
+                                        <property name="name">links</property>
+                                      </packing>
                                     </child>
                                   </object>
-                                  <packing>
-                                    <property name="name">links</property>
-                                  </packing>
                                 </child>
                               </object>
                             </child>
                           </object>
                         </child>
-                      </object>
-                    </child>
 
-                    <child>
-                      <object class="HdyClamp">
-                        <property name="visible" bind-source="box_reviews" bind-property="visible" 
bind-flags="sync-create"/>
-                        <property name="maximum-size">860</property>
-                        <!-- ~⅔ of the maximum size. -->
-                        <property name="tightening-threshold">576</property>
-                        <property name="margin-start">12</property>
-                        <property name="margin-end">12</property>
                         <child>
-                          <object class="GtkBox" id="box_reviews">
-                            <property name="visible">False</property>
-                            <property name="orientation">vertical</property>
+                          <object class="HdyClamp">
+                            <property name="visible" bind-source="box_reviews" bind-property="visible" 
bind-flags="sync-create"/>
+                            <property name="maximum-size">860</property>
+                            <!-- ~⅔ of the maximum size. -->
+                            <property name="tightening-threshold">576</property>
+                            <property name="margin-start">12</property>
+                            <property name="margin-end">12</property>
                             <child>
-                              <object class="GtkLabel">
-                                <property name="visible">True</property>
-                                <property name="margin_bottom">18</property>
-                                <property name="halign">start</property>
-                                <property name="valign">start</property>
-                                <property name="hexpand">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes" comments="Translators: Header of 
the section with other users&apos; opinions about the app.">Reviews</property>
-                                <style>
-                                  <class name="title-2"/>
-                                </style>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GsReviewHistogram" id="histogram">
+                              <object class="GtkBox" id="box_reviews">
                                 <property name="visible">False</property>
-                                <property name="halign">start</property>
-                                <property name="valign">center</property>
-                                <property name="margin_bottom">32</property>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="button_review">
-                                <property name="visible">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="label" translatable="yes" comments="Translators: Button 
opening a dialog where the users can write and publish their opinions about the apps.">_Write a 
Review</property>
-                                <property name="can_focus">True</property>
-                                <property name="halign">start</property>
-                                <property name="valign">start</property>
-                                <property name="margin_bottom">18</property>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkListBox" id="list_box_reviews">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="selection_mode">none</property>
-                                <style>
-                                  <class name="review-listbox"/>
-                                </style>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="button_more_reviews">
-                                <property name="visible">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="label" translatable="yes" comments="Translators: Button to 
return more application-submitted reviews.">_Show More</property>
-                                <property name="can_focus">True</property>
-                                <property name="halign">start</property>
-                                <property name="valign">start</property>
-                                <property name="margin_top">12</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel">
+                                    <property name="visible">True</property>
+                                    <property name="margin_bottom">18</property>
+                                    <property name="halign">start</property>
+                                    <property name="valign">start</property>
+                                    <property name="hexpand">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes" comments="Translators: Header 
of the section with other users&apos; opinions about the app.">Reviews</property>
+                                    <style>
+                                      <class name="title-2"/>
+                                    </style>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GsReviewHistogram" id="histogram">
+                                    <property name="visible">False</property>
+                                    <property name="halign">start</property>
+                                    <property name="valign">center</property>
+                                    <property name="margin_bottom">32</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="button_review">
+                                    <property name="visible">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="label" translatable="yes" comments="Translators: Button 
opening a dialog where the users can write and publish their opinions about the apps.">_Write a 
Review</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="halign">start</property>
+                                    <property name="valign">start</property>
+                                    <property name="margin_bottom">18</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkListBox" id="list_box_reviews">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="selection_mode">none</property>
+                                    <style>
+                                      <class name="review-listbox"/>
+                                    </style>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="button_more_reviews">
+                                    <property name="visible">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="label" translatable="yes" comments="Translators: Button 
to return more application-submitted reviews.">_Show More</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="halign">start</property>
+                                    <property name="valign">start</property>
+                                    <property name="margin_top">12</property>
+                                  </object>
+                                </child>
                               </object>
                             </child>
                           </object>


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