Updating branch refs/heads/bluesabre/display-settings
         to 3d960a6ef9334fb88492d21cba9a6bb89c634119 (commit)
       from 85ea3069a1c06fc5c4e29f0f8ee80cc7d1f852c2 (commit)

commit 3d960a6ef9334fb88492d21cba9a6bb89c634119
Author: Simon Steinbeiss <simon.steinbe...@elfenbeinturm.at>
Date:   Mon Oct 1 17:18:28 2012 +0200

    Ask for user-confirmation upon changing positions
    (and offer to restore)

 dialogs/display-settings/main.c |   49 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
index 21d1f74..57c8ae8 100644
--- a/dialogs/display-settings/main.c
+++ b/dialogs/display-settings/main.c
@@ -247,7 +247,7 @@ static void
 display_setting_positions_changed (GtkComboBox *combobox,
                                      GtkBuilder  *builder)
 {
-    gint value, current_display, selected_display, selected_x, selected_y;
+    gint value, current_display, selected_display, selected_x, selected_y, 
old_x1, old_y1, old_x2, old_y2;
     GObject *display_combobox;
     XfceRRMode   *current_mode;
     
@@ -275,10 +275,19 @@ display_setting_positions_changed (GtkComboBox *combobox,
             /* Move the primary to where the secondary is... */
             selected_x = XFCE_RANDR_POS_X (xfce_randr);
             selected_y = XFCE_RANDR_POS_Y (xfce_randr);
+            
             xfce_randr->active_output = current_display;
+            
+            /* Save positions to be able to restore */
+            old_x2 = selected_x; old_y2 = selected_y;
+            old_x1 = XFCE_RANDR_POS_X (xfce_randr);
+            old_y1 = XFCE_RANDR_POS_Y (xfce_randr);
+            
             XFCE_RANDR_POS_X (xfce_randr) = selected_x;
             XFCE_RANDR_POS_Y (xfce_randr) = selected_y;
             
+
+            
             /* Move the secondary display to the right of the primary display. 
*/
             xfce_randr->active_output = selected_display;
             XFCE_RANDR_POS_X (xfce_randr) = current_mode->width;
@@ -297,6 +306,12 @@ display_setting_positions_changed (GtkComboBox *combobox,
             selected_x = XFCE_RANDR_POS_X (xfce_randr);
             selected_y = XFCE_RANDR_POS_Y (xfce_randr);
             xfce_randr->active_output = selected_display;
+            
+            /* Save positions to be able to restore */
+            old_x1 = selected_x; old_y1 = selected_y;
+            old_x2 = XFCE_RANDR_POS_X (xfce_randr);
+            old_y2 = XFCE_RANDR_POS_Y (xfce_randr);
+            
             XFCE_RANDR_POS_X (xfce_randr) = selected_x;
             XFCE_RANDR_POS_Y (xfce_randr) = selected_y;
             
@@ -315,6 +330,12 @@ display_setting_positions_changed (GtkComboBox *combobox,
             selected_x = XFCE_RANDR_POS_X (xfce_randr);
             selected_y = XFCE_RANDR_POS_Y (xfce_randr);
             xfce_randr->active_output = current_display;
+            
+            /* Save positions to be able to restore */
+            old_x2 = selected_x; old_y2 = selected_y;
+            old_x1 = XFCE_RANDR_POS_X (xfce_randr);
+            old_y1 = XFCE_RANDR_POS_Y (xfce_randr);
+            
             XFCE_RANDR_POS_X (xfce_randr) = selected_x;
             XFCE_RANDR_POS_Y (xfce_randr) = selected_y;
             
@@ -336,6 +357,12 @@ display_setting_positions_changed (GtkComboBox *combobox,
             selected_x = XFCE_RANDR_POS_X (xfce_randr);
             selected_y = XFCE_RANDR_POS_Y (xfce_randr);
             xfce_randr->active_output = selected_display;
+            
+            /* Save positions to be able to restore */
+            old_x1 = selected_x; old_y1 = selected_y;
+            old_x2 = XFCE_RANDR_POS_X (xfce_randr);
+            old_y2 = XFCE_RANDR_POS_Y (xfce_randr);
+            
             XFCE_RANDR_POS_X (xfce_randr) = selected_x;
             XFCE_RANDR_POS_Y (xfce_randr) = selected_y;
             
@@ -369,6 +396,26 @@ display_setting_positions_changed (GtkComboBox *combobox,
                             
     /* Apply all changes */
     xfce_randr_apply (xfce_randr, "Default", display_channel);
+    
+    /* Ask user confirmation */
+    if (!display_setting_timed_confirmation (builder))
+    {
+        /* Restore the primary display */
+        xfce_randr->active_output = current_display;
+        XFCE_RANDR_POS_X (xfce_randr) = old_x1;
+        XFCE_RANDR_POS_Y (xfce_randr) = old_y1;
+        xfce_randr_save_output (xfce_randr, "Default", display_channel,
+                            xfce_randr->active_output);
+
+        /* Restore the secondary display */
+        xfce_randr->active_output = selected_display;
+        XFCE_RANDR_POS_X (xfce_randr) = old_x2;
+        XFCE_RANDR_POS_Y (xfce_randr) = old_y2;
+        xfce_randr_save_output (xfce_randr, "Default", display_channel,
+                                xfce_randr->active_output);
+        
+        xfce_randr_apply (xfce_randr, "Default", display_channel);
+    }
 }
 
 static void
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to