[Xfce4-commits] <xfce4-settings:ochosi/primary> Fix setting primary output and correctly setting all others secondary
Simon Steinbeiss
noreply at xfce.org
Mon Dec 17 17:22:01 CET 2012
Updating branch refs/heads/ochosi/primary
to 36fe0952354c7a7da8bc037d4a92fb6bac6a9a03 (commit)
from a42364389f5f6399376cbfa2a4cf750b731ba062 (commit)
commit 36fe0952354c7a7da8bc037d4a92fb6bac6a9a03
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date: Mon Dec 17 17:21:11 2012 +0100
Fix setting primary output and correctly setting all others secondary
dialogs/display-settings/main.c | 53 +++++++++++++++++++++++++++++++++-----
1 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
index 7ed4761..3c619fe 100644
--- a/dialogs/display-settings/main.c
+++ b/dialogs/display-settings/main.c
@@ -1218,27 +1218,64 @@ display_setting_primary_toggled (GtkToggleButton *togglebutton,
if (gtk_toggle_button_get_active (togglebutton))
{
- /* Set currently active display as primary and all others as secondary */
+ /* Set currently active display as primary */
xfce_randr->status[active_output]=XFCE_OUTPUT_STATUS_PRIMARY;
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,
+ active_output, FALSE);
+ /* and all others as secondary */
for (m = 0; m < xfce_randr->noutput; ++m)
{
if (m != active_output)
{
xfce_randr->status[m]=XFCE_OUTPUT_STATUS_SECONDARY;
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,
+ m, FALSE);
}
}
+
}
else
+ {
xfce_randr->status[active_output]=XFCE_OUTPUT_STATUS_SECONDARY;
+ xfce_randr_save_output (xfce_randr, "Default", display_channel,
+ active_output, FALSE);
+ }
/* Apply the changes */
- xfce_randr_save_output (xfce_randr, "Default", display_channel,
- active_output, FALSE);
xfce_randr_apply (xfce_randr, "Default", display_channel);
}
static void
+display_setting_primary_populate (GtkBuilder *builder)
+{
+ GObject *check;
+
+ if (!xfce_randr)
+ return;
+
+ check = gtk_builder_get_object (builder, "primary");
+
+ if (xfce_randr->noutput > 1)
+ gtk_widget_show (GTK_WIDGET (check));
+ else
+ {
+ gtk_widget_hide (GTK_WIDGET (check));
+ return;
+ }
+
+ /* Block the "changed" signal to avoid triggering the confirmation dialog */
+ g_signal_handlers_block_by_func (check, display_setting_primary_toggled,
+ builder);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check),
+ xfce_randr->status[active_output] != XFCE_OUTPUT_STATUS_SECONDARY);
+ /* Unblock the signal */
+ g_signal_handlers_unblock_by_func (check, display_setting_primary_toggled,
+ builder);
+}
+
+
+static void
display_setting_output_toggled (GtkToggleButton *togglebutton,
GtkBuilder *builder)
{
@@ -1346,6 +1383,7 @@ display_settings_treeview_selection_changed (GtkTreeSelection *selection,
display_setting_positions_populate (builder);
display_setting_active_displays_populate (builder);
display_setting_output_status_populate (builder);
+ display_setting_primary_populate (builder);
display_setting_mirror_displays_populate (builder);
display_setting_resolutions_populate (builder);
display_setting_refresh_rates_populate (builder);
@@ -1479,7 +1517,7 @@ display_settings_dialog_new (GtkBuilder *builder)
GtkCellRenderer *renderer;
GtkTreeSelection *selection;
GObject *combobox;
- GObject *label, *check, *mirror;
+ GObject *label, *check, *mirror, *primary;
/* Get the treeview */
treeview = gtk_builder_get_object (builder, "randr-outputs");
@@ -1506,17 +1544,21 @@ display_settings_dialog_new (GtkBuilder *builder)
/* Setup the combo boxes */
check = gtk_builder_get_object (builder, "output-on");
mirror = gtk_builder_get_object (builder, "mirror-displays");
+ primary = gtk_builder_get_object (builder, "primary");
g_signal_connect (G_OBJECT (check), "toggled", G_CALLBACK (display_setting_output_toggled), builder);
g_signal_connect (G_OBJECT (mirror), "toggled", G_CALLBACK (display_setting_mirror_displays_toggled), builder);
+ g_signal_connect (G_OBJECT (primary), "toggled", G_CALLBACK (display_setting_primary_toggled), builder);
if (xfce_randr->noutput > 1)
{
gtk_widget_show (GTK_WIDGET (check));
gtk_widget_show (GTK_WIDGET (mirror));
+ gtk_widget_show (GTK_WIDGET (primary));
}
else
{
gtk_widget_hide (GTK_WIDGET (check));
gtk_widget_hide (GTK_WIDGET (mirror));
+ gtk_widget_hide (GTK_WIDGET (primary));
}
label = gtk_builder_get_object (builder, "label-reflection");
@@ -1547,9 +1589,6 @@ display_settings_dialog_new (GtkBuilder *builder)
display_settings_combo_box_create (GTK_COMBO_BOX (combobox));
g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (display_setting_rotations_changed), builder);
- check = gtk_builder_get_object (builder, "primary");
- g_signal_connect (G_OBJECT (check), "toggled", G_CALLBACK (display_setting_primary_toggled), builder);
-
check = gtk_builder_get_object (builder, "minimal-autoshow");
xfconf_g_property_bind (display_channel, "/Notify", G_TYPE_BOOLEAN, check,
"active");
More information about the Xfce4-commits
mailing list