[Xfce4-commits] <xfce4-settings:bluesabre/display-settings> Ask for user-confirmation upon changing positions (and offer to restore)
Nick Schermer
noreply at xfce.org
Mon Dec 9 12:56:31 CET 2013
Updating branch refs/heads/bluesabre/display-settings
to 3d960a6ef9334fb88492d21cba9a6bb89c634119 (commit)
from 85ea3069a1c06fc5c4e29f0f8ee80cc7d1f852c2 (commit)
commit 3d960a6ef9334fb88492d21cba9a6bb89c634119
Author: Simon Steinbeiss <simon.steinbeiss at 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
More information about the Xfce4-commits
mailing list