diff --git a/dialogs/display-settings/display-dialog.glade b/dialogs/display-settings/display-dialog.glade
index 0c45e83..80d236c 100644
--- a/dialogs/display-settings/display-dialog.glade
+++ b/dialogs/display-settings/display-dialog.glade
@@ -10,7 +10,6 @@
350
video-display
dialog
- False
Configure screen settings and layout
+
+ 0
+
+
+ 1
+
diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
index 1706964..d5532f9 100644
--- a/dialogs/display-settings/main.c
+++ b/dialogs/display-settings/main.c
@@ -699,6 +699,98 @@ display_setting_output_status_populate (GtkBuilder *builder)
static void
+display_setting_xpos_changed (GtkSpinButton *spinbutton,
+ GtkBuilder *builder)
+{
+ gint value;
+
+ value = gtk_spin_button_get_value_as_int (spinbutton);
+
+ XFCE_RANDR_POS_X (xfce_randr) = value;
+
+ display_setting_refresh_rates_populate (builder);
+
+ /* Apply the changes */
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,
+ xfce_randr->active_output);
+ xfce_randr_apply (xfce_randr, "Default", display_channel);
+}
+
+
+
+static void
+display_setting_xpos_status_populate (GtkBuilder *builder)
+{
+ GObject *xpos;
+ gchar property[512];
+
+ if (!xfce_randr)
+ return;
+
+ if (xfce_randr->noutput <= 1)
+ return;
+
+ xpos = gtk_builder_get_object (builder, "randr-xpos");
+
+ /* Disconnect the "toggled" signal to avoid writing the config again */
+ g_object_disconnect (xpos, "any_signal::value-changed",
+ display_setting_xpos_changed,
+ builder, NULL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (xpos),
+ XFCE_RANDR_POS_X (xfce_randr));
+ /* Reconnect the signal */
+ g_signal_connect (G_OBJECT (xpos), "value-changed", G_CALLBACK (display_setting_xpos_changed),
+ builder);
+}
+
+
+
+static void
+display_setting_ypos_changed (GtkSpinButton *spinbutton,
+ GtkBuilder *builder)
+{
+ gint value;
+
+ value = gtk_spin_button_get_value_as_int (spinbutton);
+
+ XFCE_RANDR_POS_Y (xfce_randr) = value;
+
+ display_setting_refresh_rates_populate (builder);
+
+ /* Apply the changes */
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,
+ xfce_randr->active_output);
+ xfce_randr_apply (xfce_randr, "Default", display_channel);
+}
+
+
+
+static void
+display_setting_ypos_status_populate (GtkBuilder *builder)
+{
+ GObject *ypos;
+
+ if (!xfce_randr)
+ return;
+
+ if (xfce_randr->noutput <= 1)
+ return;
+
+ ypos = gtk_builder_get_object (builder, "randr-ypos");
+ /* Disconnect the "value-changed" signal to avoid writing the config again */
+ g_object_disconnect (ypos, "any_signal::value-changed",
+ display_setting_ypos_changed,
+ builder, NULL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (ypos),
+ XFCE_RANDR_POS_Y (xfce_randr));
+ /* Reconnect the signal */
+ g_signal_connect (G_OBJECT (ypos), "value-changed", G_CALLBACK (display_setting_ypos_changed),
+ builder);
+}
+
+
+
+static void
display_settings_treeview_selection_changed (GtkTreeSelection *selection,
GtkBuilder *builder)
{
@@ -723,6 +815,8 @@ display_settings_treeview_selection_changed (GtkTreeSelection *selection,
display_setting_refresh_rates_populate (builder);
display_setting_rotations_populate (builder);
display_setting_reflections_populate (builder);
+ display_setting_xpos_status_populate (builder);
+ display_setting_ypos_status_populate (builder);
}
}
@@ -827,6 +921,15 @@ display_settings_combo_box_create (GtkComboBox *combobox)
static void
+display_settings_spin_button_create (GtkSpinButton *spinbutton)
+{
+ gtk_spin_button_set_increments(spinbutton, 1,0);
+ gtk_spin_button_set_range(spinbutton,0,4096);
+}
+
+
+
+static void
display_settings_dialog_response (GtkDialog *dialog,
gint response_id,
GtkBuilder *builder)
@@ -843,7 +946,7 @@ display_settings_dialog_new (GtkBuilder *builder)
GtkCellRenderer *renderer;
GtkTreeSelection *selection;
GObject *combobox;
- GObject *label, *check;
+ GObject *label, *check, *spin;
/* Get the treeview */
treeview = gtk_builder_get_object (builder, "randr-outputs");
@@ -874,6 +977,26 @@ display_settings_dialog_new (GtkBuilder *builder)
else
gtk_widget_hide (GTK_WIDGET (check));
+ spin = gtk_builder_get_object (builder, "randr-xpos");
+ display_settings_spin_button_create(GTK_SPIN_BUTTON (spin));
+ if (xfce_randr->noutput > 1)
+ {
+ gtk_widget_show (GTK_WIDGET (spin));
+ g_signal_connect (G_OBJECT (spin), "value-changed", G_CALLBACK (display_setting_xpos_changed), builder);
+ }
+ else
+ gtk_widget_hide (GTK_WIDGET (spin));
+
+ spin = gtk_builder_get_object (builder, "randr-ypos");
+ display_settings_spin_button_create(GTK_SPIN_BUTTON (spin));
+ if (xfce_randr->noutput > 1)
+ {
+ gtk_widget_show (GTK_WIDGET (spin));
+ g_signal_connect (G_OBJECT (spin), "value-changed", G_CALLBACK (display_setting_ypos_changed), builder);
+ }
+ else
+ gtk_widget_hide (GTK_WIDGET (spin));
+
label = gtk_builder_get_object (builder, "label-reflection");
gtk_widget_show (GTK_WIDGET (label));