diff options
-rw-r--r-- | libindicator/Makefile.am | 6 | ||||
-rw-r--r-- | libindicator/indicator-object-marshal.list | 1 | ||||
-rw-r--r-- | libindicator/indicator-object.c | 43 | ||||
-rw-r--r-- | libindicator/indicator-object.h | 9 | ||||
-rw-r--r-- | libindicator/indicator3.pc.in | 2 | ||||
-rw-r--r-- | tools/Makefile.am | 14 |
6 files changed, 69 insertions, 6 deletions
diff --git a/libindicator/Makefile.am b/libindicator/Makefile.am index 9f2a222..5c70345 100644 --- a/libindicator/Makefile.am +++ b/libindicator/Makefile.am @@ -51,7 +51,7 @@ libindicator_la_LIBADD = \ $(LIBINDICATOR_LIBS) libindicator_la_LDFLAGS = \ - -version-info 1:0:0 \ + -version-info 2:0:0 \ -no-undefined \ -export-symbols-regex "^[^_].*" @@ -75,7 +75,7 @@ glib_marshal_prefix = _indicator_object_marshal indicator-object-enum-types.h: s-enum-types-h @true s-enum-types-h: $(indicator_headers) - ( cd $(srcdir) && $(GLIB_MKENUMS) --template $(srcdir)/indicator-object-enum-types.h.template \ + ( cd $(srcdir) && $(GLIB_MKENUMS) --template $(abs_srcdir)/indicator-object-enum-types.h.template \ $(indicator_headers) ) >> tmp-indicator-object-enum-types.h \ && (cmp -s tmp-indicator-object-enum-types.h indicator-object-enum-types.h || cp tmp-indicator-object-enum-types.h indicator-object-enum-types.h ) \ && rm -f tmp-indicator-object-enum-types.h && echo timestamp > $(@F) @@ -83,7 +83,7 @@ s-enum-types-h: $(indicator_headers) indicator-object-enum-types.c: s-enum-types-c @true s-enum-types-c: $(indicator_headers) - ( cd $(srcdir) && $(GLIB_MKENUMS) --template $(srcdir)/indicator-object-enum-types.c.template \ + ( cd $(srcdir) && $(GLIB_MKENUMS) --template $(abs_srcdir)/indicator-object-enum-types.c.template \ $(indicator_headers) ) > tmp-indicator-object-enum-types.c \ && (cmp -s tmp-indicator-object-enum-types.c indicator-object-enum-types.c || cp tmp-indicator-object-enum-types.c indicator-object-enum-types.c ) \ && rm -f tmp-indicator-object-enum-types.c diff --git a/libindicator/indicator-object-marshal.list b/libindicator/indicator-object-marshal.list index bb447bb..4ea1e8b 100644 --- a/libindicator/indicator-object-marshal.list +++ b/libindicator/indicator-object-marshal.list @@ -1,3 +1,4 @@ VOID: POINTER, UINT, UINT VOID: UINT,ENUM VOID: POINTER, UINT +VOID: POINTER, BOOLEAN diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c index 41484a6..7469cb9 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; } @@ -434,6 +453,30 @@ indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entr } /** + 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 @entry: The #IndicatorObjectEntry whose entry was shown diff --git a/libindicator/indicator-object.h b/libindicator/indicator-object.h index 79f4757..6072f4f 100644 --- a/libindicator/indicator-object.h +++ b/libindicator/indicator-object.h @@ -53,6 +53,8 @@ typedef enum #define INDICATOR_OBJECT_SIGNAL_SCROLL_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_SCROLL, INDICATOR_OBJECT_TYPE)) #define INDICATOR_OBJECT_SIGNAL_MENU_SHOW "menu-show" #define INDICATOR_OBJECT_SIGNAL_MENU_SHOW_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_MENU_SHOW, INDICATOR_OBJECT_TYPE)) +#define INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED "show-now-changed" +#define INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED, INDICATOR_OBJECT_TYPE)) typedef struct _IndicatorObject IndicatorObject; typedef struct _IndicatorObjectClass IndicatorObjectClass; @@ -78,10 +80,14 @@ typedef struct _IndicatorObjectEntry IndicatorObjectEntry; @get_location: Returns the location that a particular entry should be placed in. This is really only relevant for indicators that have more than one entry. + @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_added: Slot for #IndicatorObject::entry-added @entry_removed: Slot for #IndicatorObject::entry-removed @entry_moved: Slot for #IndicatorObject::entry-moved @menu_show: Slot for #IndicatorObject::menu-show + @show_now_changed: Slot for #IndicatorObject::show-now-changed */ struct _IndicatorObjectClass { GObjectClass parent_class; @@ -93,6 +99,7 @@ struct _IndicatorObjectClass { GList * (*get_entries) (IndicatorObject * io); guint (*get_location) (IndicatorObject * io, IndicatorObjectEntry * entry); + gboolean (*get_show_now) (IndicatorObject * io, IndicatorObjectEntry * entry); void (*entry_activate) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp); @@ -102,6 +109,7 @@ struct _IndicatorObjectClass { void (*entry_moved) (IndicatorObject * io, IndicatorObjectEntry * entry, guint old_pos, guint new_pos, gpointer user_data); void (*scroll) (IndicatorObject * io, gint delta, IndicatorScrollDirection direction); void (*menu_show) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp, gpointer user_data); + void (*show_now_changed) (IndicatorObject * io, IndicatorObjectEntry * entry, gboolean show_now_state, gpointer user_data); /* Reserved */ void (*reserved1) (void); @@ -140,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 diff --git a/libindicator/indicator3.pc.in b/libindicator/indicator3.pc.in index 74b93c5..bb85db6 100644 --- a/libindicator/indicator3.pc.in +++ b/libindicator/indicator3.pc.in @@ -7,7 +7,7 @@ includedir=@includedir@ indicatordir=${libdir}/indicators3/1/ iconsdir=@datarootdir@/@PACKAGE@/icons/ -Cflags: -I${includedir}/libindicator3-0.3 +Cflags: -I${includedir}/libindicator-0.3 Requires: gtk+-3.0 Libs: -lindicator3 diff --git a/tools/Makefile.am b/tools/Makefile.am index 6c67491..287d34f 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -1,11 +1,13 @@ if USE_GTK3 INDICATOR_LIB = -lindicator3 +libexec_PROGRAMS = indicator-loader3 +VER=3 else +VER= INDICATOR_LIB = -lindicator +libexec_PROGRAMS = indicator-loader endif -libexec_PROGRAMS = \ - indicator-loader ############################# # Indicator Loader @@ -24,6 +26,14 @@ indicator_loader_LDADD = \ -L$(top_builddir)/libindicator/.libs \ $(INDICATOR_LIB) +# We duplicate these here because Automake won't let us use $(VER) on the left hand side. +# Since we carefully use $(VER) in the right hand side above, we can assign the same values. +# Only one version of the library is every compiled at the same time, so it is safe to reuse +# the right hand sides like this. +indicator_loader3_SOURCES = $(indicator_loader_SOURCES) +indicator_loader3_CFLAGS = $(indicator_loader_CFLAGS) +indicator_loader3_LDADD = $(indicator_loader_LDADD) + xsessiondir = $(sysconfdir)/X11/Xsession.d xsession_DATA = 80indicator-debugging |