[Xfce4-commits] [xfce/xfce4-settings] 22/67: display: Auto-activate if there is only one matching profile

noreply at xfce.org noreply at xfce.org
Sat Sep 22 11:23:13 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 def633a8ed9c17550d1030209a7db053f2588557
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Thu Aug 16 00:24:25 2018 +0200

    display: Auto-activate if there is only one matching profile
---
 dialogs/display-settings/main.c                    | 40 ++++++++++++++++++++--
 .../display-settings/minimal-display-dialog.glade  |  2 +-
 2 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
index 4948db3..62db06c 100644
--- a/dialogs/display-settings/main.c
+++ b/dialogs/display-settings/main.c
@@ -150,6 +150,7 @@ GList *current_outputs = NULL;
 GtkWidget *randr_outputs_combobox = NULL;
 GtkWidget *apply_button = NULL;
 
+/* Profile buttons */
 GtkWidget *profile_save_button = NULL;
 GtkWidget *profile_delete_button = NULL;
 GtkWidget *profile_apply_button = NULL;
@@ -172,6 +173,9 @@ static void display_setting_primary_toggled                  (GtkToggleButton *b
 
 static void display_setting_mirror_displays_populate         (GtkBuilder *builder);
 
+static void display_settings_profile_apply                   (GtkWidget       *widget,
+                                                              GtkBuilder      *builder);
+
 static void
 display_settings_changed (void)
 {
@@ -1324,6 +1328,10 @@ display_settings_profile_combobox_populate (GtkBuilder *builder)
         m++;
     }
 
+    /* If there is only one profile we auto-select and activate it */
+    if (m == 1)
+        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter);
+
     /* Release the store */
     g_list_free (profiles);
     g_object_unref (G_OBJECT (store));
@@ -1490,16 +1498,43 @@ display_settings_profile_changed (GtkWidget *widget, GtkBuilder *builder)
 {
     GtkWidget *entry = gtk_bin_get_child ((GtkBin*) gtk_builder_get_object (builder, "randr-profile"));
     gboolean sensitive = gtk_entry_get_text_length (GTK_ENTRY (entry));
+    GtkTreeIter   iter;
 
     gtk_widget_set_sensitive (profile_save_button, sensitive);
     gtk_widget_set_sensitive (profile_delete_button, sensitive);
     gtk_widget_set_sensitive (profile_apply_button, sensitive);
+
+    if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter))
+    {
+        display_settings_profile_apply (widget, builder);
+    }
+}
+
+static void
+display_settings_minimal_profile_apply (GtkComboBox *combobox, GtkBuilder *builder)
+{
+    GtkTreeModel *model;
+    GtkTreeIter   iter;
+    GValue       *value;
+    const gchar  *profile;
+    gchar        *profile_hash;
+
+    if (gtk_combo_box_get_active_iter (combobox, &iter))
+    {
+        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));
+        g_warning ("this is the value: %s / %s", profile, profile_hash);
+        xfce_randr_apply (xfce_randr, profile_hash, display_channel);
+    }
+    g_value_unset (value);
 }
 
 static void
 display_settings_profile_apply (GtkWidget *widget, GtkBuilder *builder)
 {
-    GtkWidget *entry = gtk_bin_get_child ((GtkBin*) gtk_builder_get_object (builder, "randr-profile"));
+    GtkWidget *entry = gtk_bin_get_child (GTK_BIN (widget));
 
     if (gtk_entry_get_text_length (GTK_ENTRY (entry)))
     {
@@ -3345,7 +3380,6 @@ display_settings_show_minimal_dialog (GdkDisplay *display)
         /* Populate the combobox */
         display_settings_combobox_populate (builder);
         display_settings_profile_combobox_populate (builder);
-        g_signal_connect (G_OBJECT (auto_button), "changed", G_CALLBACK (display_settings_profile_apply), builder);
 
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fake_button), TRUE);
 
@@ -3440,6 +3474,8 @@ display_settings_show_minimal_dialog (GdkDisplay *display)
 
         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);
+
         /* Show the minimal dialog and start the main loop */
         gtk_window_present (GTK_WINDOW (dialog));
         gtk_main ();
diff --git a/dialogs/display-settings/minimal-display-dialog.glade b/dialogs/display-settings/minimal-display-dialog.glade
index 0ec3c48..af455d9 100644
--- a/dialogs/display-settings/minimal-display-dialog.glade
+++ b/dialogs/display-settings/minimal-display-dialog.glade
@@ -199,7 +199,7 @@
                 <property name="entry_text_column">0</property>
               </object>
               <packing>
-                <property name="expand">True</property>
+                <property name="expand">False</property>
                 <property name="fill">True</property>
                 <property name="position">1</property>
               </packing>

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


More information about the Xfce4-commits mailing list