[gnome-control-center/T20818: 21/54] region: adapt dialogs to small screen



commit a87b48f77680ac762c3a7540481a3e5ce35f9c47
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Jan 7 13:34:49 2016 -0200

    region: adapt dialogs to small screen
    
    This commit adapts the three available dialogs
    to small screen sizes, mostly by propagating
    CcShell's small-screen property.
    
    [endlessm/eos-shell#6133]

 panels/common/cc-language-chooser.c |   18 ++++++++++++++++++
 panels/common/cc-language-chooser.h |    2 ++
 panels/region/cc-format-chooser.c   |   26 +++++++++++++++++++++-----
 panels/region/cc-format-chooser.h   |    2 ++
 panels/region/cc-input-chooser.c    |   18 ++++++++++++++++++
 panels/region/cc-input-chooser.h    |    2 ++
 panels/region/cc-region-panel.c     |    9 +++++++++
 panels/region/format-chooser.ui     |    2 +-
 panels/region/region.ui             |    1 +
 9 files changed, 74 insertions(+), 6 deletions(-)
---
diff --git a/panels/common/cc-language-chooser.c b/panels/common/cc-language-chooser.c
index 961df5a..baf1362 100644
--- a/panels/common/cc-language-chooser.c
+++ b/panels/common/cc-language-chooser.c
@@ -482,3 +482,21 @@ cc_language_chooser_set_language (GtkWidget   *chooser,
 {
         set_locale_id (GTK_DIALOG (chooser), language);
 }
+
+void
+cc_language_chooser_set_is_small_screen (GtkWidget *chooser,
+                                         gboolean   is_small_screen)
+{
+        CcLanguageChooserPrivate *priv = GET_PRIVATE (chooser);
+
+        if (is_small_screen) {
+                gint width, height;
+
+                gtk_window_get_size (gtk_window_get_transient_for (GTK_WINDOW (chooser)), &width, &height);
+                gtk_widget_set_size_request (GTK_WIDGET (chooser), width, height);
+
+                gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolledwindow),
+                                                GTK_POLICY_AUTOMATIC,
+                                                GTK_POLICY_AUTOMATIC);
+        }
+}
diff --git a/panels/common/cc-language-chooser.h b/panels/common/cc-language-chooser.h
index 5329e8b..0398955 100644
--- a/panels/common/cc-language-chooser.h
+++ b/panels/common/cc-language-chooser.h
@@ -31,6 +31,8 @@ void         cc_language_chooser_clear_filter (GtkWidget   *chooser);
 const gchar *cc_language_chooser_get_language (GtkWidget   *chooser);
 void         cc_language_chooser_set_language (GtkWidget   *chooser,
                                                const gchar *language);
+void         cc_language_chooser_set_is_small_screen (GtkWidget *chooser,
+                                                      gboolean   is_small_screen);
 
 G_END_DECLS
 
diff --git a/panels/region/cc-format-chooser.c b/panels/region/cc-format-chooser.c
index 4998de9..9171475 100644
--- a/panels/region/cc-format-chooser.c
+++ b/panels/region/cc-format-chooser.c
@@ -197,7 +197,7 @@ sort_regions (gconstpointer a,
 }
 
 static GtkWidget *
-padded_label_new (char *text, gboolean narrow)
+padded_label_new (char *text)
 {
         GtkWidget *widget;
 
@@ -205,8 +205,6 @@ padded_label_new (char *text, gboolean narrow)
         gtk_widget_set_halign (widget, GTK_ALIGN_CENTER);
         gtk_widget_set_margin_top (widget, 10);
         gtk_widget_set_margin_bottom (widget, 10);
-        gtk_widget_set_margin_start (widget, narrow ? 10 : 80);
-        gtk_widget_set_margin_end (widget, narrow ? 10 : 80);
         gtk_box_pack_start (GTK_BOX (widget), gtk_label_new (text), FALSE, FALSE, 0);
 
         return widget;
@@ -230,7 +228,7 @@ region_widget_new (const gchar *locale_id,
         locale_untranslated_name = gnome_get_country_from_locale (locale_id, "C");
 
         row = gtk_list_box_row_new ();
-        box = padded_label_new (locale_name, is_extra);
+        box = padded_label_new (locale_name);
         gtk_container_add (GTK_CONTAINER (row), box);
 
         /* We add a check on each side of the label to keep it centered. */
@@ -282,7 +280,7 @@ no_results_widget_new (void)
 {
         GtkWidget *widget;
 
-        widget = padded_label_new (_("No regions found"), TRUE);
+        widget = padded_label_new (_("No regions found"));
         gtk_widget_set_sensitive (widget, FALSE);
         return widget;
 }
@@ -591,3 +589,21 @@ cc_format_chooser_set_region (GtkWidget   *chooser,
 {
         set_locale_id (GTK_DIALOG (chooser), region);
 }
+
+void
+cc_format_chooser_set_is_small_screen (GtkWidget *chooser,
+                                       gboolean   is_small_screen)
+{
+        CcFormatChooserPrivate *priv = GET_PRIVATE (chooser);
+
+        if (is_small_screen) {
+                gint width, height;
+
+                gtk_window_get_size (gtk_window_get_transient_for (GTK_WINDOW (chooser)), &width, &height);
+                gtk_widget_set_size_request (GTK_WIDGET (chooser), width, height);
+
+                gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolledwindow),
+                                                GTK_POLICY_NEVER,
+                                                GTK_POLICY_AUTOMATIC);
+        }
+}
diff --git a/panels/region/cc-format-chooser.h b/panels/region/cc-format-chooser.h
index b08afa1..c27774d 100644
--- a/panels/region/cc-format-chooser.h
+++ b/panels/region/cc-format-chooser.h
@@ -31,6 +31,8 @@ void         cc_format_chooser_clear_filter (GtkWidget   *chooser);
 const gchar *cc_format_chooser_get_region   (GtkWidget   *chooser);
 void         cc_format_chooser_set_region   (GtkWidget   *chooser,
                                              const gchar *region);
+void         cc_format_chooser_set_is_small_screen (GtkWidget *chooser,
+                                                    gboolean   is_small_screen);
 
 G_END_DECLS
 
diff --git a/panels/region/cc-input-chooser.c b/panels/region/cc-input-chooser.c
index b995786..cb2b163 100644
--- a/panels/region/cc-input-chooser.c
+++ b/panels/region/cc-input-chooser.c
@@ -1179,3 +1179,21 @@ cc_input_chooser_reset (GtkWidget *chooser)
   g_clear_pointer (&priv->filter_words, g_strfreev);
   show_locale_rows (chooser);
 }
