Updating branch refs/heads/master to e062536bd06ad2d7f0258030c528845ce74d4bc9 (commit) from 03ab97102f8b277739e7d13ad35943ef734deb7f (commit)
commit e062536bd06ad2d7f0258030c528845ce74d4bc9 Author: Jérôme Guelfucci <jero...@xfce.org> Date: Sun Aug 29 11:59:07 2010 +0200 Make the display settings dialog pluggable (Bug #6524). dialogs/display-settings/display-dialog.glade | 11 +++++- dialogs/display-settings/main.c | 39 ++++++++++++++------ .../xfce-display-settings.desktop.in | 1 + 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/dialogs/display-settings/display-dialog.glade b/dialogs/display-settings/display-dialog.glade index e0ddf8c..dcc0af4 100644 --- a/dialogs/display-settings/display-dialog.glade +++ b/dialogs/display-settings/display-dialog.glade @@ -18,7 +18,7 @@ <property name="orientation">vertical</property> <property name="spacing">2</property> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkHBox" id="plug-child"> <property name="visible">True</property> <property name="border_width">12</property> <property name="spacing">12</property> @@ -52,8 +52,14 @@ <child> <object class="GtkCheckButton" id="output-on"> <property name="label" translatable="yes">_Use this output</property> + <property name="can_focus">False</property> + <property name="receives_default">False</property> <property name="use_underline">True</property> + <property name="draw_indicator">False</property> </object> + <packing> + <property name="position">0</property> + </packing> </child> <child> <object class="GtkTable" id="table1"> @@ -169,6 +175,9 @@ </packing> </child> </object> + <packing> + <property name="position">1</property> + </packing> </child> </object> <packing> diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c index 42ad2cd..06efeb8 100644 --- a/dialogs/display-settings/main.c +++ b/dialogs/display-settings/main.c @@ -94,16 +94,14 @@ typedef struct /* Option entries */ +static GdkNativeWindow opt_socket_id = 0; static gboolean opt_version = FALSE; static gboolean minimal = FALSE; static GOptionEntry option_entries[] = { + { "socket-id", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT, &opt_socket_id, N_("Settings manager socket"), N_("SOCKET ID") }, { "version", 'v', 0, G_OPTION_ARG_NONE, &opt_version, N_("Version information"), NULL }, - { - "minimal", 'm', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &minimal, - N_("Minimal interface to set up an external output"), - NULL - }, + { "minimal", 'm', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &minimal, N_("Minimal interface to set up an external output"), NULL}, { NULL } }; @@ -1020,10 +1018,12 @@ display_settings_minimal_dialog_response (GtkDialog *dialog, gint main (gint argc, gchar **argv) { - GtkWidget *dialog; GtkBuilder *builder; - GError *error = NULL; GdkDisplay *display; + GtkWidget *dialog; + GtkWidget *plug; + GObject *plug_child; + GError *error = NULL; gboolean succeeded = TRUE; gint event_base, error_base; guint first, second; @@ -1151,8 +1151,6 @@ main (gint argc, gchar **argv) { /* Build the dialog */ dialog = display_settings_dialog_new (builder); - g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (display_settings_dialog_response), builder); - XFCE_RANDR_EVENT_BASE (xfce_randr) = event_base; /* Set up notifications */ XRRSelectInput (gdk_x11_display_get_xdisplay (display), @@ -1163,14 +1161,33 @@ main (gint argc, gchar **argv) RRNotify + 1); gdk_window_add_filter (gdk_get_default_root_window (), screen_on_event, builder); - /* Show the dialog */ - gtk_widget_show (dialog); + if (G_UNLIKELY (opt_socket_id == 0)) + { + g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (display_settings_dialog_response), builder); + + /* Show the dialog */ + gtk_widget_show (dialog); + } + else + { + /* Create plug widget */ + plug = gtk_plug_new (opt_socket_id); + g_signal_connect (plug, "delete-event", G_CALLBACK (gtk_main_quit), NULL); + gtk_widget_show (plug); + + /* Get plug child widget */ + plug_child = gtk_builder_get_object (builder, "plug-child"); + gtk_widget_reparent (GTK_WIDGET (plug_child), plug); + gtk_widget_show (GTK_WIDGET (plug_child)); + } /* To prevent the settings dialog to be saved in the session */ gdk_set_sm_client_id ("FAKE ID"); /* Enter the main loop */ gtk_main (); + + gtk_widget_destroy (dialog); } else { diff --git a/dialogs/display-settings/xfce-display-settings.desktop.in b/dialogs/display-settings/xfce-display-settings.desktop.in index d16b236..ccec807 100644 --- a/dialogs/display-settings/xfce-display-settings.desktop.in +++ b/dialogs/display-settings/xfce-display-settings.desktop.in @@ -9,4 +9,5 @@ Type=Application Categories=X-XFCE;Settings;DesktopSettings;X-XfceSettingsDialog; StartupNotify=true OnlyShowIn=XFCE; +X-XfcePluggable=true X-XfceHelpFile=xfce4-settings.html _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits