aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/menuitem-proxy.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdbusmenu-glib/menuitem-proxy.c')
-rw-r--r--libdbusmenu-glib/menuitem-proxy.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/libdbusmenu-glib/menuitem-proxy.c b/libdbusmenu-glib/menuitem-proxy.c
index 836056e..b50d8a5 100644
--- a/libdbusmenu-glib/menuitem-proxy.c
+++ b/libdbusmenu-glib/menuitem-proxy.c
@@ -45,6 +45,8 @@ static void dbusmenu_menuitem_proxy_init (DbusmenuMenuitemProxy *self);
static void dbusmenu_menuitem_proxy_dispose (GObject *object);
static void dbusmenu_menuitem_proxy_finalize (GObject *object);
static void handle_event (DbusmenuMenuitem * mi, const gchar * name, const GValue * value, guint timestamp);
+static void add_menuitem (DbusmenuMenuitemProxy * pmi, DbusmenuMenuitem * mi);
+static void remove_menuitem (DbusmenuMenuitemProxy * pmi);
G_DEFINE_TYPE (DbusmenuMenuitemProxy, dbusmenu_menuitem_proxy, DBUSMENU_TYPE_MENUITEM);
@@ -79,12 +81,7 @@ dbusmenu_menuitem_proxy_init (DbusmenuMenuitemProxy *self)
static void
dbusmenu_menuitem_proxy_dispose (GObject *object)
{
- DbusmenuMenuitemProxyPrivate * priv = DBUSMENU_MENUITEM_PROXY_GET_PRIVATE(object);
-
- if (priv->mi != NULL) {
- g_object_unref(G_OBJECT(priv->mi));
- priv->mi = NULL;
- }
+ remove_menuitem(DBUSMENU_MENUITEM_PROXY(object));
G_OBJECT_CLASS (dbusmenu_menuitem_proxy_parent_class)->dispose (object);
return;
@@ -109,3 +106,32 @@ handle_event (DbusmenuMenuitem * mi, const gchar * name, const GValue * value, g
g_return_if_fail(priv->mi != NULL);
return dbusmenu_menuitem_handle_event(priv->mi, name, value, timestamp);
}
+
+/* References all of the things we need for talking to this menuitem
+ including signals and other data. If the menuitem already has
+ properties we need to signal that they've changed for us. */
+static void
+add_menuitem (DbusmenuMenuitemProxy * pmi, DbusmenuMenuitem * mi)
+{
+
+ return;
+}
+
+/* Removes the menuitem from being our proxy. Typically this isn't
+ done until this object is destroyed, but who knows?!? */
+static void
+remove_menuitem (DbusmenuMenuitemProxy * pmi)
+{
+ DbusmenuMenuitemProxyPrivate * priv = DBUSMENU_MENUITEM_PROXY_GET_PRIVATE(pmi);
+ if (priv->mi == NULL) {
+ return;
+ }
+
+ /* Remove signals */
+
+ /* Unref */
+ g_object_unref(G_OBJECT(priv->mi));
+ priv->mi = NULL;
+
+ return;
+}