From 949766634a89457fe0477938e189352cba93c163 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 4 Jan 2011 15:56:53 -0600 Subject: Making it a real signal now --- libindicator/indicator-object.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index 41484a6..c1aa6af 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -59,6 +59,7 @@ enum { ENTRY_MOVED, SCROLL, MENU_SHOW, + SHOW_NOW_CHANGED, LAST_SIGNAL }; @@ -181,6 +182,24 @@ indicator_object_class_init (IndicatorObjectClass *klass) _indicator_object_marshal_VOID__POINTER_UINT, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_UINT); + /** + IndicatorObject::show-now-changed: + @arg0: The #IndicatorObject object + @arg1: A pointer to the #IndicatorObjectEntry that + is changing it's state + @arg2: The state of whether the entry should be shown + + Whether the entry should be shown or not has changed so we need + to tell whoever is displaying it. + */ + signals[SHOW_NOW_CHANGED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED, + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IndicatorObjectClass, show_now_changed), + NULL, NULL, + _indicator_object_marshal_VOID__POINTER_BOOLEAN, + G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_BOOLEAN); + return; } -- cgit v1.2.3 From 5de24f6cd9603be1649278a09eeacf1c01c1f8d2 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 4 Jan 2011 16:00:14 -0600 Subject: Adding a function to check whether we should show the indicator with priority. --- libindicator/indicator-object.c | 24 ++++++++++++++++++++++++ libindicator/indicator-object.h | 1 + 2 files changed, 25 insertions(+) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index c1aa6af..7469cb9 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -452,6 +452,30 @@ indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entr return 0; } +/** + indicator_object_get_show_now: + @io: #IndicatorObject to query + @entry: The #IndicatorObjectEntry to look for. + + This function returns whether the entry should be shown with + priority on the panel. If the object does not support checking + it assumes that its entries should never have priority. + + Return value: Whether the entry should be shown with priority. +*/ +guint +indicator_object_get_show_now (IndicatorObject * io, IndicatorObjectEntry * entry) +{ + g_return_val_if_fail(INDICATOR_IS_OBJECT(io), 0); + IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io); + + if (class->get_show_now) { + return class->get_show_now(io, entry); + } + + return FALSE; +} + /** indicator_object_entry_activate: @io: #IndicatorObject to query diff --git a/libindicator/indicator-object.h b/libindicator/indicator-object.h index 3491e1f..6072f4f 100644 --- a/libindicator/indicator-object.h +++ b/libindicator/indicator-object.h @@ -148,6 +148,7 @@ IndicatorObject * indicator_object_new_from_file (const gchar * file); GList * indicator_object_get_entries (IndicatorObject * io); guint indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entry); +guint indicator_object_get_show_now (IndicatorObject * io, IndicatorObjectEntry * entry); void indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp); G_END_DECLS -- cgit v1.2.3 From a17110ef804bc829df9f6e2275ed3210f7dc1031 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sun, 9 Jan 2011 15:44:19 -0600 Subject: Adding a virtual function for closing the menu and a wrapper for it. --- libindicator/indicator-object.c | 21 +++++++++++++++++++++ libindicator/indicator-object.h | 5 +++++ 2 files changed, 26 insertions(+) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index 7469cb9..f82a7c3 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -500,3 +500,24 @@ indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * en return; } +/** + indicator_object_entry_activate: + @io: #IndicatorObject to query + @entry: The #IndicatorObjectEntry whose menu was closed + @timestamp: The X11 timestamp of the event + + Used to signal that a menu has been closed for the specific + entry that is specified. +*/ +void +indicator_object_entry_close (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp) +{ + g_return_if_fail(INDICATOR_IS_OBJECT(io)); + IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io); + + if (class->entry_close != NULL) { + return class->entry_close(io, entry, timestamp); + } + + return; +} diff --git a/libindicator/indicator-object.h b/libindicator/indicator-object.h index 6072f4f..9ad1366 100644 --- a/libindicator/indicator-object.h +++ b/libindicator/indicator-object.h @@ -83,6 +83,9 @@ typedef struct _IndicatorObjectEntry IndicatorObjectEntry; @get_show_now: Returns whether the entry is requesting to be shown "right now" in that it has something important to tell the user. + @entry_activate: Should be called when the menus for a given + entry are shown to the user. + @entry_close: Called when the menu is closed. @entry_added: Slot for #IndicatorObject::entry-added @entry_removed: Slot for #IndicatorObject::entry-removed @entry_moved: Slot for #IndicatorObject::entry-moved @@ -102,6 +105,7 @@ struct _IndicatorObjectClass { gboolean (*get_show_now) (IndicatorObject * io, IndicatorObjectEntry * entry); void (*entry_activate) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp); + void (*entry_close) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp); /* Signals */ void (*entry_added) (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data); @@ -150,6 +154,7 @@ GList * indicator_object_get_entries (IndicatorObject * io); guint indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entry); guint indicator_object_get_show_now (IndicatorObject * io, IndicatorObjectEntry * entry); void indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp); +void indicator_object_entry_close (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp); G_END_DECLS -- cgit v1.2.3 From 2b6655fef97e8d37f0d29b668fdd382692cdaca8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 10 Jan 2011 10:19:52 -0600 Subject: Fixing doc strings --- libindicator/indicator-object.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index f82a7c3..988a8ae 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -501,12 +501,12 @@ indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * en } /** - indicator_object_entry_activate: + indicator_object_entry_close: @io: #IndicatorObject to query @entry: The #IndicatorObjectEntry whose menu was closed @timestamp: The X11 timestamp of the event - Used to signal that a menu has been closed for the specific + Used to tell the indicator that a menu has been closed for the entry that is specified. */ void -- cgit v1.2.3