diff options
-rw-r--r-- | Makefile.am | 12 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | data/ordering-override.keyfile | 3 | ||||
-rw-r--r-- | src/application-service-appstore.c | 31 |
4 files changed, 45 insertions, 5 deletions
diff --git a/Makefile.am b/Makefile.am index ba772b0..98e4a88 100644 --- a/Makefile.am +++ b/Makefile.am @@ -30,3 +30,15 @@ dist-hook: else \ echo Failed to generate ChangeLog: not a branch >&2; \ fi + @if test -d "$(top_srcdir)/.bzr"; \ + then \ + echo Creating AUTHORS && \ + ( cd "$(top_srcdir)" && \ + echo '# Generated by Makefile. Do not edit.'; echo; \ + $(top_srcdir)/missing --run bzr log --long --levels=0 | grep -e "^\s*author:" -e "^\s*committer:" | cut -d ":" -f 2 | cut -d "<" -f 1 | sort -u) > AUTHORS.tmp \ + && mv -f AUTHORS.tmp $(top_distdir)/AUTHORS \ + || (rm -f AUTHORS.tmp; \ + echo Failed to generate AUTHORS >&2 ); \ + else \ + echo Failed to generate AUTHORS: not a branch >&2; \ + fi diff --git a/configure.ac b/configure.ac index 035c9da..25e19c8 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ -AC_INIT(indicator-application, 0.2.5, ted@canonical.com) +AC_INIT(indicator-application, 0.2.8, ted@canonical.com) AC_COPYRIGHT([Copyright 2009, 2010 Canonical]) AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-application, 0.2.5) +AM_INIT_AUTOMAKE(indicator-application, 0.2.8) AM_MAINTAINER_MODE diff --git a/data/ordering-override.keyfile b/data/ordering-override.keyfile index dcfb75b..71d7c1a 100644 --- a/data/ordering-override.keyfile +++ b/data/ordering-override.keyfile @@ -1,2 +1,5 @@ [Ordering Index Overrides] gnome-power-manager=1 +gst-keyboard-xkb=2 +gsd-keyboard-xkb=3 +ibus=4 diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index f52ea2d..46118bb 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -72,6 +72,8 @@ typedef enum { VISIBLE_STATE_SHOWN } visible_state_t; +#define STATE2STRING(x) ((x) == VISIBLE_STATE_HIDDEN ? "hidden" : "visible") + typedef struct _Approver Approver; struct _Approver { DBusGProxy * proxy; @@ -129,6 +131,7 @@ static AppIndicatorCategory string_to_cat(const gchar * cat_string); static void approver_free (gpointer papprover, gpointer user_data); static void check_with_new_approver (gpointer papp, gpointer papprove); static void check_with_old_approver (gpointer papprove, gpointer papp); +static Application * find_application (ApplicationServiceAppstore * appstore, const gchar * address, const gchar * object); G_DEFINE_TYPE (ApplicationServiceAppstore, application_service_appstore, G_TYPE_OBJECT); @@ -485,6 +488,7 @@ get_position (Application * app) { } if (lapp == NULL) { + g_warning("Unable to find position for app '%s'", app->id); return -1; } @@ -497,6 +501,7 @@ static void application_free (Application * app) { if (app == NULL) return; + g_debug("Application free '%s'", app->id); /* Handle the case where this could be called by unref'ing one of the proxy objects. */ @@ -554,6 +559,7 @@ static void application_removed_cb (DBusGProxy * proxy, gpointer userdata) { Application * app = (Application *)userdata; + g_debug("Application proxy destroyed '%s'", app->id); /* Remove from the panel */ app->status = APP_INDICATOR_STATUS_PASSIVE; @@ -596,10 +602,19 @@ apply_status (Application * app) } /* Nothing needs to change, we're good */ - if (app->visible_state == goal_state) { + if (app->visible_state == goal_state /* ) { */ + && goal_state == VISIBLE_STATE_HIDDEN) { + /* TODO: Uhg, this is a little wrong in that we're going to + send an icon every time the status changes and the indicator + is visible even though it might not be updating. But, at + this point we need a small patch that is harmless. In the + future we need to track which icon is shown and remove the + duplicate message. */ return; } + g_debug("Changing app '%s' state from %s to %s", app->id, STATE2STRING(app->visible_state), STATE2STRING(goal_state)); + /* This means we're going off line */ if (goal_state == VISIBLE_STATE_HIDDEN) { gint position = get_position(app); @@ -621,7 +636,7 @@ apply_status (Application * app) g_signal_emit(G_OBJECT(app->appstore), signals[APPLICATION_ADDED], 0, newicon, - g_list_index(priv->applications, app), /* Position */ + get_position(app), /* Position */ app->dbus_name, app->menu, app->icon_theme_path, @@ -848,10 +863,20 @@ application_service_appstore_application_add (ApplicationServiceAppstore * appst g_return_if_fail(dbus_name != NULL && dbus_name[0] != '\0'); g_return_if_fail(dbus_object != NULL && dbus_object[0] != '\0'); ApplicationServiceAppstorePrivate * priv = appstore->priv; + Application * app = find_application(appstore, dbus_name, dbus_object); + + if (app != NULL) { + g_warning("Application already exists! Rerequesting properties."); + org_freedesktop_DBus_Properties_get_all_async(app->prop_proxy, + NOTIFICATION_ITEM_DBUS_IFACE, + get_all_properties_cb, + app); + return; + } /* Build the application entry. This will be carried along until we're sure we've got everything. */ - Application * app = g_new0(Application, 1); + app = g_new0(Application, 1); app->validated = FALSE; app->dbus_name = g_strdup(dbus_name); |