diff options
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | ChangeLog | 68 | ||||
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | debian/changelog | 10 | ||||
-rw-r--r-- | src/application-service-appstore.c | 39 | ||||
-rw-r--r-- | src/application-service.xml | 4 | ||||
-rw-r--r-- | src/gen-application-service.xml.c | 4 | ||||
-rw-r--r-- | src/indicator-application.c | 55 |
9 files changed, 169 insertions, 36 deletions
@@ -13,6 +13,7 @@ Ken Vandine Ken VanDine Krzysztof Klimonda + Luke Yelavich Marco Trevisan (TreviƱo) Michael Terry Neil Jagdish Patel @@ -1,5 +1,73 @@ # Generated by Makefile. Do not edit. +2011-02-24 Ted Gould <ted@gould.cx> + + 0.2.94 + +2011-02-24 Ted Gould <ted@gould.cx> + + Making sure we have a description for the variant world + +2011-02-24 Ted Gould <ted@gould.cx> + + Adding support for accessible descriptions + +2011-02-24 Ted Gould <ted@gould.cx> + + Switching things around so the icon switches with the description all the way up the stack + +2011-02-23 Ted Gould <ted@gould.cx> + + Adding a missing brace + +2011-02-11 Luke Yelavich <luke.yelavich@canonical.com> + + Use the ACCESSIBLE_DESC_UPDATE signal to refresh the accessible description. + +2011-02-08 Luke Yelavich <luke.yelavich@canonical.com> + + accessible_name -> accessible_desc + +2011-02-08 Luke Yelavich <luke.yelavich@canonical.com> + + Merge from trunk + +2011-02-07 Luke Yelavich <luke.yelavich@canonical.com> + + Add accessible name support + +2011-02-21 Ted Gould <ted@gould.cx> + + Make sure to NULL out the structure + +2011-02-18 Ted Gould <ted@gould.cx> + + Ensures the accessible description is NULL + +2011-02-16 Ted Gould <ted@gould.cx> + + Remove g_error's to stop abortion. + +2011-02-11 Michael Terry <mike@mterry.name> + + don't abort on various unexpected situations; just spit out critical warning + +2011-02-16 Ted Gould <ted@gould.cx> + + On status change update the label as well + +2011-02-11 Michael Terry <mike@mterry.name> + + update label too in update_status + +2011-02-07 Ted Gould <ted@gould.cx> + + Build fix to get libindicator header + +2011-02-07 Luke Yelavich <luke.yelavich@canonical.com> + + Include indicator-object.h to reference INDICATOR_OBJECT_SCROLL_UP + 2011-02-03 Ted Gould <ted@gould.cx> 0.2.93 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.67 for indicator-application 0.2.93. +# Generated by GNU Autoconf 2.67 for indicator-application 0.2.94. # # Report bugs to <ted@canonical.com>. # @@ -703,8 +703,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='indicator-application' PACKAGE_TARNAME='indicator-application' -PACKAGE_VERSION='0.2.93' -PACKAGE_STRING='indicator-application 0.2.93' +PACKAGE_VERSION='0.2.94' +PACKAGE_STRING='indicator-application 0.2.94' PACKAGE_BUGREPORT='ted@canonical.com' PACKAGE_URL='' @@ -1446,7 +1446,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures indicator-application 0.2.93 to adapt to many kinds of systems. +\`configure' configures indicator-application 0.2.94 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1517,7 +1517,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of indicator-application 0.2.93:";; + short | recursive ) echo "Configuration of indicator-application 0.2.94:";; esac cat <<\_ACEOF @@ -1634,7 +1634,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -indicator-application configure 0.2.93 +indicator-application configure 0.2.94 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1914,7 +1914,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by indicator-application $as_me 0.2.93, which was +It was created by indicator-application $as_me 0.2.94, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -2735,7 +2735,7 @@ fi # Define the identity of the package. PACKAGE=indicator-application - VERSION=0.2.93 + VERSION=0.2.94 cat >>confdefs.h <<_ACEOF @@ -12462,7 +12462,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by indicator-application $as_me 0.2.93, which was +This file was extended by indicator-application $as_me 0.2.94, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12528,7 +12528,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -indicator-application config.status 0.2.93 +indicator-application config.status 0.2.94 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index fa8d252..fe010cd 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ -AC_INIT(indicator-application, 0.2.93, ted@canonical.com) +AC_INIT(indicator-application, 0.2.94, 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.93) +AM_INIT_AUTOMAKE(indicator-application, 0.2.94) AM_MAINTAINER_MODE diff --git a/debian/changelog b/debian/changelog index ba6685c..d215213 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +indicator-application (0.2.94-0ubuntu1) natty; urgency=low + + * New upstream release. + * Adding in support for Accssible Descriptions + * Make the accessible description NULL so that indicator-applet doesn't + crash (LP: #721533) + * emit LabelChanged signal along with the IconChanged signal (LP: #712581) + + -- Ted Gould <ted@ubuntu.com> Thu, 24 Feb 2011 22:13:26 -0600 + indicator-application (0.2.93-0ubuntu4) natty; urgency=low * Make the accessible description NULL so that indicator-applet doesn't diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index c95e91b..10feef5 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -43,7 +43,9 @@ static void props_cb (GObject * object, GAsyncResult * res, gpointer user_data); #define NOTIFICATION_ITEM_PROP_CATEGORY "Category" #define NOTIFICATION_ITEM_PROP_STATUS "Status" #define NOTIFICATION_ITEM_PROP_ICON_NAME "IconName" +#define NOTIFICATION_ITEM_PROP_ICON_DESC "IconAccessibleDesc" #define NOTIFICATION_ITEM_PROP_AICON_NAME "AttentionIconName" +#define NOTIFICATION_ITEM_PROP_AICON_DESC "AttentionAccessibleDesc" #define NOTIFICATION_ITEM_PROP_ICON_THEME_PATH "IconThemePath" #define NOTIFICATION_ITEM_PROP_MENU "Menu" #define NOTIFICATION_ITEM_PROP_LABEL "XAyatanaLabel" @@ -99,7 +101,9 @@ struct _Application { gboolean validated; /* Whether we've gotten all the parameters and they look good. */ AppIndicatorStatus status; gchar * icon; + gchar * icon_desc; gchar * aicon; + gchar * aicon_desc; gchar * menu; gchar * icon_theme_path; gchar * label; @@ -430,6 +434,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res, ApplicationServiceAppstorePrivate * priv = app->appstore->priv; GVariant * menu = NULL, * id = NULL, * category = NULL, * status = NULL, * icon_name = NULL, * aicon_name = NULL, + * icon_desc = NULL, * aicon_desc = NULL, * icon_theme_path = NULL, * index = NULL, * label = NULL, * guide = NULL; @@ -464,8 +469,12 @@ got_all_properties (GObject * source_object, GAsyncResult * res, status = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_NAME) == 0) { icon_name = g_variant_ref(value); + } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_DESC) == 0) { + icon_desc = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_AICON_NAME) == 0) { aicon_name = g_variant_ref(value); + } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_AICON_DESC) == 0) { + aicon_desc = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_THEME_PATH) == 0) { icon_theme_path = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ORDERING_INDEX) == 0) { @@ -543,7 +552,9 @@ got_all_properties (GObject * source_object, GAsyncResult * res, if (category) g_variant_unref (category); if (status) g_variant_unref (status); if (icon_name) g_variant_unref (icon_name); + if (icon_desc) g_variant_unref (icon_desc); if (aicon_name) g_variant_unref (aicon_name); + if (aicon_desc) g_variant_unref (aicon_desc); if (icon_theme_path) g_variant_unref (icon_theme_path); if (index) g_variant_unref (index); if (label) g_variant_unref (label); @@ -707,8 +718,11 @@ application_free (Application * app) if (app->icon != NULL) { g_free(app->icon); } - if (app->aicon != NULL) { - g_free(app->aicon); + if (app->icon_desc != NULL) { + g_free(app->icon_desc); + } + if (app->aicon_desc != NULL) { + g_free(app->aicon_desc); } if (app->menu != NULL) { g_free(app->menu); @@ -825,26 +839,33 @@ apply_status (Application * app) } else { /* Figure out which icon we should be using */ gchar * newicon = app->icon; + gchar * newdesc = app->icon_desc; if (app->status == APP_INDICATOR_STATUS_ATTENTION && app->aicon != NULL && app->aicon[0] != '\0') { newicon = app->aicon; + newdesc = app->aicon_desc; + } + + if (newdesc == NULL) { + newdesc = ""; } /* Determine whether we're already shown or not */ if (app->visible_state == VISIBLE_STATE_HIDDEN) { /* Put on panel */ emit_signal (appstore, "ApplicationAdded", - g_variant_new ("(sisosss)", newicon, + g_variant_new ("(sisossss)", newicon, get_position(app), app->dbus_name, app->menu, app->icon_theme_path, - app->label, app->guide)); + app->label, app->guide, + newdesc)); } else { /* Icon update */ gint position = get_position(app); if (position == -1) return; emit_signal (appstore, "ApplicationIconChanged", - g_variant_new ("(is)", position, newicon)); + g_variant_new ("(iss)", position, newicon, newdesc)); emit_signal (appstore, "ApplicationLabelChanged", g_variant_new ("(iss)", position, app->label != NULL ? app->label : "", @@ -1216,18 +1237,18 @@ get_applications (ApplicationServiceAppstore * appstore) continue; } - g_variant_builder_add (&builder, "(sisosss)", app->icon, + g_variant_builder_add (&builder, "(sisossss)", app->icon, position++, app->dbus_name, app->menu, app->icon_theme_path, app->label, - app->guide); + app->guide, app->icon_desc); } out = g_variant_builder_end(&builder); } else { GError * error = NULL; - out = g_variant_parse(g_variant_type_new("a(sisosss)"), "[]", NULL, NULL, &error); + out = g_variant_parse(g_variant_type_new("a(sisossss)"), "[]", NULL, NULL, &error); if (error != NULL) { - g_warning("Unable to parse '[]' as a 'a(sisosss)': %s", error->message); + g_warning("Unable to parse '[]' as a 'a(sisossss)': %s", error->message); out = NULL; g_error_free(error); } diff --git a/src/application-service.xml b/src/application-service.xml index 1ad7030..f3164ef 100644 --- a/src/application-service.xml +++ b/src/application-service.xml @@ -26,7 +26,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. <!-- Methods --> <method name="GetApplications"> - <arg type="a(sisosss)" name="applications" direction="out" /> + <arg type="a(sisossss)" name="applications" direction="out" /> </method> <method name="ApplicationScrollEvent"> <arg type="s" name="dbusaddress" direction="in" /> @@ -44,6 +44,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. <arg type="s" name="iconpath" direction="out" /> <arg type="s" name="label" direction="out" /> <arg type="s" name="labelguide" direction="out" /> + <arg type="s" name="accessibledesc" direction="out" /> </signal> <signal name="ApplicationRemoved"> <arg type="i" name="position" direction="out" /> @@ -51,6 +52,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. <signal name="ApplicationIconChanged"> <arg type="i" name="position" direction="out" /> <arg type="s" name="icon_name" direction="out" /> + <arg type="s" name="icon_desc" direction="out" /> </signal> <signal name="ApplicationIconThemePathChanged"> <arg type="i" name="position" direction="out" /> diff --git a/src/gen-application-service.xml.c b/src/gen-application-service.xml.c index 292cb62..cae1819 100644 --- a/src/gen-application-service.xml.c +++ b/src/gen-application-service.xml.c @@ -27,7 +27,7 @@ const char * _application_service = "\n" "<!-- Methods -->\n" " <method name=\"GetApplications\">\n" -" <arg type=\"a(sisosss)\" name=\"applications\" direction=\"out\" />\n" +" <arg type=\"a(sisossss)\" name=\"applications\" direction=\"out\" />\n" " </method>\n" " <method name=\"ApplicationScrollEvent\">\n" " <arg type=\"s\" name=\"dbusaddress\" direction=\"in\" />\n" @@ -45,6 +45,7 @@ const char * _application_service = " <arg type=\"s\" name=\"iconpath\" direction=\"out\" />\n" " <arg type=\"s\" name=\"label\" direction=\"out\" />\n" " <arg type=\"s\" name=\"labelguide\" direction=\"out\" />\n" +" <arg type=\"s\" name=\"accessibledesc\" direction=\"out\" />\n" " </signal>\n" " <signal name=\"ApplicationRemoved\">\n" " <arg type=\"i\" name=\"position\" direction=\"out\" />\n" @@ -52,6 +53,7 @@ const char * _application_service = " <signal name=\"ApplicationIconChanged\">\n" " <arg type=\"i\" name=\"position\" direction=\"out\" />\n" " <arg type=\"s\" name=\"icon_name\" direction=\"out\" />\n" +" <arg type=\"s\" name=\"icon_desc\" direction=\"out\" />\n" " </signal>\n" " <signal name=\"ApplicationIconThemePathChanged\">\n" " <arg type=\"i\" name=\"position\" direction=\"out\" />\n" diff --git a/src/indicator-application.c b/src/indicator-application.c index c18c2b0..f7ce391 100644 --- a/src/indicator-application.c +++ b/src/indicator-application.c @@ -115,10 +115,10 @@ static void disconnected (IndicatorApplication * application); static void disconnected_helper (gpointer data, gpointer user_data); static gboolean disconnected_kill (gpointer user_data); static void disconnected_kill_helper (gpointer data, gpointer user_data); -static void application_added (IndicatorApplication * application, const gchar * iconname, gint position, const gchar * dbusaddress, const gchar * dbusobject, const gchar * icon_theme_path, const gchar * label, const gchar * guide); +static void application_added (IndicatorApplication * application, const gchar * iconname, gint position, const gchar * dbusaddress, const gchar * dbusobject, const gchar * icon_theme_path, const gchar * label, const gchar * guide, const gchar * accessible_desc); static void application_removed (IndicatorApplication * application, gint position); static void application_label_changed (IndicatorApplication * application, gint position, const gchar * label, const gchar * guide); -static void application_icon_changed (IndicatorApplication * application, gint position, const gchar * iconname); +static void application_icon_changed (IndicatorApplication * application, gint position, const gchar * iconname, const gchar * icondesc); static void application_icon_theme_path_changed (IndicatorApplication * application, gint position, const gchar * icon_theme_path); static void get_applications (GObject * obj, GAsyncResult * res, gpointer user_data); static void get_applications_helper (IndicatorApplication * self, GVariant * variant); @@ -450,7 +450,7 @@ guess_label_size (ApplicationEntry * app) ApplicationEntry and signaling the indicator host that we've got a new indicator. */ static void -application_added (IndicatorApplication * application, const gchar * iconname, gint position, const gchar * dbusaddress, const gchar * dbusobject, const gchar * icon_theme_path, const gchar * label, const gchar * guide) +application_added (IndicatorApplication * application, const gchar * iconname, gint position, const gchar * dbusaddress, const gchar * dbusobject, const gchar * icon_theme_path, const gchar * label, const gchar * guide, const gchar * accessible_desc) { g_return_if_fail(IS_INDICATOR_APPLICATION(application)); g_debug("Building new application entry: %s with icon: %s at position %i", dbusaddress, iconname, position); @@ -499,6 +499,12 @@ application_added (IndicatorApplication * application, const gchar * iconname, g guess_label_size(app); } + if (accessible_desc == NULL || accessible_desc[0] == '\0') { + app->entry.accessible_desc = NULL; + } else { + app->entry.accessible_desc = g_strdup(accessible_desc); + } + app->entry.menu = GTK_MENU(dbusmenu_gtkmenu_new((gchar *)dbusaddress, (gchar *)dbusobject)); /* Keep copies of these for ourself, just in case. */ @@ -644,7 +650,7 @@ application_label_changed (IndicatorApplication * application, gint position, co /* The callback for the signal that the icon for an application has changed. */ static void -application_icon_changed (IndicatorApplication * application, gint position, const gchar * iconname) +application_icon_changed (IndicatorApplication * application, gint position, const gchar * iconname, const gchar * icondesc) { IndicatorApplicationPrivate * priv = INDICATOR_APPLICATION_GET_PRIVATE(application); ApplicationEntry * app = (ApplicationEntry *)g_list_nth_data(priv->applications, position); @@ -654,6 +660,11 @@ application_icon_changed (IndicatorApplication * application, gint position, con return; } + if (iconname == NULL) { + g_warning("We can't have a NULL icon name on %d", position); + return; + } + /* We make a long name using the suffix, and if that icon is available we want to use it. Otherwise we'll just use the name we were given. */ @@ -668,6 +679,19 @@ application_icon_changed (IndicatorApplication * application, gint position, con } indicator_image_helper_update(app->entry.image, app->longname); + if (g_strcmp0(app->entry.accessible_desc, icondesc) != 0) { + if (app->entry.accessible_desc != NULL) { + g_free((gchar *)app->entry.accessible_desc); + app->entry.accessible_desc = NULL; + } + + if (icondesc != NULL && icondesc[0] != '\0') { + app->entry.accessible_desc = g_strdup(icondesc); + } + + g_signal_emit(G_OBJECT(application), INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE_ID, 0, &(app->entry), TRUE); + } + return; } @@ -715,11 +739,14 @@ receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, const gchar * icon_theme_path; const gchar * label; const gchar * guide; - g_variant_get (parameters, "(&si&s&o&s&s&s)", &iconname, + const gchar * accessible_desc; + g_variant_get (parameters, "(&si&s&o&s&s&s&s)", &iconname, &position, &dbusaddress, &dbusobject, - &icon_theme_path, &label, &guide); + &icon_theme_path, &label, &guide, + &accessible_desc); application_added(self, iconname, position, dbusaddress, - dbusobject, icon_theme_path, label, guide); + dbusobject, icon_theme_path, label, guide, + accessible_desc); } else if (g_strcmp0(signal_name, "ApplicationRemoved") == 0) { gint position; @@ -729,8 +756,9 @@ receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, else if (g_strcmp0(signal_name, "ApplicationIconChanged") == 0) { gint position; const gchar * iconname; - g_variant_get (parameters, "(i&s)", &position, &iconname); - application_icon_changed(self, position, iconname); + const gchar * icondesc; + g_variant_get (parameters, "(i&s&s)", &position, &iconname, &icondesc); + application_icon_changed(self, position, iconname, icondesc); } else if (g_strcmp0(signal_name, "ApplicationIconThemePathChanged") == 0) { gint position; @@ -768,7 +796,7 @@ get_applications (GObject * obj, GAsyncResult * res, gpointer user_data) return; } - g_variant_get(result, "(a(sisosss))", &iter); + g_variant_get(result, "(a(sisossss))", &iter); while ((child = g_variant_iter_next_value (iter))) get_applications_helper(self, child); g_variant_iter_free (iter); @@ -788,11 +816,12 @@ get_applications_helper (IndicatorApplication * self, GVariant * variant) const gchar * icon_theme_path; const gchar * label; const gchar * guide; - g_variant_get(variant, "(sisosss)", &icon_name, &position, + const gchar * accessible_desc; + g_variant_get(variant, "(sisossss)", &icon_name, &position, &dbus_address, &dbus_object, &icon_theme_path, &label, - &guide); + &guide, &accessible_desc); - return application_added(self, icon_name, position, dbus_address, dbus_object, icon_theme_path, label, guide); + return application_added(self, icon_name, position, dbus_address, dbus_object, icon_theme_path, label, guide, accessible_desc); } /* Unrefs a theme directory. This may involve removing it from |