Fixed Bug 747902 - mouse and ctrl+space not working

Updated ibus-HEAD.patch
- Fixed prev/next keys without global engine.
Updated ibus-xx-bridge-hotkey.patch for f16
- Fixed Bug 747902 - mouse and ctrl+space not working
- Fixed Bug 749770 - IME hotkey after Control + Space
Updated ibus-711632-fedora-fallback-icon.patch
- Fixed Bug 717831 - use old icon for desktops other than gnome
This commit is contained in:
Takao Fujiwara 2011-11-02 18:04:13 +09:00
parent 15fdf9a598
commit be89530857
4 changed files with 234 additions and 145 deletions

View File

@ -1,3 +1,22 @@
--- ibus/ibus/_config.py.in.orig 2011-11-01 18:32:09.235894859 +0900
+++ ibus/ibus/_config.py.in 2011-11-02 10:26:40.672355868 +0900
@@ -47,10 +47,14 @@ def get_license():
def get_ICON_KEYBOARD():
import gtk
- theme = gtk.icon_theme_get_default()
icon = '@IBUS_ICON_KEYBOARD@'
+ fallback_icon = 'ibus-keyboard'
+ settings = gtk.settings_get_default()
+ if settings.get_property('gtk-icon-theme-name') != 'gnome':
+ icon = fallback_icon
+ theme = gtk.icon_theme_get_default()
if not theme.lookup_icon(icon, 18, 0):
- icon = 'ibus-keyboard'
+ icon = fallback_icon
return icon
def use_bridge_hotkey():
--- ibus/ui/gtk/main.py.orig 2011-04-25 12:33:39.296999692 +0900 --- ibus/ui/gtk/main.py.orig 2011-04-25 12:33:39.296999692 +0900
+++ ibus/ui/gtk/main.py 2011-06-08 11:53:44.027232075 +0900 +++ ibus/ui/gtk/main.py 2011-06-08 11:53:44.027232075 +0900
@@ -86,6 +86,9 @@ class UIApplication: @@ -86,6 +86,9 @@ class UIApplication:
@ -10,9 +29,9 @@
# gtk.settings_get_default().props.gtk_theme_name = "/home/phuang/.themes/aud-Default/gtk-2.0/gtkrc" # gtk.settings_get_default().props.gtk_theme_name = "/home/phuang/.themes/aud-Default/gtk-2.0/gtkrc"
# gtk.rc_parse("./themes/default/gtkrc") # gtk.rc_parse("./themes/default/gtkrc")
UIApplication(replace).run() UIApplication(replace).run()
--- ibus/ui/gtk/panel.py.orig 2011-06-08 12:16:40.107577438 +0900 --- ibus/ui/gtk/panel.py.orig 2011-11-01 18:31:49.845898037 +0900
+++ ibus/ui/gtk/panel.py 2011-06-08 12:17:00.440460268 +0900 +++ ibus/ui/gtk/panel.py 2011-11-01 18:31:34.480900329 +0900
@@ -507,7 +507,7 @@ class Panel(ibus.PanelBase): @@ -654,7 +660,7 @@ class Panel(ibus.PanelBase):
menu = gtk.Menu() menu = gtk.Menu()
item = gtk.ImageMenuItem(_("No input window")) item = gtk.ImageMenuItem(_("No input window"))
size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)

View File

