[Xfce4-commits] <xfce4-settings:master> Make the display settings dialog pluggable (Bug #6524).
Jérôme Guelfucci
noreply at xfce.org
Sun Aug 29 12:02:01 CEST 2010
Updating branch refs/heads/master
to e062536bd06ad2d7f0258030c528845ce74d4bc9 (commit)
from 03ab97102f8b277739e7d13ad35943ef734deb7f (commit)
commit e062536bd06ad2d7f0258030c528845ce74d4bc9
Author: Jérôme Guelfucci <jeromeg at 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
More information about the Xfce4-commits
mailing list