[Xfce4-commits] <xfce4-settings:bluesabre/display-settings> Fix visibility of elements depending on the number of outputs

Simon Steinbeiss noreply at xfce.org
Thu Oct 18 23:38:11 CEST 2012


Updating branch refs/heads/bluesabre/display-settings
         to 9e57b159422264e231c17f5cbbef58b517f56852 (commit)
       from 90d0b481bdb27d926558a1d401e12d3bfb58d2cf (commit)

commit 9e57b159422264e231c17f5cbbef58b517f56852
Author: Lionel Le Folgoc <lionel at lefolgoc.net>
Date:   Wed Oct 17 23:50:42 2012 +0200

    Fix visibility of elements depending on the number of outputs
    
    And connect signals even when only 1 output is present, since hot-plug is
    supported (Bug #8327).
    
    Signed-off-by: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>

 dialogs/display-settings/display-dialog.glade |    2 +-
 dialogs/display-settings/main.c               |   46 +++++++++++++++++++++---
 2 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/dialogs/display-settings/display-dialog.glade b/dialogs/display-settings/display-dialog.glade
index 8bce601..c7357a3 100644
--- a/dialogs/display-settings/display-dialog.glade
+++ b/dialogs/display-settings/display-dialog.glade
@@ -210,7 +210,7 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label1">
+                  <object class="GtkLabel" id="label-position">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
index eb66c75..c7e5332 100644
--- a/dialogs/display-settings/main.c
+++ b/dialogs/display-settings/main.c
@@ -385,7 +385,7 @@ static void
 display_setting_positions_populate (GtkBuilder *builder)
 {
     GtkTreeModel *model;
-    GObject      *combobox, *mirror_displays;
+    GObject      *combobox, *label, *mirror_displays;
     GtkTreeIter   iter;
     guint         n;
 
@@ -394,6 +394,19 @@ display_setting_positions_populate (GtkBuilder *builder)
     model = gtk_combo_box_get_model (GTK_COMBO_BOX (combobox));
     gtk_list_store_clear (GTK_LIST_STORE (model));
 
+    label = gtk_builder_get_object (builder, "label-position");
+    if (xfce_randr->noutput > 1)
+    {
+        gtk_widget_show (GTK_WIDGET (label));
+        gtk_widget_show (GTK_WIDGET (combobox));
+    }
+    else
+    {
+        gtk_widget_hide (GTK_WIDGET (label));
+        gtk_widget_hide (GTK_WIDGET (combobox));
+        return;
+    }
+
     /* Only make the combobox interactive if there is more than one output,
        and if they are not in mirror mode */
     mirror_displays = gtk_builder_get_object (builder, "mirror-displays");
@@ -455,6 +468,14 @@ display_setting_active_displays_populate (GtkBuilder *builder)
     model = gtk_combo_box_get_model (GTK_COMBO_BOX (combobox));
      gtk_list_store_clear (GTK_LIST_STORE (model));
 
+    if (xfce_randr->noutput > 1)
+        gtk_widget_show (GTK_WIDGET (combobox));
+    else
+    {
+        gtk_widget_hide (GTK_WIDGET (combobox));
+        return;
+    }
+
     /* Only make the combobox interactive if there is more than one output,
        and if they are not in mirror mode */
     mirror_displays = gtk_builder_get_object (builder, "mirror-displays");
@@ -1179,6 +1200,14 @@ display_setting_mirror_displays_populate (GtkBuilder *builder)
 
     check = gtk_builder_get_object (builder, "mirror-displays");
 
+    if (xfce_randr->noutput > 1)
+        gtk_widget_show (GTK_WIDGET (check));
+    else
+    {
+        gtk_widget_hide (GTK_WIDGET (check));
+        return;
+    }
+
     /* Can outputs be cloned? */
     if (display_settings_get_n_active_outputs () > 1)
         mode = xfce_randr_clonable_mode (xfce_randr);
@@ -1268,11 +1297,16 @@ display_setting_output_status_populate (GtkBuilder *builder)
     if (!xfce_randr)
         return;
 
-    if (xfce_randr->noutput <= 1)
-        return;
-
     check = gtk_builder_get_object (builder, "output-on");
 
+    if (xfce_randr->noutput > 1)
+        gtk_widget_show (GTK_WIDGET (check));
+    else
+    {
+        gtk_widget_hide (GTK_WIDGET (check));
+        return;
+    }
+
     /* Disconnect the "toggled" signal to avoid writing the config again */
     g_object_disconnect (check, "any_signal::toggled",
                          display_setting_output_toggled,
@@ -1471,12 +1505,12 @@ display_settings_dialog_new (GtkBuilder *builder)
     /* Setup the combo boxes */
     check = gtk_builder_get_object (builder, "output-on");
     mirror = gtk_builder_get_object (builder, "mirror-displays");
+    g_signal_connect (G_OBJECT (check), "toggled", G_CALLBACK (display_setting_output_toggled), builder);
+    g_signal_connect (G_OBJECT (mirror), "toggled", G_CALLBACK (display_setting_mirror_displays_toggled), builder);
     if (xfce_randr->noutput > 1)
     {
         gtk_widget_show (GTK_WIDGET (check));
-        g_signal_connect (G_OBJECT (check), "toggled", G_CALLBACK (display_setting_output_toggled), builder);
         gtk_widget_show (GTK_WIDGET (mirror));
-        g_signal_connect (G_OBJECT (mirror), "toggled", G_CALLBACK (display_setting_mirror_displays_toggled), builder);
     }
     else
     {


More information about the Xfce4-commits mailing list