[Xfce4-commits] [xfce/xfce4-settings] 25/67: display: Make auto-profile a toggle button in the minimal dialog

noreply at xfce.org noreply at xfce.org
Sat Sep 22 11:23:16 CEST 2018


This is an automated email from the git hooks/post-receive script.

o   c   h   o   s   i       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/xfce4-settings.

commit ed98ec4af5201f51c5cc2844d8399d34a211c0cd
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Wed Aug 22 22:22:47 2018 +0200

    display: Make auto-profile a toggle button in the minimal dialog
    
    Only show the dropdown when there is more than one profile, otherwise
    display the single profile as a toggle-button.
---
 dialogs/display-settings/main.c                    | 36 +++++++++++++++++-----
 .../display-settings/minimal-display-dialog.glade  | 19 ++++++++++--
 2 files changed, 46 insertions(+), 9 deletions(-)

diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
index baf2aab..6a51059 100644
--- a/dialogs/display-settings/main.c
+++ b/dialogs/display-settings/main.c
@@ -1504,27 +1504,48 @@ display_settings_profile_changed (GtkWidget *widget, GtkBuilder *builder)
 }
 
 static void
-display_settings_minimal_profile_apply (GtkComboBox *combobox, GtkBuilder *builder)
+display_settings_minimal_profile_changed (GtkComboBox *combobox, GtkBuilder *builder)
 {
+    GObject      *auto_profile;
     GtkTreeModel *model;
     GtkTreeIter   iter;
     GValue        value = { 0, };
     const gchar  *profile;
     gchar        *profile_hash;
+    gboolean      profile_match;
 
-    if (gtk_combo_box_get_active_iter (combobox, &iter))
+    auto_profile = gtk_builder_get_object (builder, "auto-profile");
+    profile_match = gtk_combo_box_get_active_iter (combobox, &iter);
+
+    if (profile_match)
     {
         model = gtk_combo_box_get_model (combobox);
         gtk_tree_model_get_value (model, &iter, 0, &value);
         profile = g_value_get_string (&value);
         profile_hash = g_compute_checksum_for_string (G_CHECKSUM_SHA1, profile, strlen(profile));
         xfce_randr_apply (xfce_randr, profile_hash, display_channel);
+        gtk_button_set_label (GTK_BUTTON (auto_profile), profile);
     }
 
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (auto_profile), profile_match);
+    gtk_widget_set_visible (GTK_WIDGET (combobox), !profile_match);
+    gtk_widget_set_visible (GTK_WIDGET (auto_profile), profile_match);
+
     g_value_unset (&value);
 }
 
 static void
+display_settings_minimal_profile_apply (GtkWidget *widget, GtkBuilder *builder)
+{
+    const gchar  *profile;
+    gchar        *profile_hash;
+
+    profile = gtk_button_get_label (GTK_BUTTON (widget));
+    profile_hash = g_compute_checksum_for_string (G_CHECKSUM_SHA1, profile, strlen(profile));
+    xfce_randr_apply (xfce_randr, profile_hash, display_channel);
+}
+
+static void
 display_settings_profile_apply (GtkWidget *widget, GtkBuilder *builder)
 {
     GtkWidget *entry = gtk_bin_get_child (GTK_BIN (widget));
@@ -3336,7 +3357,7 @@ display_settings_show_minimal_dialog (GdkDisplay *display)
     GtkBuilder *builder;
     GtkWidget  *dialog, *cancel;
     GObject    *only_display1, *only_display2, *mirror_displays;
-    GObject    *extend_right, *advanced, *fake_button, *auto_button, *label;
+    GObject    *extend_right, *advanced, *fake_button, *auto_button, *label, *auto_profile;
     GError     *error = NULL;
     gboolean    found = FALSE;
     RRMode      mode;
@@ -3364,6 +3385,7 @@ display_settings_show_minimal_dialog (GdkDisplay *display)
         mirror_displays = gtk_builder_get_object (builder, "mirror");
         extend_right = gtk_builder_get_object (builder, "extend_right");
         only_display2 = gtk_builder_get_object (builder, "display2");
+        auto_profile = gtk_builder_get_object (builder, "auto-profile");
         advanced = gtk_builder_get_object (builder, "advanced_button");
         auto_button = gtk_builder_get_object (builder, "randr-profile");
         fake_button = gtk_builder_get_object (builder, "fake_button");
@@ -3459,15 +3481,15 @@ display_settings_show_minimal_dialog (GdkDisplay *display)
                           builder);
         g_signal_connect (only_display2, "toggled", G_CALLBACK (display_settings_minimal_only_display2_toggled),
                           builder);
-        g_signal_connect (advanced, "clicked", G_CALLBACK (display_settings_minimal_advanced_clicked),
+        g_signal_connect (auto_profile, "toggled", G_CALLBACK (display_settings_minimal_profile_apply),
                           builder);
-        g_signal_connect (auto_button, "clicked", G_CALLBACK (display_settings_minimal_auto_clicked),
+        g_signal_connect (advanced, "clicked", G_CALLBACK (display_settings_minimal_advanced_clicked),
                           builder);
 
         g_signal_connect_swapped (app, "activate", G_CALLBACK (gtk_window_present), dialog);
 
-        g_signal_connect (G_OBJECT (auto_button), "changed", G_CALLBACK (display_settings_minimal_profile_apply), builder);
-        display_settings_minimal_profile_apply (GTK_COMBO_BOX (auto_button), builder);
+        g_signal_connect (G_OBJECT (auto_button), "changed", G_CALLBACK (display_settings_minimal_profile_changed), builder);
+        display_settings_minimal_profile_changed (GTK_COMBO_BOX (auto_button), builder);
 
         /* Show the minimal dialog and start the main loop */
         gtk_window_present (GTK_WINDOW (dialog));
diff --git a/dialogs/display-settings/minimal-display-dialog.glade b/dialogs/display-settings/minimal-display-dialog.glade
index af455d9..d05d04b 100644
--- a/dialogs/display-settings/minimal-display-dialog.glade
+++ b/dialogs/display-settings/minimal-display-dialog.glade
@@ -205,6 +205,21 @@
               </packing>
             </child>
             <child>
+              <object class="GtkRadioButton" id="auto-profile">
+                <property name="label" translatable="yes">radiobutton</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="draw_indicator">False</property>
+                <property name="group">display1</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
               <object class="GtkRadioButton" id="fake_button">
                 <property name="label" translatable="yes">radiobutton</property>
                 <property name="can_focus">True</property>
@@ -215,7 +230,7 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="position">3</property>
               </packing>
             </child>
             <child>
@@ -229,7 +244,7 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">3</property>
+                <property name="position">4</property>
               </packing>
             </child>
           </object>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list