aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2012-08-27 18:38:53 +0200
committerSebastien Bacher <seb128@ubuntu.com>2012-08-27 18:38:53 +0200
commitd28296b69565793050e51717a89c84eeadd88dbc (patch)
treee3d5330da86f1e626a3b649a429f56a102b5dd6a
parent9d8a4eeaf93b5f5537558e925a1c4f9b16e772b7 (diff)
parentabda3b07fce605d8de1c182e1dfc7569ed681f3e (diff)
downloadayatana-indicator-messages-d28296b69565793050e51717a89c84eeadd88dbc.tar.gz
ayatana-indicator-messages-d28296b69565793050e51717a89c84eeadd88dbc.tar.bz2
ayatana-indicator-messages-d28296b69565793050e51717a89c84eeadd88dbc.zip
Import upstream version 12.10.1
-rw-r--r--ChangeLog151
-rw-r--r--Makefile.in5
-rw-r--r--NEWS9
-rwxr-xr-xconfigure31
-rw-r--r--configure.ac12
-rw-r--r--data/Makefile.in3
-rw-r--r--data/icons/16x16/Makefile.in3
-rw-r--r--data/icons/16x16/categories/Makefile.am2
-rw-r--r--data/icons/16x16/categories/Makefile.in5
-rw-r--r--data/icons/16x16/status/Makefile.am2
-rw-r--r--data/icons/16x16/status/Makefile.in5
-rw-r--r--data/icons/22x22/Makefile.in3
-rw-r--r--data/icons/22x22/categories/Makefile.am2
-rw-r--r--data/icons/22x22/categories/Makefile.in5
-rw-r--r--data/icons/22x22/status/Makefile.am2
-rw-r--r--data/icons/22x22/status/Makefile.in5
-rw-r--r--data/icons/24x24/Makefile.in3
-rw-r--r--data/icons/24x24/status/Makefile.am2
-rw-r--r--data/icons/24x24/status/Makefile.in5
-rw-r--r--data/icons/32x32/Makefile.in3
-rw-r--r--data/icons/32x32/categories/Makefile.am2
-rw-r--r--data/icons/32x32/categories/Makefile.in5
-rw-r--r--data/icons/32x32/status/Makefile.am2
-rw-r--r--data/icons/32x32/status/Makefile.in5
-rw-r--r--data/icons/48x48/Makefile.in3
-rw-r--r--data/icons/48x48/status/Makefile.am2
-rw-r--r--data/icons/48x48/status/Makefile.in5
-rw-r--r--data/icons/Makefile.in3
-rw-r--r--data/icons/scalable/Makefile.in3
-rw-r--r--data/icons/scalable/categories/Makefile.am2
-rw-r--r--data/icons/scalable/categories/Makefile.in5
-rw-r--r--data/icons/scalable/status/Makefile.am2
-rw-r--r--data/icons/scalable/status/Makefile.in5
-rw-r--r--libmessaging-menu/Makefile.am6
-rw-r--r--libmessaging-menu/Makefile.in9
-rw-r--r--libmessaging-menu/indicator-messages-service.c2
-rw-r--r--libmessaging-menu/indicator-messages-service.h2
-rw-r--r--libmessaging-menu/messaging-menu.c105
-rwxr-xr-xmkinstalldirs162
-rw-r--r--src/Makefile.am2
-rw-r--r--src/Makefile.in14
-rw-r--r--src/app-section.c26
-rw-r--r--src/gmenuutils.c10
-rw-r--r--src/ido-menu-item.c395
-rw-r--r--src/ido-menu-item.h54
-rw-r--r--src/im-app-menu-item.c1
-rw-r--r--src/im-source-menu-item.c36
-rw-r--r--src/indicator-messages-service.c2
-rw-r--r--src/indicator-messages-service.h2
-rw-r--r--src/indicator-messages.c121
-rw-r--r--src/messages-service.c32
-rw-r--r--test/Makefile.in3
52 files changed, 938 insertions, 348 deletions
diff --git a/ChangeLog b/ChangeLog
index 55c6005..031849d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,156 @@
# Generated by Makefile. Do not edit.
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ 12.10.1
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Merge lp:~larsu/messaging-menu/fix-icons
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ ido_menu_item_set_menu_item: make sure g_free isn't called with dangling pointer
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ IdoMenuItem: clear target pointer in dispose
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Increase spacing between icons and labels
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Indent application shortcuts
+
+ This is done by setting their icon to the empty string, which IdoMenuItem
+ interprets as "show a clear icon".
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ IdoMenuItem: don't try to set state on stateless actions
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Show icons on status menu items
+
+ This introduces IdoMenuItem, a GtkCheckMenuItem that can also show icons. This
+ should go into libido at some point. Also, Im{App,Source}MenuItem could derive
+ from it so that the GMenuItem-setting logic is only in one place.
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Install icons in the standard path
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Remove unused #include
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Make sure the icon is cleared also when a source is removed
+
+ The code was there, but an superfluous condition made the function return
+ early.
+
+2012-08-27 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Bring back the blue icon when a source is drawing attention
+
+2012-08-25 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Plug memory leaks: return value of g_menu_model_get_item_link is transfer full
+
+2012-08-25 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Fix a memory leak and potential crash: ref_sink the widget, not the GMenu
+
+2012-08-24 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Make sure the time shown in the menu is always current
+
+2012-08-24 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Don't spam debug messages
+
+2012-08-24 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Request showing the chat section also when the app is not running
+
+2012-08-24 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Don't use '&' in variant format strings of g_menu_item_* calls
+
+2012-08-23 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ libmessaging-menu: fix g-ir-scanner warnings
+
+ Also, enable warnings by default and only include messaging-menu.[ch] in the
+ gir.
+
+2012-08-23 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ libmessaging-menu: re-register with the service if it restarted
+
+2012-08-23 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Make the panel plugin reconnect to the service when it restarts
+
+2012-08-23 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ libmessaging-menu: don't warn when removing a non-existant source
+
+2012-08-23 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ libmessaging-menu: remove sources when they are activated
+
+ Applications shouldn't leave message sources that the user clicked on in the
+ messaging menu. This patch spares apps from having to call remove_source in
+ all of their handlers.
+
+2012-08-23 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ libmessaging-menu: annotate icon parameters with allow-none
+
+2012-08-23 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ libmessaging-menu: warn when desktop_id is NULL (instead of crashing)
+
+2012-08-21 Sebastien Bacher <seb128@ubuntu.com>
+
+ libmessaging-menu: fix export-symbols-regex
+
+2012-08-21 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Merge lp:~charlesk/indicator-messages/towards-q-redesign
+
+ Plugs several memory leaks in app-section.c
+
+2012-08-21 Charles Kerr <charles.kerr@canonical.com>
+
+ in app-section.c's activate_cb(), don't leak the GError if we can't launch
+
+2012-08-21 Charles Kerr <charles.kerr@canonical.com>
+
+ in app-section's app_section_set_app_info(), don't leak the nicks' actions
+
+2012-08-21 Charles Kerr <charles.kerr@canonical.com>
+
+ in app-section.c's dispose(), clear the muxer object
+
+2012-08-21 Charles Kerr <charles.kerr@canonical.com>
+
+ sync with lp:~larsu/indicator-messages/towards-q-redesign
+
+2012-08-21 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ configure.ac: remove unused variable
+
+2012-08-21 Lars Uebernickel <lars.uebernickel@canonical.com>
+
+ Bump glib and gtk dependencies
+
2012-08-21 Lars Uebernickel <lars.uebernickel@canonical.com>
12.10.0
diff --git a/Makefile.in b/Makefile.in
index c5709be..51060cb 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -59,7 +59,7 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/Makefile.am.coverage $(top_srcdir)/configure \
AUTHORS COPYING ChangeLog INSTALL NEWS compile config.guess \
- config.sub depcomp install-sh ltmain.sh missing mkinstalldirs
+ config.sub depcomp install-sh ltmain.sh missing
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
@@ -68,7 +68,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -199,7 +199,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/NEWS b/NEWS
index e69de29..95444fd 100644
--- a/NEWS
+++ b/NEWS
@@ -0,0 +1,9 @@
+Overview of changes from 12.10.0 to 12.10.1
+===========================================
+
+* presence icons are shown again
+* the icon is changed when a source draws attention
+* the time in source menu items is always kep current
+* fixed all g-ir-scanner warnings
+* libmessaging-menu now removes sources when they are activated
+* fixed several bugs
diff --git a/configure b/configure
index dfb8e2d..5703e00 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for indicator-messages 12.10.0.
+# Generated by GNU Autoconf 2.69 for indicator-messages 12.10.1.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='indicator-messages'
PACKAGE_TARNAME='indicator-messages'
-PACKAGE_VERSION='12.10.0'
-PACKAGE_STRING='indicator-messages 12.10.0'
+PACKAGE_VERSION='12.10.1'
+PACKAGE_STRING='indicator-messages 12.10.1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -646,7 +646,6 @@ MSGFMT_OPTS
GNOMELOCALEDIR
GETTEXT_PACKAGE
DBUSSERVICEDIR
-INDICATORICONSDIR
INDICATORDIR
BUILD_TESTS_FALSE
BUILD_TESTS_TRUE
@@ -1449,7 +1448,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-messages 12.10.0 to adapt to many kinds of systems.
+\`configure' configures indicator-messages 12.10.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1520,7 +1519,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of indicator-messages 12.10.0:";;
+ short | recursive ) echo "Configuration of indicator-messages 12.10.1:";;
esac
cat <<\_ACEOF
@@ -1661,7 +1660,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-indicator-messages configure 12.10.0
+indicator-messages configure 12.10.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2234,7 +2233,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-messages $as_me 12.10.0, which was
+It was created by indicator-messages $as_me 12.10.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3054,7 +3053,7 @@ fi
# Define the identity of the package.
PACKAGE='indicator-messages'
- VERSION='12.10.0'
+ VERSION='12.10.1'
cat >>confdefs.h <<_ACEOF
@@ -16784,11 +16783,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# Dependencies
###########################
-GTK_REQUIRED_VERSION=3.0
-GIO_UNIX_REQUIRED_VERSION=2.18
-PANEL_REQUIRED_VERSION=2.0.0
+GTK_REQUIRED_VERSION=3.5.12
+GIO_UNIX_REQUIRED_VERSION=2.33.10
INDICATOR_REQUIRED_VERSION=0.3.19
-GLIB_REQUIRED_VERSION=2.31.20
+GLIB_REQUIRED_VERSION=2.33.10
INTROSPECTION_REQUIRED_VERSION=1.32.0
@@ -18240,14 +18238,11 @@ fi
if test "x$with_localinstall" = "xyes"; then
INDICATORDIR="${libdir}/indicators/2/"
- INDICATORICONSDIR="${datadir}/libindicate/icons/"
else
INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4`
- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4`
fi
-
###########################
# DBus Service Info
###########################
@@ -19583,7 +19578,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-messages $as_me 12.10.0, which was
+This file was extended by indicator-messages $as_me 12.10.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -19649,7 +19644,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-messages config.status 12.10.0
+indicator-messages config.status 12.10.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index f9f00e9..4d3ef7a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
-AC_INIT(indicator-messages, 12.10.0)
+AC_INIT(indicator-messages, 12.10.1)
AC_PREREQ(2.62)
@@ -38,11 +38,10 @@ AC_PROG_CXX
# Dependencies
###########################
-GTK_REQUIRED_VERSION=3.0
-GIO_UNIX_REQUIRED_VERSION=2.18
-PANEL_REQUIRED_VERSION=2.0.0
+GTK_REQUIRED_VERSION=3.5.12
+GIO_UNIX_REQUIRED_VERSION=2.33.10
INDICATOR_REQUIRED_VERSION=0.3.19
-GLIB_REQUIRED_VERSION=2.31.20
+GLIB_REQUIRED_VERSION=2.33.10
INTROSPECTION_REQUIRED_VERSION=1.32.0
PKG_CHECK_MODULES(APPLET, gtk+-3.0 >= $GTK_REQUIRED_VERSION
@@ -107,13 +106,10 @@ AC_ARG_ENABLE(localinstall, AS_HELP_STRING([--enable-localinstall], [install all
if test "x$with_localinstall" = "xyes"; then
INDICATORDIR="${libdir}/indicators/2/"
- INDICATORICONSDIR="${datadir}/libindicate/icons/"
else
INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4`
- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4`
fi
AC_SUBST(INDICATORDIR)
-AC_SUBST(INDICATORICONSDIR)
###########################
# DBus Service Info
diff --git a/data/Makefile.in b/data/Makefile.in
index 95b68f9..b456915 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -204,7 +204,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/16x16/Makefile.in b/data/icons/16x16/Makefile.in
index 72a0d4b..6d8d66d 100644
--- a/data/icons/16x16/Makefile.in
+++ b/data/icons/16x16/Makefile.in
@@ -57,7 +57,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -174,7 +174,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/16x16/categories/Makefile.am b/data/icons/16x16/categories/Makefile.am
index 171e2f9..2ddfa63 100644
--- a/data/icons/16x16/categories/Makefile.am
+++ b/data/icons/16x16/categories/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/categories
+iconsdir = $(datadir)/icons/hicolor/16x16/categories
icons_DATA = \
applications-email-panel.png \
diff --git a/data/icons/16x16/categories/Makefile.in b/data/icons/16x16/categories/Makefile.in
index a252d34..12373ab 100644
--- a/data/icons/16x16/categories/Makefile.in
+++ b/data/icons/16x16/categories/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/categories
+iconsdir = $(datadir)/icons/hicolor/16x16/categories
icons_DATA = \
applications-email-panel.png \
applications-chat-panel.png \
diff --git a/data/icons/16x16/status/Makefile.am b/data/icons/16x16/status/Makefile.am
index e9c66f1..adafb8c 100644
--- a/data/icons/16x16/status/Makefile.am
+++ b/data/icons/16x16/status/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/status
+iconsdir = $(datadir)/icons/hicolor/16x16/status
icons_DATA = \
application-running.png \
diff --git a/data/icons/16x16/status/Makefile.in b/data/icons/16x16/status/Makefile.in
index 9e3f067..8d8ebff 100644
--- a/data/icons/16x16/status/Makefile.in
+++ b/data/icons/16x16/status/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/status
+iconsdir = $(datadir)/icons/hicolor/16x16/status
icons_DATA = \
application-running.png \
indicator-messages.png \
diff --git a/data/icons/22x22/Makefile.in b/data/icons/22x22/Makefile.in
index 634cf13..7314f25 100644
--- a/data/icons/22x22/Makefile.in
+++ b/data/icons/22x22/Makefile.in
@@ -57,7 +57,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -174,7 +174,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/22x22/categories/Makefile.am b/data/icons/22x22/categories/Makefile.am
index 02885d3..b1ea14c 100644
--- a/data/icons/22x22/categories/Makefile.am
+++ b/data/icons/22x22/categories/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/categories
+iconsdir = $(datadir)/icons/hicolor/22x22/categories
icons_DATA = \
applications-email-panel.png
diff --git a/data/icons/22x22/categories/Makefile.in b/data/icons/22x22/categories/Makefile.in
index beac31f..21cb923 100644
--- a/data/icons/22x22/categories/Makefile.in
+++ b/data/icons/22x22/categories/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/categories
+iconsdir = $(datadir)/icons/hicolor/22x22/categories
icons_DATA = \
applications-email-panel.png
diff --git a/data/icons/22x22/status/Makefile.am b/data/icons/22x22/status/Makefile.am
index f18bbcc..470c817 100644
--- a/data/icons/22x22/status/Makefile.am
+++ b/data/icons/22x22/status/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/status
+iconsdir = $(datadir)/icons/hicolor/22x22/status
icons_DATA = \
indicator-messages.png \
diff --git a/data/icons/22x22/status/Makefile.in b/data/icons/22x22/status/Makefile.in
index 44d6bae..1f2abad 100644
--- a/data/icons/22x22/status/Makefile.in
+++ b/data/icons/22x22/status/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/status
+iconsdir = $(datadir)/icons/hicolor/22x22/status
icons_DATA = \
indicator-messages.png \
indicator-messages-new.png
diff --git a/data/icons/24x24/Makefile.in b/data/icons/24x24/Makefile.in
index 1a204ff..d1024b4 100644
--- a/data/icons/24x24/Makefile.in
+++ b/data/icons/24x24/Makefile.in
@@ -57,7 +57,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -174,7 +174,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/24x24/status/Makefile.am b/data/icons/24x24/status/Makefile.am
index 7686c0e..086c404 100644
--- a/data/icons/24x24/status/Makefile.am
+++ b/data/icons/24x24/status/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/status
+iconsdir = $(datadir)/icons/hicolor/24x24/status
icons_DATA = \
application-running.png \
diff --git a/data/icons/24x24/status/Makefile.in b/data/icons/24x24/status/Makefile.in
index 487def1..d5e7f65 100644
--- a/data/icons/24x24/status/Makefile.in
+++ b/data/icons/24x24/status/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/status
+iconsdir = $(datadir)/icons/hicolor/24x24/status
icons_DATA = \
application-running.png \
indicator-messages.png \
diff --git a/data/icons/32x32/Makefile.in b/data/icons/32x32/Makefile.in
index 4b0e1fc..7edc9f4 100644
--- a/data/icons/32x32/Makefile.in
+++ b/data/icons/32x32/Makefile.in
@@ -57,7 +57,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -174,7 +174,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/32x32/categories/Makefile.am b/data/icons/32x32/categories/Makefile.am
index 3a74b80..6fcfb7b 100644
--- a/data/icons/32x32/categories/Makefile.am
+++ b/data/icons/32x32/categories/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/categories
+iconsdir = $(datadir)/icons/hicolor/32x32/categories
icons_DATA = \
applications-email-panel.png \
diff --git a/data/icons/32x32/categories/Makefile.in b/data/icons/32x32/categories/Makefile.in
index 45a29f7..bdbe0ad 100644
--- a/data/icons/32x32/categories/Makefile.in
+++ b/data/icons/32x32/categories/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/categories
+iconsdir = $(datadir)/icons/hicolor/32x32/categories
icons_DATA = \
applications-email-panel.png \
applications-chat-panel.png
diff --git a/data/icons/32x32/status/Makefile.am b/data/icons/32x32/status/Makefile.am
index 84d9609..00f9d53 100644
--- a/data/icons/32x32/status/Makefile.am
+++ b/data/icons/32x32/status/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/status
+iconsdir = $(datadir)/icons/hicolor/32x32/status
icons_DATA = \
application-running.png \
diff --git a/data/icons/32x32/status/Makefile.in b/data/icons/32x32/status/Makefile.in
index 2b21bd5..b04fb23 100644
--- a/data/icons/32x32/status/Makefile.in
+++ b/data/icons/32x32/status/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/status
+iconsdir = $(datadir)/icons/hicolor/32x32/status
icons_DATA = \
application-running.png \
indicator-messages.png \
diff --git a/data/icons/48x48/Makefile.in b/data/icons/48x48/Makefile.in
index 76e27ea..bf7bbb0 100644
--- a/data/icons/48x48/Makefile.in
+++ b/data/icons/48x48/Makefile.in
@@ -57,7 +57,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -174,7 +174,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/48x48/status/Makefile.am b/data/icons/48x48/status/Makefile.am
index ee7eb74..9c560b5 100644
--- a/data/icons/48x48/status/Makefile.am
+++ b/data/icons/48x48/status/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/48x48/status
+iconsdir = $(datadir)/icons/hicolor/48x48/status
icons_DATA = \
application-running.png \
diff --git a/data/icons/48x48/status/Makefile.in b/data/icons/48x48/status/Makefile.in
index cdbabdf..618c959 100644
--- a/data/icons/48x48/status/Makefile.in
+++ b/data/icons/48x48/status/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/48x48/status
+iconsdir = $(datadir)/icons/hicolor/48x48/status
icons_DATA = \
application-running.png \
indicator-messages.png \
diff --git a/data/icons/Makefile.in b/data/icons/Makefile.in
index 070baea..4fc8008 100644
--- a/data/icons/Makefile.in
+++ b/data/icons/Makefile.in
@@ -57,7 +57,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -174,7 +174,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/scalable/Makefile.in b/data/icons/scalable/Makefile.in
index a5273bf..640f589 100644
--- a/data/icons/scalable/Makefile.in
+++ b/data/icons/scalable/Makefile.in
@@ -57,7 +57,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -174,7 +174,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff --git a/data/icons/scalable/categories/Makefile.am b/data/icons/scalable/categories/Makefile.am
index 64ce622..0fdbbd7 100644
--- a/data/icons/scalable/categories/Makefile.am
+++ b/data/icons/scalable/categories/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/categories
+iconsdir = $(datadir)/icons/hicolor/scalable/categories
icons_DATA = \
applications-email-panel.svg \
diff --git a/data/icons/scalable/categories/Makefile.in b/data/icons/scalable/categories/Makefile.in
index 5c56a02..8bbd2f0 100644
--- a/data/icons/scalable/categories/Makefile.in
+++ b/data/icons/scalable/categories/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/categories
+iconsdir = $(datadir)/icons/hicolor/scalable/categories
icons_DATA = \
applications-email-panel.svg \
applications-chat-panel.svg
diff --git a/data/icons/scalable/status/Makefile.am b/data/icons/scalable/status/Makefile.am
index 060b479..59f0256 100644
--- a/data/icons/scalable/status/Makefile.am
+++ b/data/icons/scalable/status/Makefile.am
@@ -1,5 +1,5 @@
-iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/status
+iconsdir = $(datadir)/icons/hicolor/scalable/status
icons_DATA = \
application-running.svg \
diff --git a/data/icons/scalable/status/Makefile.in b/data/icons/scalable/status/Makefile.in
index 517a8f2..ea3cb73 100644
--- a/data/icons/scalable/status/Makefile.in
+++ b/data/icons/scalable/status/Makefile.in
@@ -58,7 +58,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -164,7 +164,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -291,7 +290,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/status
+iconsdir = $(datadir)/icons/hicolor/scalable/status
icons_DATA = \
application-running.svg \
indicator-messages.svg \
diff --git a/libmessaging-menu/Makefile.am b/libmessaging-menu/Makefile.am
index 187e6dc..ef37700 100644
--- a/libmessaging-menu/Makefile.am
+++ b/libmessaging-menu/Makefile.am
@@ -18,7 +18,7 @@ libmessaging_menu_la_CFLAGS = \
$(GIO_CFLAGS) \
-Wall
-libmessaging_menu_la_LDFLAGS = -export-symbols-regex="^messaging_menu_.*"
+libmessaging_menu_la_LDFLAGS = -export-symbols-regex "^messaging_menu_.*"
BUILT_SOURCES = \
indicator-messages-service.c \
@@ -41,7 +41,7 @@ pkgconfig_DATA = messaging-menu.pc
-include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_GIRS =
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir)
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
if HAVE_INTROSPECTION
@@ -51,7 +51,7 @@ MessagingMenu_1_0_gir_NAMESPACE = MessagingMenu
MessagingMenu_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0
MessagingMenu_1_0_gir_CFLAGS = $(INCLUDES) $(GIO_CFLAGS)
MessagingMenu_1_0_gir_LIBS = libmessaging-menu.la
-MessagingMenu_1_0_gir_FILES = $(libmessaging_menu_la_SOURCES) $(libmessaging_menu_la_HEADERS)
+MessagingMenu_1_0_gir_FILES = messaging-menu.c messaging-menu.h
INTROSPECTION_GIRS += MessagingMenu-1.0.gir
girdir = $(datadir)/gir-1.0
diff --git a/libmessaging-menu/Makefile.in b/libmessaging-menu/Makefile.in
index 11cf221..29215c2 100644
--- a/libmessaging-menu/Makefile.in
+++ b/libmessaging-menu/Makefile.in
@@ -63,7 +63,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = messaging-menu.pc
CONFIG_CLEAN_VPATH_FILES =
@@ -209,7 +209,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -352,7 +351,7 @@ libmessaging_menu_la_CFLAGS = \
$(GIO_CFLAGS) \
-Wall
-libmessaging_menu_la_LDFLAGS = -export-symbols-regex="^messaging_menu_.*"
+libmessaging_menu_la_LDFLAGS = -export-symbols-regex "^messaging_menu_.*"
BUILT_SOURCES = \
indicator-messages-service.c \
indicator-messages-service.h
@@ -361,13 +360,13 @@ CLEANFILES = $(BUILT_SOURCES) $(am__append_2)
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = messaging-menu.pc
INTROSPECTION_GIRS = $(am__append_1)
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir)
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
@HAVE_INTROSPECTION_TRUE@MessagingMenu_1_0_gir_NAMESPACE = MessagingMenu
@HAVE_INTROSPECTION_TRUE@MessagingMenu_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0
@HAVE_INTROSPECTION_TRUE@MessagingMenu_1_0_gir_CFLAGS = $(INCLUDES) $(GIO_CFLAGS)
@HAVE_INTROSPECTION_TRUE@MessagingMenu_1_0_gir_LIBS = libmessaging-menu.la
-@HAVE_INTROSPECTION_TRUE@MessagingMenu_1_0_gir_FILES = $(libmessaging_menu_la_SOURCES) $(libmessaging_menu_la_HEADERS)
+@HAVE_INTROSPECTION_TRUE@MessagingMenu_1_0_gir_FILES = messaging-menu.c messaging-menu.h
@HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0
@HAVE_INTROSPECTION_TRUE@gir_DATA = $(INTROSPECTION_GIRS)
@HAVE_INTROSPECTION_TRUE@typelibdir = $(libdir)/girepository-1.0
diff --git a/libmessaging-menu/indicator-messages-service.c b/libmessaging-menu/indicator-messages-service.c
index 24772c1..a42a534 100644
--- a/libmessaging-menu/indicator-messages-service.c
+++ b/libmessaging-menu/indicator-messages-service.c
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.33.8. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.33.10. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/libmessaging-menu/indicator-messages-service.h b/libmessaging-menu/indicator-messages-service.h
index cb399f5..2adaaf3 100644
--- a/libmessaging-menu/indicator-messages-service.h
+++ b/libmessaging-menu/indicator-messages-service.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.33.8. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.33.10. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c
index 336e89c..b090352 100644
--- a/libmessaging-menu/messaging-menu.c
+++ b/libmessaging-menu/messaging-menu.c
@@ -39,6 +39,7 @@ struct _MessagingMenuApp
GMenu *menu;
IndicatorMessagesService *messages_service;
+ guint watch_id;
GCancellable *cancellable;
};
@@ -75,6 +76,21 @@ static void global_status_changed (IndicatorMessagesService *service,
gpointer user_data);
static void
+messaging_menu_app_set_desktop_id (MessagingMenuApp *app,
+ const gchar *desktop_id)
+{
+ g_return_if_fail (desktop_id != NULL);
+
+ /* no need to clean up, it's construct only */
+ app->appinfo = g_desktop_app_info_new (desktop_id);
+ if (app->appinfo == NULL)
+ {
+ g_warning ("could not find the desktop file for '%s'",
+ desktop_id);
+ }
+}
+
+static void
messaging_menu_app_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -85,12 +101,7 @@ messaging_menu_app_set_property (GObject *object,
switch (prop_id)
{
case PROP_DESKTOP_ID:
- app->appinfo = g_desktop_app_info_new (g_value_get_string (value));
- if (app->appinfo == NULL)
- {
- g_warning ("could not find the desktop file for '%s'",
- g_value_get_string (value));
- }
+ messaging_menu_app_set_desktop_id (app, g_value_get_string (value));
break;
default:
@@ -109,6 +120,12 @@ messaging_menu_app_dispose (GObject *object)
{
MessagingMenuApp *app = MESSAGING_MENU_APP (object);
+ if (app->watch_id > 0)
+ {
+ g_bus_unwatch_name (app->watch_id);
+ app->watch_id = 0;
+ }
+
if (app->cancellable)
{
g_cancellable_cancel (app->cancellable);
@@ -233,6 +250,17 @@ got_session_bus (GObject *source,
g_error_free (error);
}
+ g_object_unref (bus);
+}
+
+static void
+indicator_messages_appeared (GDBusConnection *bus,
+ const gchar *name,
+ const gchar *name_owner,
+ gpointer user_data)
+{
+ MessagingMenuApp *app = user_data;
+
indicator_messages_service_proxy_new (bus,
G_DBUS_PROXY_FLAGS_NONE,
"com.canonical.indicator.messages",
@@ -240,8 +268,22 @@ got_session_bus (GObject *source,
app->cancellable,
created_messages_service,
app);
+}
- g_object_unref (bus);
+static void
+indicator_messages_vanished (GDBusConnection *bus,
+ const gchar *name,
+ gpointer user_data)
+{
+ MessagingMenuApp *app = user_data;
+
+ if (app->messages_service)
+ {
+ g_signal_handlers_disconnect_by_func (app->messages_service,
+ global_status_changed,
+ app);
+ g_clear_object (&app->messages_service);
+ }
}
static void
@@ -262,6 +304,14 @@ messaging_menu_app_init (MessagingMenuApp *app)
app->cancellable,
got_session_bus,
app);
+
+ app->watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
+ "com.canonical.indicator.messages",
+ G_BUS_NAME_WATCHER_FLAGS_NONE,
+ indicator_messages_appeared,
+ indicator_messages_vanished,
+ app,
+ NULL);
}
/**
@@ -277,7 +327,7 @@ messaging_menu_app_init (MessagingMenuApp *app)
* The messaging menu will return to marking the application as not running as
* soon as the returned #MessagingMenuApp is destroyed.
*
- * Returns: (transfer-full): a new #MessagingMenuApp
+ * Returns: (transfer full): a new #MessagingMenuApp
*/
MessagingMenuApp *
messaging_menu_app_new (const gchar *desktop_id)
@@ -409,6 +459,8 @@ source_action_activated (GTupleAction *action,
const gchar *name = g_action_get_name (G_ACTION (action));
GQuark q = g_quark_from_string (name);
+ messaging_menu_app_remove_source (app, name);
+
g_signal_emit (app, signals[ACTIVATE_SOURCE], q, name);
}
@@ -501,7 +553,7 @@ messaging_menu_app_insert_source (MessagingMenuApp *app,
* messaging_menu_app_append_source:
* @app: a #MessagingMenuApp
* @id: a unique identifier for the source to be added
- * @icon: the icon associated with the source
+ * @icon: (allow-none): the icon associated with the source
* @label: a user-visible string best describing the source
*
* Appends a new message source to the end of the section representing @app.
@@ -525,7 +577,7 @@ messaging_menu_app_append_source (MessagingMenuApp *app,
* @app: a #MessagingMenuApp
* @position: the position at which to insert the source
* @id: a unique identifier for the source to be added
- * @icon: the icon associated with the source
+ * @icon: (allow-none): the icon associated with the source
* @label: a user-visible string best describing the source
* @count: the count for the source
*
@@ -553,7 +605,7 @@ messaging_menu_app_insert_source_with_count (MessagingMenuApp *app,
* messaging_menu_app_append_source_with_count:
* @app: a #MessagingMenuApp
* @id: a unique identifier for the source to be added
- * @icon: the icon associated with the source
+ * @icon: (allow-none): the icon associated with the source
* @label: a user-visible string best describing the source
* @count: the count for the source
*
@@ -579,7 +631,7 @@ void messaging_menu_app_append_source_with_count (MessagingMenuApp *app,
* @app: a #MessagingMenuApp
* @position: the position at which to insert the source
* @id: a unique identifier for the source to be added
- * @icon: the icon associated with the source
+ * @icon: (allow-none): the icon associated with the source
* @label: a user-visible string best describing the source
* @time: the time when the source was created
*
@@ -606,9 +658,8 @@ messaging_menu_app_insert_source_with_time (MessagingMenuApp *app,
/**
* messaging_menu_app_append_source_with_time:
* @app: a #MessagingMenuApp
- * @position: the position at which to insert the source
* @id: a unique identifier for the source to be added
- * @icon: the icon associated with the source
+ * @icon: (allow-none): the icon associated with the source
* @label: a user-visible string best describing the source
* @time: the time when the source was created
*
@@ -635,7 +686,7 @@ messaging_menu_app_append_source_with_time (MessagingMenuApp *app,
* @app: a #MessagingMenuApp
* @position: the position at which to insert the source
* @id: a unique identifier for the source to be added
- * @icon: the icon associated with the source
+ * @icon: (allow-none): the icon associated with the source
* @label: a user-visible string best describing the source
* @str: a string associated with the source
*
@@ -662,9 +713,8 @@ messaging_menu_app_insert_source_with_string (MessagingMenuApp *app,
/**
* messaging_menu_app_append_source_with_string:
* @app: a #MessagingMenuApp
- * @position: the position at which to insert the source
* @id: a unique identifier for the source to be added
- * @icon: the icon associated with the source
+ * @icon: (allow-none): the icon associated with the source
* @label: a user-visible string best describing the source
* @str: a string associated with the source
*
@@ -704,22 +754,23 @@ messaging_menu_app_remove_source (MessagingMenuApp *app,
g_return_if_fail (source_id != NULL);
if (g_simple_action_group_lookup (app->source_actions, source_id) == NULL)
- {
- g_warning ("%s: a source with id '%s' doesn't exist", G_STRFUNC, source_id);
return;
- }
n_items = g_menu_model_get_n_items (G_MENU_MODEL (app->menu));
for (i = 0; i < n_items; i++)
{
- const gchar *action = NULL;
+ gchar *action;
- g_menu_model_get_item_attribute (G_MENU_MODEL (app->menu), i,
- "action", "&s", &action);
- if (!g_strcmp0 (action, source_id))
+ if (g_menu_model_get_item_attribute (G_MENU_MODEL (app->menu), i,
+ "action", "s", &action))
{
- g_menu_remove (app->menu, i);
- break;
+ if (!g_strcmp0 (action, source_id))
+ {
+ g_menu_remove (app->menu, i);
+ break;
+ }
+
+ g_free (action);
}
}
@@ -783,7 +834,7 @@ messaging_menu_app_set_source_time (MessagingMenuApp *app,
* messaging_menu_app_set_source_string:
* @app: a #MessagingMenuApp
* @source_id: a source id
- * @string: the new string for the source
+ * @str: the new string for the source
*
* Updates the string displayed next to @source_id to @str.
*
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100755
index 4191a45..0000000
--- a/mkinstalldirs
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2009-04-28.21; # UTC
-
-# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-IFS=" "" $nl"
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake@gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage"
- exit $?
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --version)
- echo "$0 $scriptversion"
- exit $?
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error. This is a problem when calling mkinstalldirs
-# from a parallel make. We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
- '')
- if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- else
- # On NextStep and OpenStep, the `mkdir' command does not
- # recognize any option. It will interpret all options as
- # directories to create, and then abort because `.' already
- # exists.
- test -d ./-p && rmdir ./-p
- test -d ./--version && rmdir ./--version
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
- test ! -d ./--version; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- else
- # Clean up after NextStep and OpenStep mkdir.
- for d in ./-m ./-p ./--version "./$dirmode";
- do
- test -d $d && rmdir $d
- done
- fi
- ;;
-esac
-
-for file
-do
- case $file in
- /*) pathcomp=/ ;;
- *) pathcomp= ;;
- esac
- oIFS=$IFS
- IFS=/
- set fnord $file
- shift
- IFS=$oIFS
-
- for d
- do
- test "x$d" = x && continue
-
- pathcomp=$pathcomp$d
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp=$pathcomp/
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/src/Makefile.am b/src/Makefile.am
index 403a289..4d86730 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,6 +15,8 @@ messaginglibdir = $(INDICATORDIR)
messaginglib_LTLIBRARIES = libmessaging.la
libmessaging_la_SOURCES = \
indicator-messages.c \
+ ido-menu-item.c \
+ ido-menu-item.h \
im-app-menu-item.c \
im-app-menu-item.h \
im-source-menu-item.c \
diff --git a/src/Makefile.in b/src/Makefile.in
index d95ba26..9fe1c45 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -60,7 +60,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -97,6 +97,7 @@ LTLIBRARIES = $(messaginglib_LTLIBRARIES)
am__DEPENDENCIES_1 =
libmessaging_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_libmessaging_la_OBJECTS = libmessaging_la-indicator-messages.lo \
+ libmessaging_la-ido-menu-item.lo \
libmessaging_la-im-app-menu-item.lo \
libmessaging_la-im-source-menu-item.lo \
libmessaging_la-indicator-messages-service.lo
@@ -220,7 +221,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -360,6 +360,8 @@ messaginglibdir = $(INDICATORDIR)
messaginglib_LTLIBRARIES = libmessaging.la
libmessaging_la_SOURCES = \
indicator-messages.c \
+ ido-menu-item.c \
+ ido-menu-item.h \
im-app-menu-item.c \
im-app-menu-item.h \
im-source-menu-item.c \
@@ -547,6 +549,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_messages_service-gsettingsstrv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_messages_service-indicator-messages-service.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_messages_service-messages-service.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmessaging_la-ido-menu-item.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmessaging_la-im-app-menu-item.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmessaging_la-im-source-menu-item.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmessaging_la-indicator-messages-service.Plo@am__quote@
@@ -580,6 +583,13 @@ libmessaging_la-indicator-messages.lo: indicator-messages.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmessaging_la_CFLAGS) $(CFLAGS) -c -o libmessaging_la-indicator-messages.lo `test -f 'indicator-messages.c' || echo '$(srcdir)/'`indicator-messages.c
+libmessaging_la-ido-menu-item.lo: ido-menu-item.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmessaging_la_CFLAGS) $(CFLAGS) -MT libmessaging_la-ido-menu-item.lo -MD -MP -MF $(DEPDIR)/libmessaging_la-ido-menu-item.Tpo -c -o libmessaging_la-ido-menu-item.lo `test -f 'ido-menu-item.c' || echo '$(srcdir)/'`ido-menu-item.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmessaging_la-ido-menu-item.Tpo $(DEPDIR)/libmessaging_la-ido-menu-item.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ido-menu-item.c' object='libmessaging_la-ido-menu-item.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmessaging_la_CFLAGS) $(CFLAGS) -c -o libmessaging_la-ido-menu-item.lo `test -f 'ido-menu-item.c' || echo '$(srcdir)/'`ido-menu-item.c
+
libmessaging_la-im-app-menu-item.lo: im-app-menu-item.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmessaging_la_CFLAGS) $(CFLAGS) -MT libmessaging_la-im-app-menu-item.lo -MD -MP -MF $(DEPDIR)/libmessaging_la-im-app-menu-item.Tpo -c -o libmessaging_la-im-app-menu-item.lo `test -f 'im-app-menu-item.c' || echo '$(srcdir)/'`im-app-menu-item.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmessaging_la-im-app-menu-item.Tpo $(DEPDIR)/libmessaging_la-im-app-menu-item.Plo
diff --git a/src/app-section.c b/src/app-section.c
index 70bf21e..bed1302 100644
--- a/src/app-section.c
+++ b/src/app-section.c
@@ -233,6 +233,8 @@ app_section_dispose (GObject *object)
g_clear_object (&priv->source_actions);
}
+ g_clear_object (&priv->muxer);
+
g_clear_object (&priv->source_menu);
g_clear_object (&priv->ids);
g_clear_object (&priv->appinfo);
@@ -344,15 +346,21 @@ app_section_set_app_info (AppSection *self,
for (i = 0; nicks[i] != NULL; i++) {
gchar *name;
GSimpleAction *action;
+ GMenuItem *item;
name = indicator_desktop_shortcuts_nick_get_name(priv->ids, nicks[i]);
action = g_simple_action_new (nicks[i], NULL);
g_signal_connect(action, "activate", G_CALLBACK (nick_activate_cb), self);
g_simple_action_group_insert (priv->static_shortcuts, G_ACTION (action));
+ g_object_unref (action);
- g_menu_append (priv->menu, name, nicks[i]);
+ item = g_menu_item_new (name, nicks[i]);
+ g_menu_item_set_attribute (item, "x-canonical-type", "s", "IdoMenuItem");
+ g_menu_item_set_attribute (item, "x-canonical-icon", "s", ""); /* empty to get indentation */
+ g_menu_append_item (priv->menu, item);
+ g_object_unref (item);
g_free(name);
}
@@ -384,8 +392,10 @@ activate_cb (GSimpleAction *action,
GError *error = NULL;
if (!g_app_info_launch (G_APP_INFO (priv->appinfo), NULL, NULL, &error)) {
- g_warning("Unable to execute application for desktop file '%s'",
- g_desktop_app_info_get_filename (priv->appinfo));
+ g_warning("Unable to execute application for desktop file '%s': %s",
+ g_desktop_app_info_get_filename (priv->appinfo),
+ error->message);
+ g_error_free (error);
}
}
@@ -673,16 +683,9 @@ action_removed (GActionGroup *group,
gpointer user_data)
{
AppSection *self = user_data;
- GVariant *state;
-
- state = g_action_group_get_action_state (group, action_name);
- if (!state)
- return;
self->priv->draws_attention = any_action_draws_attention (group, action_name);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_DRAWS_ATTENTION]);
-
- g_variant_unref (state);
}
gboolean
@@ -690,6 +693,5 @@ app_section_get_uses_chat_status (AppSection *self)
{
AppSectionPrivate * priv = self->priv;
- /* chat status is only useful when the app is running */
- return priv->uses_chat_status && priv->source_actions;
+ return priv->uses_chat_status;
}
diff --git a/src/gmenuutils.c b/src/gmenuutils.c
index f3ceba7..f63615b 100644
--- a/src/gmenuutils.c
+++ b/src/gmenuutils.c
@@ -40,7 +40,15 @@ g_menu_find_section (GMenu *menu,
n_items = g_menu_model_get_n_items (model);
for (i = 0; i < n_items; i++)
{
- if (section == g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION))
+ GMenuModel *link;
+ gboolean found;
+
+ link = g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION);
+ found = section == link;
+
+ g_object_unref (link);
+
+ if (found)
return i;
}
diff --git a/src/ido-menu-item.c b/src/ido-menu-item.c
new file mode 100644
index 0000000..6b19d2a
--- /dev/null
+++ b/src/ido-menu-item.c
@@ -0,0 +1,395 @@
+/*
+ * Copyright 2012 Canonical Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Lars Uebernickel <lars.uebernickel@canonical.com>
+ */
+
+#include "ido-menu-item.h"
+
+struct _IdoMenuItemPrivate
+{
+ GActionGroup *action_group;
+ gchar *action;
+ GVariant *target;
+
+ GtkWidget *icon;
+ GtkWidget *label;
+
+ gboolean has_indicator;
+ gboolean in_set_active;
+};
+
+enum
+{
+ PROP_0,
+ PROP_MENU_ITEM,
+ PROP_ACTION_GROUP,
+ NUM_PROPERTIES
+};
+
+static GParamSpec *properties[NUM_PROPERTIES];
+
+G_DEFINE_TYPE (IdoMenuItem, ido_menu_item, GTK_TYPE_CHECK_MENU_ITEM);
+
+static void
+ido_menu_item_constructed (GObject *object)
+{
+ IdoMenuItemPrivate *priv = IDO_MENU_ITEM (object)->priv;
+ GtkWidget *grid;
+
+ priv->icon = g_object_ref (gtk_image_new ());
+ gtk_widget_set_margin_right (priv->icon, 6);
+
+ priv->label = g_object_ref (gtk_label_new (""));
+
+ grid = gtk_grid_new ();
+ gtk_grid_attach (GTK_GRID (grid), priv->icon, 0, 0, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), priv->label, 1, 0, 1, 1);
+
+ gtk_container_add (GTK_CONTAINER (object), grid);
+ gtk_widget_show_all (grid);
+
+ G_OBJECT_CLASS (ido_menu_item_parent_class)->constructed (object);
+}
+
+static void
+ido_menu_item_set_active (IdoMenuItem *self,
+ gboolean active)
+{
+ /* HACK gtk_check_menu_item_set_active calls gtk_menu_item_activate.
+ * Make sure our activate handler doesn't toggle the action as a
+ * result of calling this function. */
+
+ self->priv->in_set_active = TRUE;
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (self), active);
+ self->priv->in_set_active = FALSE;
+}
+
+static void
+ido_menu_item_set_has_indicator (IdoMenuItem *self,
+ gboolean has_indicator)
+{
+ if (has_indicator == self->priv->has_indicator)
+ return;
+
+ self->priv->has_indicator = has_indicator;
+
+ gtk_widget_queue_resize (GTK_WIDGET (self));
+}
+
+static void
+ido_menu_item_set_state (IdoMenuItem *self,
+ GVariant *state)
+{
+ IdoMenuItemPrivate *priv = self->priv;
+
+ if (priv->target)
+ {
+ ido_menu_item_set_has_indicator (self, TRUE);
+ gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (self), TRUE);
+ ido_menu_item_set_active (self, g_variant_equal (priv->target, state));
+ }
+ else if (g_variant_is_of_type (state, G_VARIANT_TYPE_BOOLEAN))
+ {
+ ido_menu_item_set_has_indicator (self, TRUE);
+ gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (self), FALSE);
+ ido_menu_item_set_active (self, g_variant_get_boolean (state));
+ }
+ else
+ {
+ ido_menu_item_set_has_indicator (self, FALSE);
+ }
+}
+
+static void
+ido_menu_item_set_action_name (IdoMenuItem *self,
+ const gchar *action_name)
+{
+ IdoMenuItemPrivate *priv = self->priv;
+ gboolean enabled = FALSE;
+ GVariant *state;
+ const GVariantType *param_type;
+
+ if (priv->action != NULL)
+ g_free (priv->action);
+
+ priv->action = g_strdup (action_name);
+
+ if (priv->action_group != NULL && priv->action != NULL &&
+ g_action_group_query_action (priv->action_group, priv->action,
+ &enabled, &param_type, NULL, NULL, &state))
+ {
+ gtk_widget_set_sensitive (GTK_WIDGET (self), enabled);
+
+ if (state)
+ {
+ ido_menu_item_set_state (self, state);
+ g_variant_unref (state);
+ }
+ }
+ else
+ {
+ ido_menu_item_set_active (self, FALSE);
+ gtk_widget_set_sensitive (GTK_WIDGET (self), FALSE);
+ ido_menu_item_set_has_indicator (self, FALSE);
+ }
+}
+
+static void
+ido_menu_item_action_added (GActionGroup *action_group,
+ gchar *action_name,
+ gpointer user_data)
+{
+ IdoMenuItem *self = user_data;
+
+ if (g_strcmp0 (self->priv->action, action_name) == 0)
+ ido_menu_item_set_action_name (self, action_name);
+}
+
+static void
+ido_menu_item_action_removed (GActionGroup *action_group,
+ gchar *action_name,
+ gpointer user_data)
+{
+ IdoMenuItem *self = user_data;
+
+ if (g_strcmp0 (self->priv->action, action_name) == 0)
+ {
+ gtk_widget_set_sensitive (GTK_WIDGET (self), FALSE);
+ }
+}
+
+static void
+ido_menu_item_action_enabled_changed (GActionGroup *action_group,
+ gchar *action_name,
+ gboolean enabled,
+ gpointer user_data)
+{
+ IdoMenuItem *self = user_data;
+
+ if (g_strcmp0 (self->priv->action, action_name) == 0)
+ gtk_widget_set_sensitive (GTK_WIDGET (self), enabled);
+}
+
+static void
+ido_menu_item_action_state_changed (GActionGroup *action_group,
+ gchar *action_name,
+ GVariant *value,
+ gpointer user_data)
+{
+ IdoMenuItem *self = user_data;
+
+ if (g_strcmp0 (self->priv->action, action_name) == 0)
+ ido_menu_item_set_state (self, value);
+}
+
+static void
+ido_menu_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ IdoMenuItem *self = IDO_MENU_ITEM (object);
+
+ switch (property_id)
+ {
+ case PROP_MENU_ITEM:
+ ido_menu_item_set_menu_item (self, G_MENU_ITEM (g_value_get_object (value)));
+ break;
+
+ case PROP_ACTION_GROUP:
+ ido_menu_item_set_action_group (self, G_ACTION_GROUP (g_value_get_object (value)));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+ido_menu_item_dispose (GObject *object)
+{
+ IdoMenuItem *self = IDO_MENU_ITEM (object);
+
+ if (self->priv->action_group)
+ ido_menu_item_set_action_group (self, NULL);
+
+ g_clear_object (&self->priv->icon);
+ g_clear_object (&self->priv->label);
+
+ if (self->priv->target)
+ {
+ g_variant_unref (self->priv->target);
+ self->priv->target = NULL;
+ }
+
+ G_OBJECT_CLASS (ido_menu_item_parent_class)->dispose (object);
+}
+
+static void
+ido_menu_item_finalize (GObject *object)
+{
+ IdoMenuItemPrivate *priv = IDO_MENU_ITEM (object)->priv;
+
+ g_free (priv->action);
+
+ G_OBJECT_CLASS (ido_menu_item_parent_class)->finalize (object);
+}
+
+static void
+ido_menu_item_activate (GtkMenuItem *item)
+{
+ IdoMenuItemPrivate *priv = IDO_MENU_ITEM (item)->priv;
+
+ /* see ido_menu_item_set_active */
+ if (!priv->in_set_active && priv->action && priv->action_group)
+ g_action_group_activate_action (priv->action_group, priv->action, priv->target);
+
+ GTK_MENU_ITEM_CLASS (ido_menu_item_parent_class)->activate (item);
+}
+
+static void
+ido_menu_item_draw_indicator (GtkCheckMenuItem *item,
+ cairo_t *cr)
+{
+ IdoMenuItem *self = IDO_MENU_ITEM (item);
+
+ if (self->priv->has_indicator)
+ GTK_CHECK_MENU_ITEM_CLASS (ido_menu_item_parent_class)
+ ->draw_indicator (item, cr);
+}
+
+static void
+ido_menu_item_class_init (IdoMenuItemClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkMenuItemClass *menu_item_class = GTK_MENU_ITEM_CLASS (klass);
+ GtkCheckMenuItemClass *check_class = GTK_CHECK_MENU_ITEM_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (IdoMenuItemPrivate));
+
+ object_class->constructed = ido_menu_item_constructed;
+ object_class->set_property = ido_menu_set_property;
+ object_class->dispose = ido_menu_item_dispose;
+ object_class->finalize = ido_menu_item_finalize;
+
+ menu_item_class->activate = ido_menu_item_activate;
+
+ check_class->draw_indicator = ido_menu_item_draw_indicator;
+
+ properties[PROP_MENU_ITEM] = g_param_spec_object ("menu-item",
+ "Menu item",
+ "The model GMenuItem for this menu item",
+ G_TYPE_MENU_ITEM,
+ G_PARAM_WRITABLE |
+ G_PARAM_STATIC_STRINGS);
+
+ properties[PROP_ACTION_GROUP] = g_param_spec_object ("action-group",
+ "Action group",
+ "The action group associated with this menu item",
+ G_TYPE_ACTION_GROUP,
+ G_PARAM_WRITABLE |
+ G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties (object_class, NUM_PROPERTIES, properties);
+}
+
+static void
+ido_menu_item_init (IdoMenuItem *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ IDO_TYPE_MENU_ITEM,
+ IdoMenuItemPrivate);
+}
+
+void
+ido_menu_item_set_menu_item (IdoMenuItem *self,
+ GMenuItem *menuitem)
+{
+ gchar *iconstr = NULL;
+ GIcon *icon = NULL;
+ gchar *label = NULL;
+ gchar *action = NULL;
+
+ if (g_menu_item_get_attribute (menuitem, "x-canonical-icon", "s", &iconstr))
+ {
+ GError *error;
+
+ /* only indent the label if icon is set to "" */
+ if (iconstr[0] == '\0')
+ {
+ gint width;
+
+ gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &width, NULL);
+ gtk_widget_set_size_request (self->priv->icon, width, -1);
+ }
+ else
+ {
+ icon = g_icon_new_for_string (iconstr, &error);
+ if (icon == NULL)
+ {
+ g_warning ("unable to set icon: %s", error->message);
+ g_error_free (error);
+ }
+ }
+ g_free (iconstr);
+ }
+ gtk_image_set_from_gicon (GTK_IMAGE (self->priv->icon), icon, GTK_ICON_SIZE_MENU);
+
+ g_menu_item_get_attribute (menuitem, "label", "s", &label);
+ gtk_label_set_label (GTK_LABEL (self->priv->label), label ? label : "");
+
+ self->priv->target = g_menu_item_get_attribute_value (menuitem, "target", NULL);
+
+ g_menu_item_get_attribute (menuitem, "action", "s", &action);
+ ido_menu_item_set_action_name (self, action);
+
+ if (icon)
+ g_object_unref (icon);
+ g_free (label);
+ g_free (action);
+}
+
+void
+ido_menu_item_set_action_group (IdoMenuItem *self,
+ GActionGroup *action_group)
+{
+ IdoMenuItemPrivate *priv = self->priv;
+
+ if (priv->action_group != NULL)
+ {
+ g_signal_handlers_disconnect_by_func (priv->action_group, ido_menu_item_action_added, self);
+ g_signal_handlers_disconnect_by_func (priv->action_group, ido_menu_item_action_removed, self);
+ g_signal_handlers_disconnect_by_func (priv->action_group, ido_menu_item_action_enabled_changed, self);
+ g_signal_handlers_disconnect_by_func (priv->action_group, ido_menu_item_action_state_changed, self);
+
+ g_clear_object (&priv->action_group);
+ }
+
+ if (action_group != NULL)
+ {
+ priv->action_group = g_object_ref (action_group);
+
+ g_signal_connect (priv->action_group, "action-added",
+ G_CALLBACK (ido_menu_item_action_added), self);
+ g_signal_connect (priv->action_group, "action-removed",
+ G_CALLBACK (ido_menu_item_action_removed), self);
+ g_signal_connect (priv->action_group, "action-enabled-changed",
+ G_CALLBACK (ido_menu_item_action_enabled_changed), self);
+ g_signal_connect (priv->action_group, "action-state-changed",
+ G_CALLBACK (ido_menu_item_action_state_changed), self);
+ }
+}
diff --git a/src/ido-menu-item.h b/src/ido-menu-item.h
new file mode 100644
index 0000000..0521928
--- /dev/null
+++ b/src/ido-menu-item.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2012 Canonical Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Lars Uebernickel <lars.uebernickel@canonical.com>
+ */
+
+#ifndef __IDO_MENU_ITEM_H__
+#define __IDO_MENU_ITEM_H__
+
+#include <gtk/gtk.h>
+
+#define IDO_TYPE_MENU_ITEM (ido_menu_item_get_type ())
+#define IDO_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IDO_TYPE_MENU_ITEM, IdoMenuItem))
+#define IDO_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IDO_TYPE_MENU_ITEM, IdoMenuItemClass))
+#define IS_IDO_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IDO_TYPE_MENU_ITEM))
+#define IS_IDO_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IDO_TYPE_MENU_ITEM))
+#define IDO_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IDO_TYPE_MENU_ITEM, IdoMenuItemClass))
+
+typedef struct _IdoMenuItem IdoMenuItem;
+typedef struct _IdoMenuItemClass IdoMenuItemClass;
+typedef struct _IdoMenuItemPrivate IdoMenuItemPrivate;
+
+struct _IdoMenuItemClass
+{
+ GtkCheckMenuItemClass parent_class;
+};
+
+struct _IdoMenuItem
+{
+ GtkCheckMenuItem parent;
+ IdoMenuItemPrivate *priv;
+};
+
+GType ido_menu_item_get_type (void);
+
+void ido_menu_item_set_menu_item (IdoMenuItem *item,
+ GMenuItem *menuitem);
+void ido_menu_item_set_action_group (IdoMenuItem *self,
+ GActionGroup *action_group);
+
+#endif
diff --git a/src/im-app-menu-item.c b/src/im-app-menu-item.c
index eddf562..a204631 100644
--- a/src/im-app-menu-item.c
+++ b/src/im-app-menu-item.c
@@ -48,6 +48,7 @@ im_app_menu_item_constructed (GObject *object)
GtkWidget *grid;
priv->icon = g_object_ref (gtk_image_new ());
+ gtk_widget_set_margin_right (priv->icon, 6);
priv->label = g_object_ref (gtk_label_new (""));
diff --git a/src/im-source-menu-item.c b/src/im-source-menu-item.c
index 269c75d..5aebb68 100644
--- a/src/im-source-menu-item.c
+++ b/src/im-source-menu-item.c
@@ -29,6 +29,9 @@ struct _ImSourceMenuItemPrivate
GtkWidget *icon;
GtkWidget *label;
GtkWidget *detail;
+
+ gint64 time;
+ guint timer_id;
};
enum
@@ -53,7 +56,7 @@ im_source_menu_item_constructed (GObject *object)
gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &icon_width, NULL);
priv->icon = g_object_ref (gtk_image_new ());
- gtk_widget_set_margin_left (priv->icon, icon_width + 2);
+ gtk_widget_set_margin_left (priv->icon, icon_width + 6);
priv->label = g_object_ref (gtk_label_new (""));
@@ -144,6 +147,19 @@ im_source_menu_item_time_span_string (gint64 timestamp)
}
static gboolean
+im_source_menu_item_update_time (gpointer data)
+{
+ ImSourceMenuItem *self = data;
+ gchar *str;
+
+ str = im_source_menu_item_time_span_string (self->priv->time);
+ gtk_label_set_text (GTK_LABEL (self->priv->detail), str);
+
+ g_free (str);
+ return TRUE;
+}
+
+static gboolean
im_source_menu_item_set_state (ImSourceMenuItem *self,
GVariant *state)
{
@@ -153,6 +169,12 @@ im_source_menu_item_set_state (ImSourceMenuItem *self,
const gchar *str;
gchar *detail;
+ if (priv->timer_id != 0)
+ {
+ g_source_remove (priv->timer_id);
+ priv->timer_id = 0;
+ }
+
g_return_val_if_fail (g_variant_is_of_type (state, G_VARIANT_TYPE ("(uxsb)")), FALSE);
g_variant_get (state, "(ux&sb)", &count, &time, &str, NULL);
@@ -160,7 +182,11 @@ im_source_menu_item_set_state (ImSourceMenuItem *self,
if (count != 0)
detail = g_strdup_printf ("%d", count);
else if (time != 0)
- detail = im_source_menu_item_time_span_string (time);
+ {
+ priv->time = time;
+ detail = im_source_menu_item_time_span_string (time);
+ priv->timer_id = g_timeout_add_seconds (59, im_source_menu_item_update_time, self);
+ }
else if (str != NULL && *str)
detail = collapse_whitespace (str);
else
@@ -275,6 +301,12 @@ im_source_menu_item_dispose (GObject *object)
{
ImSourceMenuItem *self = IM_SOURCE_MENU_ITEM (object);
+ if (self->priv->timer_id != 0)
+ {
+ g_source_remove (self->priv->timer_id);
+ self->priv->timer_id = 0;
+ }
+
if (self->priv->action_group)
im_source_menu_item_set_action_group (self, NULL);
diff --git a/src/indicator-messages-service.c b/src/indicator-messages-service.c
index 24772c1..a42a534 100644
--- a/src/indicator-messages-service.c
+++ b/src/indicator-messages-service.c
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.33.8. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.33.10. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/src/indicator-messages-service.h b/src/indicator-messages-service.h
index cb399f5..2adaaf3 100644
--- a/src/indicator-messages-service.h
+++ b/src/indicator-messages-service.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.33.8. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.33.10. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/src/indicator-messages.c b/src/indicator-messages.c
index 946da55..942e46f 100644
--- a/src/indicator-messages.c
+++ b/src/indicator-messages.c
@@ -32,11 +32,11 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <libindicator/indicator.h>
#include <libindicator/indicator-object.h>
-#include <libindicator/indicator-image-helper.h>
#include <libindicator/indicator-service-manager.h>
#include "dbus-data.h"
+#include "ido-menu-item.h"
#include "im-app-menu-item.h"
#include "im-source-menu-item.h"
@@ -61,6 +61,7 @@ struct _IndicatorMessages {
GMenu *menu_wrapper;
GMenuModel *menu;
GtkWidget *image;
+ GtkWidget *gtkmenu;
gchar *accessible_desc;
};
@@ -75,6 +76,9 @@ static void indicator_messages_class_init (IndicatorMessagesClass *klass);
static void indicator_messages_init (IndicatorMessages *self);
static void indicator_messages_dispose (GObject *object);
static void indicator_messages_finalize (GObject *object);
+static void service_connection_changed (IndicatorServiceManager *sm,
+ gboolean connected,
+ gpointer user_data);
static GtkImage * get_image (IndicatorObject * io);
static GtkMenu * get_menu (IndicatorObject * io);
static const gchar * get_accessible_desc (IndicatorObject * io);
@@ -86,6 +90,10 @@ static void menu_items_changed (GMenuModel *menu,
gint removed,
gint added,
gpointer user_data);
+static void messages_state_changed (GActionGroup *action_group,
+ gchar *action_name,
+ GVariant *value,
+ gpointer user_data);
G_DEFINE_TYPE (IndicatorMessages, indicator_messages, INDICATOR_OBJECT_TYPE);
@@ -110,43 +118,19 @@ indicator_messages_class_init (IndicatorMessagesClass *klass)
static void
indicator_messages_init (IndicatorMessages *self)
{
- GDBusConnection *bus;
- GError *error = NULL;
-
- /* Default values */
- self->service = NULL;
-
- /* Complex stuff */
self->service = indicator_service_manager_new_version(INDICATOR_MESSAGES_DBUS_NAME, 1);
-
- bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
- if (!bus) {
- g_warning ("error connecting to the session bus: %s", error->message);
- g_error_free (error);
- return;
- }
-
- self->actions = G_ACTION_GROUP (g_dbus_action_group_get (bus,
- INDICATOR_MESSAGES_DBUS_NAME,
- INDICATOR_MESSAGES_DBUS_OBJECT));
-
- self->menu = G_MENU_MODEL (g_dbus_menu_model_get (bus,
- INDICATOR_MESSAGES_DBUS_NAME,
- INDICATOR_MESSAGES_DBUS_OBJECT));
-
- g_signal_connect (self->menu, "items-changed", G_CALLBACK (menu_items_changed), self);
-
- self->image = g_object_ref_sink (gtk_image_new ());
- gtk_widget_show (self->image);
- update_root_item (self);
+ g_signal_connect (self->service, "connection-change",
+ G_CALLBACK (service_connection_changed), self);
self->menu_wrapper = g_menu_new ();
- update_menu (self);
+ self->gtkmenu = gtk_menu_new_from_model (G_MENU_MODEL (self->menu_wrapper));
+ g_object_ref_sink (self->gtkmenu);
- g_object_unref (bus);
+ self->image = g_object_ref_sink (gtk_image_new ());
/* make sure custom menu item types are registered (so that
* gtk_model_new_from_menu can pick them up */
+ ido_menu_item_get_type ();
im_app_menu_item_get_type ();
im_source_menu_item_get_type ();
}
@@ -162,6 +146,7 @@ indicator_messages_dispose (GObject *object)
g_clear_object (&self->menu_wrapper);
g_clear_object (&self->actions);
g_clear_object (&self->menu);
+ g_clear_object (&self->gtkmenu);
g_clear_object (&self->image);
G_OBJECT_CLASS (indicator_messages_parent_class)->dispose (object);
@@ -184,11 +169,61 @@ indicator_messages_finalize (GObject *object)
/* Functions */
+static void service_connection_changed (IndicatorServiceManager *sm,
+ gboolean connected,
+ gpointer user_data)
+{
+ IndicatorMessages *self = user_data;
+ GDBusConnection *bus;
+ GError *error = NULL;
+
+ if (self->actions != NULL) {
+ g_signal_handlers_disconnect_by_func (self->actions, messages_state_changed, self);
+ g_clear_object (&self->actions);
+ }
+ if (self->menu != NULL) {
+ g_signal_handlers_disconnect_by_func (self->menu, menu_items_changed, self);
+ g_clear_object (&self->menu);
+ }
+ if (g_menu_model_get_n_items (G_MENU_MODEL (self->menu_wrapper)) == 1)
+ g_menu_remove (self->menu_wrapper, 0);
+
+ if (connected == FALSE)
+ return;
+
+ bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+ if (!bus) {
+ g_warning ("error connecting to the session bus: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ self->actions = G_ACTION_GROUP (g_dbus_action_group_get (bus,
+ INDICATOR_MESSAGES_DBUS_NAME,
+ INDICATOR_MESSAGES_DBUS_OBJECT));
+ gtk_widget_insert_action_group (self->gtkmenu,
+ get_name_hint (INDICATOR_OBJECT (self)),
+ self->actions);
+ g_signal_connect (self->actions, "action-state-changed::messages",
+ G_CALLBACK (messages_state_changed), self);
+
+ self->menu = G_MENU_MODEL (g_dbus_menu_model_get (bus,
+ INDICATOR_MESSAGES_DBUS_NAME,
+ INDICATOR_MESSAGES_DBUS_OBJECT));
+ g_signal_connect (self->menu, "items-changed", G_CALLBACK (menu_items_changed), self);
+
+ update_root_item (self);
+ update_menu (self);
+
+ g_object_unref (bus);
+}
+
static GtkImage *
get_image (IndicatorObject * io)
{
IndicatorMessages *self = INDICATOR_MESSAGES (io);
+ gtk_widget_show (self->image);
return GTK_IMAGE (self->image);
}
@@ -196,12 +231,8 @@ static GtkMenu *
get_menu (IndicatorObject * io)
{
IndicatorMessages *self = INDICATOR_MESSAGES (io);
- GtkWidget *menu;
- menu = gtk_menu_new_from_model (G_MENU_MODEL (self->menu_wrapper));
- gtk_widget_insert_action_group (menu, get_name_hint (io), self->actions);
-
- return GTK_MENU (menu);
+ return GTK_MENU (self->gtkmenu);
}
static const gchar *
@@ -269,7 +300,7 @@ update_menu (IndicatorMessages *self)
GMenuModel *popup;
GMenuItem *item;
- if (g_menu_model_get_n_items (self->menu) == 0)
+ if (self->menu == NULL || g_menu_model_get_n_items (self->menu) == 0)
return;
popup = g_menu_model_get_item_link (self->menu, 0, G_MENU_LINK_SUBMENU);
@@ -302,3 +333,19 @@ menu_items_changed (GMenuModel *menu,
update_menu (self);
}
}
+
+static void
+messages_state_changed (GActionGroup *action_group,
+ gchar *action_name,
+ GVariant *value,
+ gpointer user_data)
+{
+ IndicatorMessages *self = user_data;
+
+ g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN));
+
+ if (g_variant_get_boolean (value))
+ gtk_image_set_from_icon_name (GTK_IMAGE (self->image), "indicator-messages-new", GTK_ICON_SIZE_MENU);
+ else
+ gtk_image_set_from_icon_name (GTK_IMAGE (self->image), "indicator-messages", GTK_ICON_SIZE_MENU);
+}
diff --git a/src/messages-service.c b/src/messages-service.c
index 407b8ba..15c5123 100644
--- a/src/messages-service.c
+++ b/src/messages-service.c
@@ -134,6 +134,8 @@ uses_chat_status_changed (GObject *object,
if (show_chat)
g_menu_insert_section (menu, 0, NULL, chat_section);
}
+
+ g_object_unref (first_section);
}
static AppSection *
@@ -313,7 +315,6 @@ change_status_action (GSimpleAction *action,
g_str_equal (status, "offline"));
if (!g_action_state_equal (G_ACTION (action), value)) {
- g_message ("%s", status);
g_simple_action_set_state (action, value);
indicator_messages_service_emit_status_changed (messages_service, status);
}
@@ -405,14 +406,33 @@ static GMenuModel *
create_status_section (void)
{
GMenu *menu;
+ GMenuItem *item;
+ struct status_item {
+ gchar *label;
+ gchar *action;
+ gchar *icon_name;
+ } status_items[] = {
+ { _("Available"), "status::available", "user-available" },
+ { _("Away"), "status::away", "user-away" },
+ { _("Busy"), "status::busy", "user-busy" },
+ { _("Invisible"), "status::invisible", "user-invisible" },
+ { _("Offline"), "status::offline", "user-offline" }
+ };
+ int i;
menu = g_menu_new ();
- g_menu_append_with_icon_name (menu, _("Available"), "user-available", "status::available");
- g_menu_append_with_icon_name (menu, _("Away"), "user-away", "status::away");
- g_menu_append_with_icon_name (menu, _("Busy"), "user-busy", "status::busy");
- g_menu_append_with_icon_name (menu, _("Invisible"), "user-invisible", "status::invisible");
- g_menu_append_with_icon_name (menu, _("Offline"), "user-offline", "status::offline");
+ item = g_menu_item_new (NULL, NULL);
+ g_menu_item_set_attribute (item, "x-canonical-type", "s", "IdoMenuItem");
+
+ for (i = 0; i < G_N_ELEMENTS (status_items); i++) {
+ g_menu_item_set_label (item, status_items[i].label);
+ g_menu_item_set_detailed_action (item, status_items[i].action);
+ g_menu_item_set_attribute (item, "x-canonical-icon", "s", status_items[i].icon_name);
+ g_menu_append_item (menu, item);
+ }
+
+ g_object_unref (item);
return G_MENU_MODEL (menu);
}
diff --git a/test/Makefile.in b/test/Makefile.in
index f4e25be..e2866bc 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -59,7 +59,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcov.m4 \
$(top_srcdir)/m4/gtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
@@ -208,7 +208,6 @@ GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
HTML_DIR = @HTML_DIR@
INDICATORDIR = @INDICATORDIR@
-INDICATORICONSDIR = @INDICATORICONSDIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@