+
+void
+cc_input_chooser_set_is_small_screen (GtkWidget *chooser,
+                                      gboolean   is_small_screen)
+{
+        CcInputChooserPrivate *priv = GET_PRIVATE (chooser);
+
+        if (is_small_screen) {
+                gint width, height;
+
+                gtk_window_get_size (gtk_window_get_transient_for (GTK_WINDOW (chooser)), &width, &height);
+                gtk_widget_set_size_request (GTK_WIDGET (chooser), width * MAIN_WINDOW_WIDTH_RATIO, height);
+
+                gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolledwindow),
+                                                GTK_POLICY_AUTOMATIC,
+                                                GTK_POLICY_AUTOMATIC);
+        }
+}
diff --git a/panels/region/cc-input-chooser.h b/panels/region/cc-input-chooser.h
index f4fbdc7..17e77eb 100644
--- a/panels/region/cc-input-chooser.h
+++ b/panels/region/cc-input-chooser.h
@@ -38,6 +38,8 @@ gboolean     cc_input_chooser_get_selected (GtkWidget    *chooser,
                                             gchar       **name);
 
 void         cc_input_chooser_reset (GtkWidget *chooser);
+void         cc_input_chooser_set_is_small_screen (GtkWidget *chooser,
+                                                   gboolean   is_small_screen);
 
 G_END_DECLS
 
diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c
index d8c0794..0dd2b73 100644
--- a/panels/region/cc-region-panel.c
+++ b/panels/region/cc-region-panel.c
@@ -448,10 +448,13 @@ show_language_chooser (CcRegionPanel *self)
 {
         GtkWidget *toplevel;
         GtkWidget *chooser;
+        CcShell *shell;
 
+        shell = cc_panel_get_shell (CC_PANEL (self));
         toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
         chooser = cc_language_chooser_new (toplevel);
         cc_language_chooser_set_language (chooser, get_effective_language (self));
+        cc_language_chooser_set_is_small_screen (chooser, cc_shell_is_small_screen (shell));
         g_signal_connect (chooser, "response",
                           G_CALLBACK (language_response), self);
         gtk_window_present (GTK_WINDOW (chooser));
@@ -482,10 +485,13 @@ show_region_chooser (CcRegionPanel *self)
 {
         GtkWidget *toplevel;
         GtkWidget *chooser;
+        CcShell *shell;
 
+        shell = cc_panel_get_shell (CC_PANEL (self));
         toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
         chooser = cc_format_chooser_new (toplevel);
         cc_format_chooser_set_region (chooser, get_effective_region (self));
+        cc_format_chooser_set_is_small_screen (chooser, cc_shell_is_small_screen (shell));
         g_signal_connect (chooser, "response",
                           G_CALLBACK (format_response), self);
         gtk_window_present (GTK_WINDOW (chooser));
@@ -1129,10 +1135,12 @@ show_input_chooser (CcRegionPanel *self)
        CcRegionPanelPrivate *priv = self->priv;
         GtkWidget *chooser;
         GtkWidget *toplevel;
+        CcShell *shell;
 
         chooser = g_object_get_data (G_OBJECT (self), "input-chooser");
 
         if (!chooser) {
+                shell = cc_panel_get_shell (CC_PANEL (self));
                 toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
                 chooser = cc_input_chooser_new (GTK_WINDOW (toplevel),
                                                 priv->login,
@@ -1143,6 +1151,7 @@ show_input_chooser (CcRegionPanel *self)
                                                 NULL
 #endif
                                                 );
+                cc_input_chooser_set_is_small_screen (chooser, cc_shell_is_small_screen (shell));
                 g_object_ref (chooser);
                 g_object_set_data_full (G_OBJECT (self), "input-chooser",
                                         chooser, g_object_unref);
diff --git a/panels/region/format-chooser.ui b/panels/region/format-chooser.ui
index 363dc84..3844b51 100644
--- a/panels/region/format-chooser.ui
+++ b/panels/region/format-chooser.ui
@@ -43,7 +43,7 @@
             <property name="margin_top">6</property>
             <property name="margin_bottom">6</property>
             <property name="hexpand">True</property>
-            <property name="spacing">20</property>
+            <property name="spacing">12</property>
             <child>
               <object class="GtkBox" id="box2">
                 <property name="visible">True</property>
diff --git a/panels/region/region.ui b/panels/region/region.ui
index 0d67233..719e103 100644
--- a/panels/region/region.ui
+++ b/panels/region/region.ui
@@ -573,6 +573,7 @@
            <property name="hexpand">True</property>
            <property name="label" translatable="yes">Login settings are used by all users when logging into 
the system</property>
            <property name="margin_bottom">12</property>
+           <property name="wrap">True</property>
            <style>
              <class name="dim-label"/>
            </style>


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