@ -249,17 +249,17 @@ index 327a5d9..b6ca12e 100644
-- --
1.7.6.4 1.7.6.4
From d57b575f2a1b33b60ad84310a4e685e706f8a574 Mon Sep 17 00:00:00 2001 From 05f9556278f791bacc0f1019427f8575fa39c9db Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com> From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 28 Oct 2011 13:09:07 +0900 Date: Wed, 2 Nov 2011 10:47:55 +0900
Subject: [PATCH] Rerotate next/previous engines without global engine. Subject: [PATCH] Rerotate next/previous engines without global engine.
--- ---
bus/ibusimpl.c | 33 ++++++++++++++++++++++++++++++--- bus/ibusimpl.c | 31 ++++++++++++++++++++++++++++---
1 files changed, 30 insertions(+), 3 deletions(-) 1 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
index 0a4f3fb..687f910 100644 index 0a4f3fb..059d660 100644
--- a/bus/ibusimpl.c --- a/bus/ibusimpl.c
+++ b/bus/ibusimpl.c +++ b/bus/ibusimpl.c
@@ -1056,7 +1056,7 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl *ibus, @@ -1056,7 +1056,7 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl *ibus,
@ -271,7 +271,7 @@ index 0a4f3fb..687f910 100644
engine = bus_input_context_get_engine (context); engine = bus_input_context_get_engine (context);
if (engine == NULL) { if (engine == NULL) {
@@ -1074,21 +1074,48 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl *ibus, @@ -1074,21 +1074,46 @@ bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl *ibus,
if (p != NULL) { if (p != NULL) {
if (is_next) { if (is_next) {
p = p->next; p = p->next;
@ -282,15 +282,13 @@ index 0a4f3fb..687f910 100644
} }
+ +
+ /* Rotate register_engine_list and engine_list. */ + /* Rotate register_engine_list and engine_list. */
+ if (p == NULL && is_next && + if (p == NULL && g_list_find (ibus->register_engine_list, desc) != NULL) {
+ g_list_find (ibus->register_engine_list, desc) != NULL) { + if (is_next) {
+ p = ibus->engine_list; + p = ibus->engine_list;
+ } + } else {
+ else if (p == NULL && !is_next &&
+ g_list_find (ibus->register_engine_list, desc) != NULL &&
+ ibus->engine_list != NULL) {
+ p = g_list_last (ibus->engine_list); + p = g_list_last (ibus->engine_list);
+ } + }
+ }
+ +
if (p == NULL) { if (p == NULL) {
p = g_list_find (ibus->engine_list, desc); p = g_list_find (ibus->engine_list, desc);
@ -304,19 +302,19 @@ index 0a4f3fb..687f910 100644
} }
} }
+ if (p == NULL && !is_next && + /* Rerotate register_engine_list and engine_list. */
+ g_list_find (ibus->engine_list, desc) != NULL) { + if (p == NULL && g_list_find (ibus->engine_list, desc) != NULL) {
+ if (is_next) {
+ p = ibus->register_engine_list;
+ if (p == NULL) {
+ p = ibus->engine_list;
+ }
+ } else {
+ p = g_list_last (ibus->register_engine_list); + p = g_list_last (ibus->register_engine_list);
+ if (p == NULL) { + if (p == NULL) {
+ p = g_list_last (ibus->engine_list); + p = g_list_last (ibus->engine_list);
+ } + }
+ } + }
+ else if (p == NULL && is_next &&
+ g_list_find (ibus->engine_list, desc) != NULL) {
+ p = ibus->register_engine_list;
+ if (p == NULL) {
+ p = ibus->engine_list;
+ }
+ } + }
+ +
if (p != NULL) { if (p != NULL) {

View File

@ -1,22 +1,22 @@
From 0c7589f84d4a0e8723f7fce37981d177a11da4f6 Mon Sep 17 00:00:00 2001 From d4fd56784b18c8eb321c75e86a9c21d3e1984888 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com> From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 28 Oct 2011 15:30:12 +0900 Date: Wed, 2 Nov 2011 12:01:55 +0900
Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead
of on-off. of on-off.
--- ---
bus/Makefile.am | 20 +- bus/Makefile.am | 20 +-
bus/ibusimpl.c | 571 +++++++++++++++++++++++++++++++++++---- bus/ibusimpl.c | 598 +++++++++++++++++++++++++++++++++++----
bus/inputcontext.c | 81 ++++++ bus/inputcontext.c | 81 ++++++
bus/inputcontext.h | 22 ++ bus/inputcontext.h | 22 ++
bus/registry.c | 61 +++++ bus/registry.c | 61 ++++
bus/registry.h | 10 + bus/registry.h | 10 +
configure.ac | 31 +++ configure.ac | 31 ++
data/Makefile.am | 6 +- data/Makefile.am | 6 +-
data/ibus.schemas.in | 287 -------------------- data/ibus.schemas.in | 287 -------------------
data/ibus.schemas.in.in | 300 ++++++++++++++++++++ data/ibus.schemas.in.in | 300 ++++++++++++++++++++
ibus/_config.py.in | 6 + ibus/_config.py.in | 6 +
ibus/inputcontext.py | 17 ++- ibus/inputcontext.py | 17 +-
ibus/interface/iinputcontext.py | 7 +- ibus/interface/iinputcontext.py | 7 +-
ibus/xkbxml.py.in | 4 + ibus/xkbxml.py.in | 4 +
setup/enginecombobox.py | 3 + setup/enginecombobox.py | 3 +
@ -26,15 +26,15 @@ Subject: [PATCH] Add a bridge hotkey which use prev-next engines instead
src/Makefile.am | 18 +- src/Makefile.am | 18 +-
src/ibushotkey.c | 11 + src/ibushotkey.c | 11 +
src/ibushotkey.h | 11 + src/ibushotkey.h | 11 +
src/ibusinputcontext.c | 28 ++ src/ibusinputcontext.c | 27 ++
src/ibusinputcontext.h | 12 + src/ibusinputcontext.h | 12 +
src/ibusutil.c | 12 + src/ibusutil.c | 12 +
src/ibusutil.h | 14 + src/ibusutil.h | 14 +
ui/gtk/panel.py | 305 +++++++++++++++++++-- ui/gtk/panel.py | 315 +++++++++++++++++++--
xkb/Makefile.am | 2 + xkb/Makefile.am | 2 +
xkb/ibus-engine-xkb-main.c | 16 ++ xkb/ibus-engine-xkb-main.c | 16 +
xkb/xkbxml.c | 10 +- xkb/xkbxml.c | 10 +-
29 files changed, 1561 insertions(+), 391 deletions(-) 29 files changed, 1596 insertions(+), 392 deletions(-)
delete mode 100644 data/ibus.schemas.in delete mode 100644 data/ibus.schemas.in
create mode 100644 data/ibus.schemas.in.in create mode 100644 data/ibus.schemas.in.in
@ -70,7 +70,7 @@ index 074b456..0efaa1b 100644
AM_LDADD = \ AM_LDADD = \
@GOBJECT2_LIBS@ \ @GOBJECT2_LIBS@ \
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
index 853465c..00864ac 100644 index 059d660..71bb6f1 100644
--- a/bus/ibusimpl.c --- a/bus/ibusimpl.c
+++ b/bus/ibusimpl.c +++ b/bus/ibusimpl.c
@@ -20,12 +20,17 @@ @@ -20,12 +20,17 @@
@ -392,16 +392,66 @@ index 853465c..00864ac 100644
#else #else
_set_preload_engines (ibus, value); _set_preload_engines (ibus, value);
#endif #endif
@@ -1226,7 +1482,73 @@ _context_request_engine_cb (BusInputCont @@ -1216,6 +1472,53 @@ _find_engine_desc_by_name (BusIBusImpl *
return NULL;
}
+#if USE_BRIDGE_HOTKEY
+const gchar *
+_get_engine_desc_hotkeys_with_system (IBusEngineDesc *desc)
+{
+ const gchar *hotkeys = NULL;
+
+ /* If the user customized the trigger key, the trigger key is used for
+ * any IBus engines. */
+ if (_bridge_trigger_keys != NULL &&
+ *_bridge_trigger_keys != '\0' &&
+ g_strcmp0 (_bridge_trigger_keys, "Control+space") != 0) {
+
+ hotkeys = (const gchar *) _bridge_trigger_keys;
+ } else if (desc) {
+ hotkeys = ibus_engine_desc_get_hotkeys (desc);
+ }
+
+ /* If engine hotkeys are not defined in the compose xml file,
+ * IBus trigger keys are used. */
+ if (!hotkeys || !*hotkeys) {
+ hotkeys = (const gchar *) _bridge_trigger_keys;
+ }
+
+ return hotkeys;
+}
+
+void
+_update_hotkeys_by_prev_engine_desc (BusIBusImpl *ibus,
+ IBusEngineDesc *next_desc,
+ IBusEngineDesc *prev_desc)
+{
+ struct _impl_and_desc {
+ BusIBusImpl *ibus;
+ IBusEngineDesc *desc;
+ } id = {ibus, next_desc};
+ const gchar *hotkeys = NULL;
+
+ hotkeys = _get_engine_desc_hotkeys_with_system (prev_desc);
+ if (hotkeys && *hotkeys) {
+ ibus_hotkey_profile_foreach_hotkey (ibus->engines_hotkey_profile,
+ _foreach_remove_engine_hotkey,
+ &id);
+ _add_engine_hotkey_with_hotkeys (next_desc, ibus, hotkeys);
+ }
+}
+#endif
+
/**
* _context_request_engine_cb:
*
@@ -1226,7 +1529,53 @@ _context_request_engine_cb (BusInputCont
const gchar *engine_name, const gchar *engine_name,
BusIBusImpl *ibus) BusIBusImpl *ibus)
{ {
- return bus_ibus_impl_get_engine_desc (ibus, engine_name); - return bus_ibus_impl_get_engine_desc (ibus, engine_name);
+ IBusEngineDesc *desc = bus_ibus_impl_get_engine_desc (ibus, engine_name); + IBusEngineDesc *desc = bus_ibus_impl_get_engine_desc (ibus, engine_name);
+ struct _impl_and_desc {
+ BusIBusImpl *ibus;
+ IBusEngineDesc *desc;
+ } id = {ibus, desc};
+ +
+#if USE_BRIDGE_HOTKEY +#if USE_BRIDGE_HOTKEY
+ IBusEngineDesc *current_desc = NULL; + IBusEngineDesc *current_desc = NULL;
@ -417,6 +467,16 @@ index 853465c..00864ac 100644
+ } + }
+ } + }
+ +
+ if (((current_desc == NULL && desc != NULL) ||
+ (current_desc != NULL && desc != NULL &&
+ g_strcmp0 (ibus_engine_desc_get_name (current_desc),
+ ibus_engine_desc_get_name (desc)) != 0)) &&
+ g_ascii_strncasecmp (ibus_engine_desc_get_name (desc),
+ DEFAULT_BRIDGE_ENGINE_NAME,
+ strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
+ _update_hotkeys_by_prev_engine_desc (ibus, desc, current_desc);
+ }
+
+ if (current_desc && desc && + if (current_desc && desc &&
+ g_strcmp0 (ibus_engine_desc_get_name (current_desc), + g_strcmp0 (ibus_engine_desc_get_name (current_desc),
+ ibus_engine_desc_get_name (desc)) != 0) { + ibus_engine_desc_get_name (desc)) != 0) {
@ -425,49 +485,23 @@ index 853465c..00864ac 100644
+ } else { + } else {
+ ibus->prev_hotkey_engine = current_desc; + ibus->prev_hotkey_engine = current_desc;
+ } + }
+ }
+ +
+ if (((current_desc == NULL && desc != NULL) || + /* If the previous engine is not included in engine_list and
+ (current_desc != NULL && desc != NULL && + * the current engine is the defualt bridge engine,
+ g_strcmp0 (ibus_engine_desc_get_name (current_desc), + * the current engine is also not included in engine_list.
+ ibus_engine_desc_get_name (desc)) != 0)) && + * So the engine is added here. */
+ g_ascii_strncasecmp (ibus_engine_desc_get_name (desc), + if (g_ascii_strncasecmp (ibus_engine_desc_get_name (current_desc),
+ DEFAULT_BRIDGE_ENGINE_NAME, + DEFAULT_BRIDGE_ENGINE_NAME,
+ strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) { + strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
+ const gchar *hotkeys = NULL; + _update_hotkeys_by_prev_engine_desc (ibus, current_desc, desc);
+
+ /* If the user customized the trigger key, the trigger key is used for
+ * any IBus engines. */
+ if (_bridge_trigger_keys != NULL &&
+ *_bridge_trigger_keys != '\0' &&
+ g_strcmp0 (_bridge_trigger_keys, "Control+space") != 0) {
+
+ hotkeys = (const gchar *) _bridge_trigger_keys;
+ } else if (current_desc) {
+ hotkeys = ibus_engine_desc_get_hotkeys (current_desc);
+ } + }
+
+ /* If engine hotkeys are not defined in the compose xml file,
+ * IBus trigger keys are used. */
+ if (!hotkeys || !*hotkeys) {
+ hotkeys = (const gchar *) _bridge_trigger_keys;
+ }
+
+ if (!hotkeys || !*hotkeys) {
+ return desc;
+ }
+
+ ibus_hotkey_profile_foreach_hotkey (ibus->engines_hotkey_profile,
+ _foreach_remove_engine_hotkey,
+ &id);
+ _add_engine_hotkey_with_hotkeys (desc, ibus, hotkeys);
+ } + }
+#endif +#endif
+ return desc; + return desc;
} }
/** /**
@@ -1265,8 +1587,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm @@ -1265,8 +1614,13 @@ bus_ibus_impl_get_engine_desc (BusIBusIm
if (!desc) { if (!desc) {
if (ibus->register_engine_list) { if (ibus->register_engine_list) {
desc = (IBusEngineDesc *) ibus->register_engine_list->data; desc = (IBusEngineDesc *) ibus->register_engine_list->data;
@ -482,7 +516,7 @@ index 853465c..00864ac 100644
desc = (IBusEngineDesc *) ibus->engine_list->data; desc = (IBusEngineDesc *) ibus->engine_list->data;
} }
} }
@@ -1311,9 +1638,20 @@ bus_ibus_impl_context_request_rotate_eng @@ -1311,9 +1665,20 @@ bus_ibus_impl_context_request_rotate_eng
desc = bus_engine_proxy_get_desc (engine); desc = bus_engine_proxy_get_desc (engine);
p = g_list_find (ibus->register_engine_list, desc); p = g_list_find (ibus->register_engine_list, desc);
@ -503,9 +537,19 @@ index 853465c..00864ac 100644
} else { } else {
p = p->prev; p = p->prev;
} }
@@ -1344,6 +1682,15 @@ bus_ibus_impl_context_request_rotate_eng @@ -1343,11 +1708,25 @@ bus_ibus_impl_context_request_rotate_eng
if (p == NULL && !is_next && if (p == NULL && g_list_find (ibus->engine_list, desc) != NULL) {
g_list_find (ibus->engine_list, desc) != NULL) { if (is_next) {
p = ibus->register_engine_list;
+#if USE_BRIDGE_HOTKEY
+ if (!use_bridge_hotkey (ibus)) {
+ p = NULL;
+ }
+#endif
if (p == NULL) {
p = ibus->engine_list;
}
} else {
p = g_list_last (ibus->register_engine_list); p = g_list_last (ibus->register_engine_list);
+#if USE_BRIDGE_HOTKEY +#if USE_BRIDGE_HOTKEY
+ if (!use_bridge_hotkey (ibus)) { + if (!use_bridge_hotkey (ibus)) {
@ -519,19 +563,7 @@ index 853465c..00864ac 100644
if (p == NULL) { if (p == NULL) {
p = g_list_last (ibus->engine_list); p = g_list_last (ibus->engine_list);
} }
@@ -1351,6 +1698,11 @@ bus_ibus_impl_context_request_rotate_eng @@ -1358,14 +1737,31 @@ bus_ibus_impl_context_request_rotate_eng
else if (p == NULL && is_next &&
g_list_find (ibus->engine_list, desc) != NULL) {
p = ibus->register_engine_list;
+#if USE_BRIDGE_HOTKEY
+ if (!use_bridge_hotkey (ibus)) {
+ p = NULL;
+ }
+#endif
if (p == NULL) {
p = ibus->engine_list;
}
@@ -1360,14 +1712,25 @@ bus_ibus_impl_context_request_rotate_eng
next_desc = (IBusEngineDesc*) p->data; next_desc = (IBusEngineDesc*) p->data;
} }
else { else {
@ -550,14 +582,20 @@ index 853465c..00864ac 100644
} }
+#if USE_BRIDGE_HOTKEY +#if USE_BRIDGE_HOTKEY
+ if (use_bridge_hotkey (ibus)) { + if (use_bridge_hotkey (ibus) && desc != next_desc) {
+ bus_input_context_set_prev_hotkey_engine (context, desc); + bus_input_context_set_prev_hotkey_engine (context, desc);
+ if (desc != NULL &&
+ g_ascii_strncasecmp (ibus_engine_desc_get_name (desc),
+ DEFAULT_BRIDGE_ENGINE_NAME,
+ strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
+ _update_hotkeys_by_prev_engine_desc (ibus, desc, next_desc);
+ }
+ } + }
+#endif +#endif
bus_ibus_impl_set_context_engine_from_desc (ibus, context, next_desc); bus_ibus_impl_set_context_engine_from_desc (ibus, context, next_desc);
} }
@@ -1389,7 +1752,9 @@ bus_ibus_impl_context_request_previous_e @@ -1387,7 +1783,9 @@ bus_ibus_impl_context_request_previous_e
if (!ibus->global_previous_engine_name) { if (!ibus->global_previous_engine_name) {
ibus->global_previous_engine_name = bus_ibus_impl_load_global_previous_engine_name_from_config (ibus); ibus->global_previous_engine_name = bus_ibus_impl_load_global_previous_engine_name_from_config (ibus);
} }
@ -567,7 +605,7 @@ index 853465c..00864ac 100644
if (engine_name != NULL) { if (engine_name != NULL) {
/* If the previous engine is removed from the engine list or the /* If the previous engine is removed from the engine list or the
current engine and the previous engine are the same one, force current engine and the previous engine are the same one, force
@@ -1450,6 +1815,9 @@ bus_ibus_impl_set_focused_context (BusIB @@ -1448,6 +1846,9 @@ bus_ibus_impl_set_focused_context (BusIB
BusEngineProxy *engine = NULL; BusEngineProxy *engine = NULL;
gboolean is_enabled = FALSE; gboolean is_enabled = FALSE;
@ -577,7 +615,7 @@ index 853465c..00864ac 100644
if (ibus->focused_context) { if (ibus->focused_context) {
if (ibus->use_global_engine) { if (ibus->use_global_engine) {
@@ -1457,6 +1825,9 @@ bus_ibus_impl_set_focused_context (BusIB @@ -1455,6 +1856,9 @@ bus_ibus_impl_set_focused_context (BusIB
engine = bus_input_context_get_engine (ibus->focused_context); engine = bus_input_context_get_engine (ibus->focused_context);
if (engine) { if (engine) {
is_enabled = bus_input_context_is_enabled (ibus->focused_context); is_enabled = bus_input_context_is_enabled (ibus->focused_context);
@ -587,7 +625,7 @@ index 853465c..00864ac 100644
g_object_ref (engine); g_object_ref (engine);
bus_input_context_set_engine (ibus->focused_context, NULL); bus_input_context_set_engine (ibus->focused_context, NULL);
} }
@@ -1481,6 +1852,9 @@ bus_ibus_impl_set_focused_context (BusIB @@ -1479,6 +1883,9 @@ bus_ibus_impl_set_focused_context (BusIB
if (is_enabled) { if (is_enabled) {
bus_input_context_enable (context); bus_input_context_enable (context);
} }
@ -597,7 +635,7 @@ index 853465c..00864ac 100644
g_object_unref (engine); g_object_unref (engine);
} }
@@ -1710,6 +2084,25 @@ _context_disabled_cb (BusInputContext @@ -1708,6 +2115,25 @@ _context_disabled_cb (BusInputContext
} }
/** /**
@ -623,7 +661,7 @@ index 853465c..00864ac 100644
* bus_ibus_impl_create_input_context: * bus_ibus_impl_create_input_context:
* @client: A name of a client. e.g. "gtk-im" * @client: A name of a client. e.g. "gtk-im"
* @returns: A BusInputContext object. * @returns: A BusInputContext object.
@@ -1737,6 +2130,7 @@ bus_ibus_impl_create_input_context (BusI @@ -1735,6 +2161,7 @@ bus_ibus_impl_create_input_context (BusI
{ "destroy", G_CALLBACK (_context_destroy_cb) }, { "destroy", G_CALLBACK (_context_destroy_cb) },
{ "enabled", G_CALLBACK (_context_enabled_cb) }, { "enabled", G_CALLBACK (_context_enabled_cb) },
{ "disabled", G_CALLBACK (_context_disabled_cb) }, { "disabled", G_CALLBACK (_context_disabled_cb) },
@ -631,7 +669,7 @@ index 853465c..00864ac 100644
}; };
gint i; gint i;
@@ -2314,6 +2708,9 @@ bus_ibus_impl_filter_keyboard_shortcuts @@ -2312,6 +2739,9 @@ bus_ibus_impl_filter_keyboard_shortcuts
GQuark event; GQuark event;
GList *engine_list; GList *engine_list;
@ -641,7 +679,7 @@ index 853465c..00864ac 100644
if (trigger == 0) { if (trigger == 0) {
trigger = g_quark_from_static_string ("trigger"); trigger = g_quark_from_static_string ("trigger");
@@ -2379,6 +2776,12 @@ bus_ibus_impl_filter_keyboard_shortcuts @@ -2377,6 +2807,12 @@ bus_ibus_impl_filter_keyboard_shortcuts
return FALSE; return FALSE;
} }
@ -654,7 +692,7 @@ index 853465c..00864ac 100644
/* Then try engines hotkeys. */ /* Then try engines hotkeys. */
event = ibus_hotkey_profile_filter_key_event (ibus->engines_hotkey_profile, event = ibus_hotkey_profile_filter_key_event (ibus->engines_hotkey_profile,
keyval, keyval,
@@ -2400,6 +2803,24 @@ bus_ibus_impl_filter_keyboard_shortcuts @@ -2398,6 +2834,24 @@ bus_ibus_impl_filter_keyboard_shortcuts
g_assert (new_engine_desc); g_assert (new_engine_desc);
@ -679,7 +717,7 @@ index 853465c..00864ac 100644
/* Find out what engine we should switch to. If the current engine has /* Find out what engine we should switch to. If the current engine has
* the same hotkey, then we should switch to the next engine with the * the same hotkey, then we should switch to the next engine with the
* same hotkey in the list. Otherwise, we just switch to the first * same hotkey in the list. Otherwise, we just switch to the first
@@ -2411,8 +2832,47 @@ bus_ibus_impl_filter_keyboard_shortcuts @@ -2409,8 +2863,43 @@ bus_ibus_impl_filter_keyboard_shortcuts
break; break;
} }
} }
@ -696,38 +734,34 @@ index 853465c..00864ac 100644
+ !bus_input_context_inited_engine (context)) { + !bus_input_context_inited_engine (context)) {
+ return FALSE; + return FALSE;
+ } + }
+
+ if (current_engine_desc != new_engine_desc) { if (current_engine_desc != new_engine_desc) {
+ if (current_engine_desc) { + if (current_engine_desc) {
+ if (context) { + if (context) {
+ bus_input_context_set_prev_hotkey_engine (context, + bus_input_context_set_prev_hotkey_engine (context,
+ current_engine_desc); + current_engine_desc);
+ } + }
+ } + }
+
+ /* If the previous engine is not included in engine_list and + /* If the current engine is the defualt bridge engine,
+ * the current engine is the defualt bridge engine, + * the current engine is not included in engine_list.
+ * the current engine is also not included in engine_list. + * E.g. prev is Ctrl+space and Zenaku and current is Ctrl+space.
+ * So the engine is added here. */ + * So the engine is added here. */
+ if (current_engine_desc != NULL && + if (current_engine_desc != NULL &&
+ g_list_find (engine_list, current_engine_desc) == NULL &&
+ g_ascii_strncasecmp (ibus_engine_desc_get_name (current_engine_desc), + g_ascii_strncasecmp (ibus_engine_desc_get_name (current_engine_desc),
+ DEFAULT_BRIDGE_ENGINE_NAME, + DEFAULT_BRIDGE_ENGINE_NAME,
+ strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) { + strlen (DEFAULT_BRIDGE_ENGINE_NAME)) == 0) {
+ engine_list = g_list_append (engine_list, current_engine_desc); + _update_hotkeys_by_prev_engine_desc (ibus,
+ + current_engine_desc,
+ g_hash_table_steal (ibus->hotkey_to_engines_map, + new_engine_desc);
+ GUINT_TO_POINTER (event));
+ g_hash_table_insert (ibus->hotkey_to_engines_map,
+ GUINT_TO_POINTER (event), engine_list);
+ } + }
+#else +#else
if (current_engine_desc != new_engine_desc) { + if (current_engine_desc != new_engine_desc) {
+#endif +#endif
bus_ibus_impl_set_context_engine_from_desc (ibus, context, new_engine_desc); bus_ibus_impl_set_context_engine_from_desc (ibus, context, new_engine_desc);
} }
@@ -2516,59 +2976,54 @@ static void @@ -2514,59 +3003,54 @@ static void
_add_engine_hotkey (IBusEngineDesc *engine, BusIBusImpl *ibus) _add_engine_hotkey (IBusEngineDesc *engine, BusIBusImpl *ibus)
{ {
const gchar *hotkeys; const gchar *hotkeys;
@ -1654,7 +1688,7 @@ index 7cf1995..a19d16e 100644
+ +
#endif #endif
diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
index 8804634..bef6fbf 100644 index 8804634..2fc11bb 100644
--- a/ui/gtk/panel.py --- a/ui/gtk/panel.py
+++ b/ui/gtk/panel.py +++ b/ui/gtk/panel.py
@@ -67,6 +67,7 @@ class Panel(ibus.PanelBase): @@ -67,6 +67,7 @@ class Panel(ibus.PanelBase):
@ -1800,8 +1834,15 @@ index 8804634..bef6fbf 100644
if not enabled: if not enabled:
self.__set_im_icon(ICON_KEYBOARD) self.__set_im_icon(ICON_KEYBOARD)
self.__set_im_name(None) self.__set_im_name(None)
@@ -250,7 +353,7 @@ class Panel(ibus.PanelBase): @@ -247,10 +350,13 @@ class Panel(ibus.PanelBase):
self.__set_im_icon(engine.icon) else:
engine = self.__focus_ic.get_engine()
if engine:
- self.__set_im_icon(engine.icon)
+ if engine.name.startswith(ibus.DEFAULT_BRIDGE_ENGINE_NAME):
+ self.__set_im_icon(ICON_KEYBOARD)
+ else:
+ self.__set_im_icon(engine.icon)
self.__set_im_name(engine.longname) self.__set_im_name(engine.longname)
if self.__bus.get_use_sys_layout(): if self.__bus.get_use_sys_layout():
- self.__xkblayout.set_layout(self.__engine_get_layout_wrapper(engine)) - self.__xkblayout.set_layout(self.__engine_get_layout_wrapper(engine))
@ -1809,7 +1850,7 @@ index 8804634..bef6fbf 100644
else: else:
self.__set_im_icon(ICON_KEYBOARD) self.__set_im_icon(ICON_KEYBOARD)
self.__set_im_name(None) self.__set_im_name(None)
@@ -273,7 +376,21 @@ class Panel(ibus.PanelBase): @@ -273,7 +379,21 @@ class Panel(ibus.PanelBase):
return return
enabled = self.__focus_ic.is_enabled() enabled = self.__focus_ic.is_enabled()
@ -1832,8 +1873,15 @@ index 8804634..bef6fbf 100644
if enabled == False: if enabled == False:
self.reset() self.reset()
@@ -287,7 +404,7 @@ class Panel(ibus.PanelBase): @@ -284,10 +404,13 @@ class Panel(ibus.PanelBase):
self.__set_im_icon(engine.icon) else:
engine = self.__focus_ic.get_engine()
if engine:
- self.__set_im_icon(engine.icon)
+ if engine.name.startswith(ibus.DEFAULT_BRIDGE_ENGINE_NAME):
+ self.__set_im_icon(ICON_KEYBOARD)
+ else:
+ self.__set_im_icon(engine.icon)
self.__set_im_name(engine.longname) self.__set_im_name(engine.longname)
if self.__bus.get_use_sys_layout(): if self.__bus.get_use_sys_layout():
- self.__xkblayout.set_layout(self.__engine_get_layout_wrapper(engine)) - self.__xkblayout.set_layout(self.__engine_get_layout_wrapper(engine))
@ -1841,7 +1889,7 @@ index 8804634..bef6fbf 100644
else: else:
self.__set_im_icon(ICON_KEYBOARD) self.__set_im_icon(ICON_KEYBOARD)
self.__set_im_name(None) self.__set_im_name(None)
@@ -315,6 +432,7 @@ class Panel(ibus.PanelBase): @@ -315,6 +438,7 @@ class Panel(ibus.PanelBase):
def __config_load_show(self): def __config_load_show(self):
show = self.__config.get_value("panel", "show", 0) show = self.__config.get_value("panel", "show", 0)
@ -1849,7 +1897,7 @@ index 8804634..bef6fbf 100644
self.__language_bar.set_show(show) self.__language_bar.set_show(show)
def __config_load_position(self): def __config_load_position(self):
@@ -443,6 +561,21 @@ class Panel(ibus.PanelBase): @@ -443,6 +567,21 @@ class Panel(ibus.PanelBase):
# menu.set_take_focus(False) # menu.set_take_focus(False)
# return menu # return menu
@ -1871,7 +1919,7 @@ index 8804634..bef6fbf 100644
def __create_im_menu(self): def __create_im_menu(self):
engines = self.__bus.list_active_engines() engines = self.__bus.list_active_engines()
current_engine = \ current_engine = \
@@ -453,25 +586,39 @@ class Panel(ibus.PanelBase): @@ -453,25 +592,39 @@ class Panel(ibus.PanelBase):
size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
menu = gtk.Menu() menu = gtk.Menu()
for i, engine in enumerate(engines): for i, engine in enumerate(engines):
@ -1924,7 +1972,7 @@ index 8804634..bef6fbf 100644
menu.show_all() menu.show_all()
menu.set_take_focus(False) menu.set_take_focus(False)
@@ -523,8 +670,25 @@ class Panel(ibus.PanelBase): @@ -523,8 +676,25 @@ class Panel(ibus.PanelBase):
if not self.__focus_ic: if not self.__focus_ic:
return return
if engine: if engine:
@ -1951,7 +1999,7 @@ index 8804634..bef6fbf 100644
self.__focus_ic.disable() self.__focus_ic.disable()
def __sys_menu_item_activate_cb(self, item, command): def __sys_menu_item_activate_cb(self, item, command):
@@ -573,12 +737,113 @@ class Panel(ibus.PanelBase): @@ -573,12 +743,113 @@ class Panel(ibus.PanelBase):
self.__setup_pid = pid self.__setup_pid = pid
glib.child_watch_add(self.__setup_pid, self.__child_watch_cb) glib.child_watch_add(self.__setup_pid, self.__child_watch_cb)

View File

@ -30,7 +30,7 @@
Name: ibus Name: ibus
Version: 1.4.0 Version: 1.4.0
Release: 8%{?dist} Release: 9%{?dist}
Summary: Intelligent Input Bus for Linux OS Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+ License: LGPLv2+
Group: System Environment/Libraries Group: System Environment/Libraries
@ -208,6 +208,17 @@ mv data/ibus.schemas.in data/ibus.schemas.in.in
%build %build
%if %have_libxkbfile %if %have_libxkbfile
XKB_PRELOAD_LAYOUTS=\
"us,us(chr),us(dvorak),ad,al,am,ara,az,ba,bd,be,bg,br,bt,by,"\
"de,dk,ca,ch,cn(tib),cz,ee,epo,es,et,fi,fo,fr,"\
"gb,ge,ge(dsb),ge(ru),ge(os),gh,gh(akan),gh(ewe),gh(fula),gh(ga),gh(hausa),"\
"gn,gr,hu,hr,ie,ie(CloGaelach),il,"\
"in,"\
"in(tel),in(bolnagri),iq,iq(ku),ir,ir(ku),is,it,"\
"kg,kh,kz,la,latam,lk,lk(tam_unicode),lt,lv,ma,ma(tifinagh),mal,mao,"\
"me,mk,mm,mt,mv,ng,ng(hausa),ng,ng(igbo),ng(yoruba),nl,no,no(smi),np,"\
"pk,pl,pl(csb),pt,ro,rs,ru,ru(cv),ru(kom),ru(sah),ru(tt),ru(xal),"\
"se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn"
aclocal -I m4 aclocal -I m4
autoheader autoheader
autoconf -f autoconf -f
@ -221,6 +232,9 @@ automake -a -c -f
--disable-gtk-doc \ --disable-gtk-doc \
--with-no-snooper-apps='gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*' \ --with-no-snooper-apps='gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*' \
--enable-surrounding-text \ --enable-surrounding-text \
%if %have_libxkbfile
--with-xkb-preload-layouts=$XKB_PRELOAD_LAYOUTS \
%endif
%if %have_bridge_hotkey %if %have_bridge_hotkey
--enable-bridge-hotkey \ --enable-bridge-hotkey \
%endif %endif
@ -392,7 +406,17 @@ fi
%{_datadir}/gtk-doc/html/* %{_datadir}/gtk-doc/html/*
%changelog %changelog
* Wed Nov 02 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-9
- Updated ibus-HEAD.patch
Fixed prev/next keys without global engine.
- Updated ibus-xx-bridge-hotkey.patch for f16
Fixed Bug 747902 - mouse and ctrl+space not working
Fixed Bug 749770 - IME hotkey after Control + Space
- Updated ibus-711632-fedora-fallback-icon.patch
Fixed Bug 717831 - use old icon for desktops other than gnome
* Fri Oct 28 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-8 * Fri Oct 28 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-8
- Updated ibus-xx-bridge-hotkey.patch for f16
- Fixed Bug 747902 - mouse and ctrl+space not working - Fixed Bug 747902 - mouse and ctrl+space not working
* Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.0-6 * Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.0-6