diff -Nru ibus-1.5.5/debian/changelog ibus-1.5.5/debian/changelog --- ibus-1.5.5/debian/changelog 2014-02-20 20:20:01.000000000 +1300 +++ ibus-1.5.5/debian/changelog 2014-03-19 14:08:55.000000000 +1300 @@ -1,3 +1,11 @@ +ibus (1.5.5-1ubuntu3) UNRELEASED; urgency=medium + + * debian/patches/ubuntu-forward-panel-properties.patch: + - Augment the panel service D-Bus interface so that external consumers can + detect when the panel service properties are changed. + + -- William Hua Wed, 19 Mar 2014 14:08:29 +1300 + ibus (1.5.5-1ubuntu2) trusty; urgency=medium * debian/patches/ubuntu-disable-trigger.patch: diff -Nru ibus-1.5.5/debian/patches/series ibus-1.5.5/debian/patches/series --- ibus-1.5.5/debian/patches/series 2014-02-17 14:10:13.000000000 +1300 +++ ibus-1.5.5/debian/patches/series 2014-03-19 14:05:59.000000000 +1300 @@ -98,3 +98,4 @@ ibus-no-notification.patch 03_dont_run_dconf_update.patch ubuntu-disable-trigger.patch +ubuntu-forward-panel-properties.patch diff -Nru ibus-1.5.5/debian/patches/ubuntu-forward-panel-properties.patch ibus-1.5.5/debian/patches/ubuntu-forward-panel-properties.patch --- ibus-1.5.5/debian/patches/ubuntu-forward-panel-properties.patch 1970-01-01 12:00:00.000000000 +1200 +++ ibus-1.5.5/debian/patches/ubuntu-forward-panel-properties.patch 2014-03-19 16:41:24.000000000 +1300 @@ -0,0 +1,86 @@ +Description: Broadcast when panel properties are registered/updated + Augment the panel service D-Bus interface so that external consumers can + detect when the panel service properties are changed. +Author: William Hua +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1290881 + +Index: 1290881/src/ibuspanelservice.c +=================================================================== +--- 1290881.orig/src/ibuspanelservice.c 2014-03-19 14:09:42.631147741 +1300 ++++ 1290881/src/ibuspanelservice.c 2014-03-19 16:41:16.886869768 +1300 +@@ -136,8 +136,24 @@ + + G_DEFINE_TYPE (IBusPanelService, ibus_panel_service, IBUS_TYPE_SERVICE) + ++/* Ubuntu-specific */ ++#define UBUNTU_INTERFACE_PANEL "com.canonical.IBus.Panel.Private" ++ + static const gchar introspection_xml[] = + "" ++ /* Ubuntu-specific */ ++ " " ++ " " ++ " " ++ " " ++ " " ++ " " ++ " " ++ " " ++ " " ++ " " ++ " " ++ " " + " " + /* Methods */ + " " +@@ -841,6 +857,20 @@ + { + IBusPanelService *panel = IBUS_PANEL_SERVICE (service); + ++ /* Ubuntu-specific */ ++ if (g_strcmp0 (interface_name, UBUNTU_INTERFACE_PANEL) == 0) { ++ if (g_strcmp0 (method_name, "ActivateProperty") == 0) { ++ const gchar *name; ++ guint state; ++ ++ g_variant_get (parameters, "(&su)", &name, &state); ++ ++ ibus_panel_service_property_activate (panel, name, state); ++ g_dbus_method_invocation_return_value (invocation, NULL); ++ return; ++ } ++ } ++ + if (g_strcmp0 (interface_name, IBUS_INTERFACE_PANEL) != 0) { + IBUS_SERVICE_CLASS (ibus_panel_service_parent_class)-> + service_method_call (service, +@@ -929,6 +959,14 @@ + g_signal_emit (panel, panel_signals[REGISTER_PROPERTIES], 0, prop_list); + _g_object_unref_if_floating (prop_list); + g_dbus_method_invocation_return_value (invocation, NULL); ++ ++ /* Ubuntu-specific */ ++ ibus_service_emit_signal ((IBusService *) panel, ++ NULL, ++ UBUNTU_INTERFACE_PANEL, ++ "PropertiesRegistered", ++ parameters, ++ NULL); + return; + } + +@@ -940,6 +978,14 @@ + g_signal_emit (panel, panel_signals[UPDATE_PROPERTY], 0, property); + _g_object_unref_if_floating (property); + g_dbus_method_invocation_return_value (invocation, NULL); ++ ++ /* Ubuntu-specific */ ++ ibus_service_emit_signal ((IBusService *) panel, ++ NULL, ++ UBUNTU_INTERFACE_PANEL, ++ "PropertyUpdated", ++ parameters, ++ NULL); + return; + } +