From 14b58238f792f17285dc61c6adb00ca764a5a3b6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 15 Jan 2010 15:16:30 -0600 Subject: Setting up the move signal, which required custom marshallers. --- libindicator/indicator-object.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index e87fa5f..8e1edef 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -27,6 +27,7 @@ License along with this library. If not, see #include "indicator.h" #include "indicator-object.h" +#include "indicator-object-marshal.h" /** IndicatorObjectPrivate: @@ -54,6 +55,7 @@ struct _IndicatorObjectPrivate { enum { ENTRY_ADDED, ENTRY_REMOVED, + ENTRY_MOVED, LAST_SIGNAL }; @@ -116,6 +118,20 @@ indicator_object_class_init (IndicatorObjectClass *klass) NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER, G_TYPE_NONE); + /** + IndicatorObject::entry-moved: + @arg0: The #IndicatorObject object + + Signaled when an entry is removed and should + be removed by the person using this object. + */ + signals[ENTRY_MOVED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED, + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IndicatorObjectClass, entry_moved), + NULL, NULL, + _indicator_object_marshal_VOID__POINTER_UINT_UINT, + G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_NONE); return; } -- cgit v1.2.3 From d334db5071495817e9dea5b50a2fc27709058410 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 15 Jan 2010 15:28:31 -0600 Subject: Fixing the signal comments. --- libindicator/indicator-object.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index 8e1edef..3b00c97 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -92,7 +92,9 @@ indicator_object_class_init (IndicatorObjectClass *klass) /** IndicatorObject::entry-added: @arg0: The #IndicatorObject object - + @arg1: A pointer to the #IndicatorObjectEntry that + is being added. + Signaled when a new entry is added and should be shown by the person using this object. */ @@ -107,7 +109,9 @@ indicator_object_class_init (IndicatorObjectClass *klass) /** IndicatorObject::entry-removed: @arg0: The #IndicatorObject object - + @arg1: A pointer to the #IndicatorObjectEntry that + is being removed. + Signaled when an entry is removed and should be removed by the person using this object. */ @@ -121,9 +125,13 @@ indicator_object_class_init (IndicatorObjectClass *klass) /** IndicatorObject::entry-moved: @arg0: The #IndicatorObject object - - Signaled when an entry is removed and should - be removed by the person using this object. + @arg1: A pointer to the #IndicatorObjectEntry that + is being moved. + @arg2: The old location of the entry + @arg3: The new location of the entry + + When the order of the entries change, then this signal + is sent to tell the new location. */ signals[ENTRY_MOVED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED, G_TYPE_FROM_CLASS(klass), -- cgit v1.2.3 From 308e4db1bc070b6f548817fa6fe9297e64434613 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 15 Jan 2010 15:35:55 -0600 Subject: Fleshing out the get_location function as much as they're implemented here. --- libindicator/indicator-object.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index 3b00c97..f186a4f 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -88,6 +88,7 @@ indicator_object_class_init (IndicatorObjectClass *klass) klass->get_image = NULL; klass->get_entries = get_entries_default; + klass->get_location = NULL; /** IndicatorObject::entry-added: @@ -366,3 +367,29 @@ indicator_object_get_entries (IndicatorObject * io) g_error("No get_entries function on object. It must have been deleted?!?!"); return NULL; } + +/** + indicator_object_get_location: + @io: #IndicatorObject to query + @entry: The #IndicatorObjectEntry to look for. + + This function looks on the class for the object and calls + it's #IndicatorObjectClass::get_location function. If the + function doesn't exist it returns zero. + + Return value: Location of the @entry in the display or + zero if no location is specified. +*/ +guint +indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entry) +{ + g_return_val_if_fail(INDICATOR_IS_OBJECT(io), 0); + IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io); + + if (class->get_location) { + return class->get_location(io, entry); + } + + g_error("No get_entries function on object. It must have been deleted?!?!"); + return 0; +} -- cgit v1.2.3 From c25db995a7c12f9b0460e903633d01926c9b4aed Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 15 Jan 2010 16:08:35 -0600 Subject: No error on not having a get_location function. We'll just return zero. --- libindicator/indicator-object.c | 1 - 1 file changed, 1 deletion(-) (limited to 'libindicator/indicator-object.c') diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index f186a4f..87cd648 100644 --- a/libindicator/indicator-object.c +++ b/libindicator/indicator-object.c @@ -390,6 +390,5 @@ indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entr return class->get_location(io, entry); } - g_error("No get_entries function on object. It must have been deleted?!?!"); return 0; } -- cgit v1.2.3