[Xfce4-commits] <xfce4-panel:devel> * Fix more DBus issues.
Nick Schermer
nick at xfce.org
Tue Aug 11 20:22:51 CEST 2009
Updating branch refs/heads/devel
to 6e6dd036240a2aab463423e3b26cd818a7f7c788 (commit)
from 9177fcda2d222cbc2130de5129d21ddb7bad0de1 (commit)
commit 6e6dd036240a2aab463423e3b26cd818a7f7c788
Author: Nick Schermer <nick at xfce.org>
Date: Sat Aug 9 22:01:01 2008 +0200
* Fix more DBus issues.
panel/main.c | 8 ++--
panel/panel-dbus-service.c | 69 +++++++++++++++------------------
panel/panel-plugin-external.c | 9 +++-
plugins/systray/systray.desktop.in.in | 2 +-
wrapper/main.c | 41 ++++++++++++++-----
wrapper/wrapper-plug.c | 18 ++++----
6 files changed, 82 insertions(+), 65 deletions(-)
diff --git a/panel/main.c b/panel/main.c
index 647e616..6ebe009 100644
--- a/panel/main.c
+++ b/panel/main.c
@@ -193,20 +193,20 @@ main (gint argc, gchar **argv)
goto dbus_return;
}
+
+ /* create dbus service */
+ dbus_service = panel_dbus_service_get ();
/* create a new application */
application = panel_application_get ();
- /* create dbus service */
- dbus_service = panel_dbus_service_get ();
-
/* setup signal handlers to properly quit the main loop */
for (i = 0; i < G_N_ELEMENTS (signums); i++)
signal (signums[i], signal_handler);
/* enter the main loop */
gtk_main ();
-
+
/* release dbus service */
g_object_unref (G_OBJECT (dbus_service));
diff --git a/panel/panel-dbus-service.c b/panel/panel-dbus-service.c
index b1717ca..8d9c847 100644
--- a/panel/panel-dbus-service.c
+++ b/panel/panel-dbus-service.c
@@ -91,7 +91,7 @@ panel_dbus_service_class_init (PanelDBusServiceClass *klass)
/**
* Emited when a plugin property changes
**/
- dbus_service_signals[PROPERTY_CHANGED] =
+ dbus_service_signals[PROPERTY_CHANGED] =
g_signal_new (I_("property-changed"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
@@ -107,24 +107,23 @@ panel_dbus_service_class_init (PanelDBusServiceClass *klass)
}
-
+/* TODO wh can do better with error handling below */
static void
panel_dbus_service_init (PanelDBusService *service)
{
GError *error = NULL;
- gint result;
/* try to connect to the session bus */
service->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
if (G_LIKELY (service->connection != NULL))
{
+ /* request the org.xfce.Panel name */
+ dbus_bus_request_name (dbus_g_connection_get_connection (service->connection),
+ PANEL_DBUS_SERVICE_INTERFACE, 0, NULL);
+
/* register the /org/xfce/Panel object */
dbus_g_connection_register_g_object (service->connection, PANEL_DBUS_SERVICE_PATH, G_OBJECT (service));
-
- /* request the org.xfce.Panel name */
- result = dbus_bus_request_name (dbus_g_connection_get_connection (service->connection),
- PANEL_DBUS_SERVICE_INTERFACE, 0, NULL);
}
else
{
@@ -264,11 +263,11 @@ static gboolean
panel_dbus_service_get_property (PanelDBusService *service,
const gchar *plugin_id,
const gchar *property,
- const GValue *value,
+ GValue *value,
GError *error)
{
g_message ("Plugin '%s' requested property '%s'", plugin_id, property);
-
+
return TRUE;
}
@@ -278,41 +277,35 @@ static gboolean
panel_dbus_service_set_property (PanelDBusService *service,
const gchar *plugin_id,
const gchar *property,
- GValue *value,
+ const GValue *value,
GError *error)
{
PanelModuleFactory *factory;
XfcePanelPluginProvider *provider;
-
+
panel_return_val_if_fail (PANEL_IS_DBUS_SERVICE (service), FALSE);
panel_return_val_if_fail (plugin_id != NULL, FALSE);
panel_return_val_if_fail (property != NULL, FALSE);
-
- if (strcmp (plugin_id, "XfcePanel") == 0)
- {
- g_message ("Panel message: %s", property);
- }
- else
+ panel_return_val_if_fail (value && G_TYPE_CHECK_VALUE (value), FALSE);
+
+ /* get the module factory */
+ factory = panel_module_factory_get ();
+
+ /* get the plugin */
+ provider = panel_module_factory_get_plugin (factory, plugin_id);
+ if (G_LIKELY (provider))
{
- /* get the module factory */
- factory = panel_module_factory_get ();
-
- /* get the plugin */
- provider = panel_module_factory_get_plugin (factory, plugin_id);
- if (G_LIKELY (provider))
- {
- if (strcmp ("Expand", property) == 0)
- g_signal_emit_by_name (G_OBJECT (provider), "expand-changed", g_value_get_boolean (value));
- else if (strcmp ("MoveItem", property) == 0)
- g_signal_emit_by_name (G_OBJECT (provider), "move-item", 0);
- else if (strcmp ("Remove", property) == 0)
- gtk_widget_destroy (GTK_WIDGET (provider));
- }
-
- /* release the factory */
- g_object_unref (G_OBJECT (factory));
+ if (strcmp ("Expand", property) == 0)
+ g_signal_emit_by_name (G_OBJECT (provider), "expand-changed", g_value_get_boolean (value));
+ else if (strcmp ("MoveItem", property) == 0)
+ g_signal_emit_by_name (G_OBJECT (provider), "move-item", 0);
+ else if (strcmp ("Remove", property) == 0)
+ gtk_widget_destroy (GTK_WIDGET (provider));
}
-
+
+ /* release the factory */
+ g_object_unref (G_OBJECT (factory));
+
return TRUE;
}
@@ -344,11 +337,11 @@ panel_dbus_service_set_plugin_property (const gchar *plugin_id,
const GValue *value)
{
PanelDBusService *service;
-
+
panel_return_if_fail (plugin_id && *plugin_id != '\0');
panel_return_if_fail (property && *property != '\0');
panel_return_if_fail (value && G_TYPE_CHECK_VALUE (value));
-
+
/* get the dbus service */
service = panel_dbus_service_get ();
@@ -359,7 +352,7 @@ panel_dbus_service_set_plugin_property (const gchar *plugin_id,
/* release */
g_object_unref (G_OBJECT (service));
}
-
+
/* include the dbus glue generated by dbus-binding-tool */
diff --git a/panel/panel-plugin-external.c b/panel/panel-plugin-external.c
index 5dd50b8..8b41b0f 100644
--- a/panel/panel-plugin-external.c
+++ b/panel/panel-plugin-external.c
@@ -252,9 +252,14 @@ static void
panel_plugin_external_unrealize (GtkWidget *widget)
{
//PanelPluginExternal *external = PANEL_PLUGIN_EXTERNAL (widget);
+ //GValue value = { 0, };
- /* send message to quit the wrapper */
- /* TODO quit */
+ /* create dummy value */
+ //g_value_init (&value, G_TYPE_BOOLEAN);
+ //g_value_set_boolean (&value, FALSE);
+
+ /* send */
+ //panel_dbus_service_set_plugin_property (external->id,
return (*GTK_WIDGET_CLASS (panel_plugin_external_parent_class)->unrealize) (widget);
}
diff --git a/plugins/systray/systray.desktop.in.in b/plugins/systray/systray.desktop.in.in
index e4cdc7d..32b7dc4 100644
--- a/plugins/systray/systray.desktop.in.in
+++ b/plugins/systray/systray.desktop.in.in
@@ -6,4 +6,4 @@ _Comment=Area where notification icons appear
Icon=applications-system
X-XFCE-Module=systray
X-XFCE-Module-Path=@libdir@/xfce4/panel-plugins
-X-XFCE-External=FALSE
+X-XFCE-External=TRUE
diff --git a/wrapper/main.c b/wrapper/main.c
index c16bb67..24391e6 100644
--- a/wrapper/main.c
+++ b/wrapper/main.c
@@ -118,7 +118,8 @@ dbus_proxy_provider_expand_changed (XfcePanelPluginProvider *provider,
gboolean expand,
DBusGProxy *dbus_proxy)
{
- GValue value = { 0, };
+ GValue value = { 0, };
+ GError *error = NULL;
panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
@@ -127,9 +128,12 @@ dbus_proxy_provider_expand_changed (XfcePanelPluginProvider *provider,
g_value_set_boolean (&value, expand);
/* call */
- wrapper_dbus_client_set_property (dbus_proxy,
- xfce_panel_plugin_provider_get_id (provider),
- "Expand", &value, NULL);
+ if (!wrapper_dbus_client_set_property (dbus_proxy, xfce_panel_plugin_provider_get_id (provider),
+ "Expand", &value, &error))
+ {
+ g_critical ("DBus error: %s", error->message);
+ g_error_free (error);
+ }
/* unset */
g_value_unset (&value);
@@ -141,12 +145,17 @@ static void
dbus_proxy_provider_move_item (XfcePanelPluginProvider *provider,
DBusGProxy *dbus_proxy)
{
+ GError *error = NULL;
+
panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
/* call */
- wrapper_dbus_client_set_property (dbus_proxy,
- xfce_panel_plugin_provider_get_id (provider),
- "MoveItem", NULL, NULL);
+ if (!wrapper_dbus_client_set_property (dbus_proxy, xfce_panel_plugin_provider_get_id (provider),
+ "MoveItem", NULL, NULL))
+ {
+ g_critical ("DBus error: %s", error->message);
+ g_error_free (error);
+ }
}
@@ -155,7 +164,8 @@ static void
dbus_proxy_provider_add_new_items (XfcePanelPluginProvider *provider,
DBusGProxy *dbus_proxy)
{
- gchar *name;
+ gchar *name;
+ GError *error = NULL;
panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
@@ -163,7 +173,11 @@ dbus_proxy_provider_add_new_items (XfcePanelPluginProvider *provider,
name = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (provider)));
/* call */
- wrapper_dbus_client_display_items_dialog (dbus_proxy, name, NULL);
+ if (!wrapper_dbus_client_display_items_dialog (dbus_proxy, name, NULL))
+ {
+ g_critical ("DBus error: %s", error->message);
+ g_error_free (error);
+ }
/* cleanup */
g_free (name);
@@ -175,7 +189,8 @@ static void
dbus_proxy_provider_panel_preferences (XfcePanelPluginProvider *provider,
DBusGProxy *dbus_proxy)
{
- gchar *name;
+ gchar *name;
+ GError *error = NULL;
panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
@@ -183,7 +198,11 @@ dbus_proxy_provider_panel_preferences (XfcePanelPluginProvider *provider,
name = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (provider)));
/* call */
- wrapper_dbus_client_display_preferences_dialog (dbus_proxy, name, NULL);
+ if (!wrapper_dbus_client_display_preferences_dialog (dbus_proxy, name, &error))
+ {
+ g_critical ("DBus error: %s", error->message);
+ g_error_free (error);
+ }
/* cleanup */
g_free (name);
diff --git a/wrapper/wrapper-plug.c b/wrapper/wrapper-plug.c
index 3a33dd2..30fe467 100644
--- a/wrapper/wrapper-plug.c
+++ b/wrapper/wrapper-plug.c
@@ -62,7 +62,7 @@ static void
wrapper_plug_class_init (WrapperPlugClass *klass)
{
GtkWidgetClass *gtkwidget_class;
-
+
gtkwidget_class = GTK_WIDGET_CLASS (klass);
gtkwidget_class->expose_event = wrapper_plug_expose_event;
}
@@ -76,8 +76,8 @@ wrapper_plug_init (WrapperPlug *plug)
plug->background_alpha = 1.00;
plug->is_selected = FALSE;
plug->is_composited = FALSE;
-
- /* allow painting, else compositing won't work */
+
+ /* allow painting, else compositing won't work */
gtk_widget_set_app_paintable (GTK_WIDGET (plug), TRUE);
/* connect signal to monitor the compositor changes */
@@ -212,16 +212,16 @@ wrapper_plug_new (GdkNativeWindow socket_id)
-void
+void
wrapper_plug_set_background_alpha (WrapperPlug *plug,
gdouble alpha)
{
panel_return_if_fail (WRAPPER_IS_PLUG (plug));
panel_return_if_fail (GTK_IS_WIDGET (plug));
-
+
/* set the alpha */
plug->background_alpha = CLAMP (alpha, 0.00, 1.00);
-
+
/* redraw */
if (plug->is_composited)
gtk_widget_queue_draw (GTK_WIDGET (plug));
@@ -229,16 +229,16 @@ wrapper_plug_set_background_alpha (WrapperPlug *plug,
-void
+void
wrapper_plug_set_selected (WrapperPlug *plug,
gboolean selected)
{
panel_return_if_fail (WRAPPER_IS_PLUG (plug));
panel_return_if_fail (GTK_IS_WIDGET (plug));
-
+
/* set value */
plug->is_selected = !!selected;
-
+
/* redraw */
gtk_widget_queue_draw (GTK_WIDGET (plug));
}
More information about the Xfce4-commits
mailing list