aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am12
-rw-r--r--configure.ac4
-rw-r--r--data/ordering-override.keyfile3
-rw-r--r--src/application-service-appstore.c31
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);