Updating branch refs/heads/bluesabre/display-settings to d2a415b5314eef158e8a457c69e3b5622b15aae9 (commit) from 7c45c31da0a14f22dc1aec02e94361674fac68e3 (commit)
commit d2a415b5314eef158e8a457c69e3b5622b15aae9 Author: Sean Davis <smd.seanda...@gmail.com> Date: Wed Sep 26 19:23:33 2012 -0400 Fixed placement of displays when changing often. dialogs/display-settings/main.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c index f7eacd9..f95671f 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, n; + gint value, current_display, selected_display, selected_x, selected_y, n; GObject *display_combobox; XfceRRMode *modes; @@ -275,6 +275,15 @@ display_setting_positions_changed (GtkComboBox *combobox, { /* Change active output to secondary display. */ xfce_randr->active_output = selected_display; + + /* 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; + XFCE_RANDR_POS_X (xfce_randr) = selected_x; + XFCE_RANDR_POS_Y (xfce_randr) = selected_y; + + xfce_randr->active_output = selected_display; /* Move the secondary display to the right of the primary display. */ XFCE_RANDR_POS_X (xfce_randr) = modes[n].width; break; @@ -293,6 +302,15 @@ display_setting_positions_changed (GtkComboBox *combobox, { /* Change active output to primary display. */ xfce_randr->active_output = current_display; + + /* Move the secondary to where the primary is... */ + selected_x = XFCE_RANDR_POS_X (xfce_randr); + selected_y = XFCE_RANDR_POS_Y (xfce_randr); + xfce_randr->active_output = selected_display; + XFCE_RANDR_POS_X (xfce_randr) = selected_x; + XFCE_RANDR_POS_Y (xfce_randr) = selected_y; + + xfce_randr->active_output = current_display; /* Move the primary display to the right of the secondary display. */ XFCE_RANDR_POS_X (xfce_randr) = modes[n].width; break; @@ -309,6 +327,15 @@ display_setting_positions_changed (GtkComboBox *combobox, { /* Change active output to secondary display. */ xfce_randr->active_output = selected_display; + + /* 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; + XFCE_RANDR_POS_X (xfce_randr) = selected_x; + XFCE_RANDR_POS_Y (xfce_randr) = selected_y; + + xfce_randr->active_output = selected_display; /* Move the secondary display to the above the primary display. */ XFCE_RANDR_POS_Y (xfce_randr) = modes[n].height; break; @@ -327,6 +354,15 @@ display_setting_positions_changed (GtkComboBox *combobox, { /* Change active output to primary display. */ xfce_randr->active_output = current_display; + + /* Move the secondary to where the primary is... */ + selected_x = XFCE_RANDR_POS_X (xfce_randr); + selected_y = XFCE_RANDR_POS_Y (xfce_randr); + xfce_randr->active_output = selected_display; + XFCE_RANDR_POS_X (xfce_randr) = selected_x; + XFCE_RANDR_POS_Y (xfce_randr) = selected_y; + + xfce_randr->active_output = current_display; /* Move the primary display to the below the secondary display. */ XFCE_RANDR_POS_Y (xfce_randr) = modes[n].height; break; _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits