|
|
a4b3ac5 |
From 5d519fb7a798e252dc28665694d53b0773542584 Mon Sep 17 00:00:00 2001
|
|
|
a4b3ac5 |
From: fujiwarat <takao.fujiwara1@gmail.com>
|
|
|
a4b3ac5 |
Date: Thu, 20 Oct 2011 11:00:23 +0900
|
|
|
a4b3ac5 |
Subject: [PATCH] Fix previous_engine without global engine.
|
|
|
a4b3ac5 |
|
|
|
a4b3ac5 |
---
|
|
|
a4b3ac5 |
bus/ibusimpl.c | 31 +++++++++++++++++++------------
|
|
|
a4b3ac5 |
1 files changed, 19 insertions(+), 12 deletions(-)
|
|
|
a4b3ac5 |
|
|
|
a4b3ac5 |
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
|
|
|
a4b3ac5 |
index 1494f5f..0a4f3fb 100644
|
|
|
a4b3ac5 |
--- a/bus/ibusimpl.c
|
|
|
a4b3ac5 |
+++ b/bus/ibusimpl.c
|
|
|
a4b3ac5 |
@@ -1044,13 +1044,14 @@ bus_ibus_impl_get_engine_desc (BusIBusImpl *ibus,
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
|
|
|
a4b3ac5 |
/**
|
|
|
a4b3ac5 |
- * bus_ibus_impl_context_request_next_engine_in_menu:
|
|
|
a4b3ac5 |
+ * bus_ibus_impl_context_request_rotate_engine_in_menu:
|
|
|
a4b3ac5 |
*
|
|
|
a4b3ac5 |
- * Process the "next_engine_in_menu" hotkey.
|
|
|
a4b3ac5 |
+ * Process the "next_engine_in_menu" or "previous_engine" hotkey.
|
|
|
a4b3ac5 |
*/
|
|
|
a4b3ac5 |
static void
|
|
|
a4b3ac5 |
-bus_ibus_impl_context_request_next_engine_in_menu (BusIBusImpl *ibus,
|
|
|
a4b3ac5 |
- BusInputContext *context)
|
|
|
a4b3ac5 |
+bus_ibus_impl_context_request_rotate_engine_in_menu (BusIBusImpl *ibus,
|
|
|
a4b3ac5 |
+ BusInputContext *context,
|
|
|
a4b3ac5 |
+ gboolean is_next)
|
|
|
a4b3ac5 |
{
|
|
|
a4b3ac5 |
BusEngineProxy *engine;
|
|
|
a4b3ac5 |
IBusEngineDesc *desc;
|
|
|
a4b3ac5 |
@@ -1071,12 +1072,20 @@ bus_ibus_impl_context_request_next_engine_in_menu (BusIBusImpl *ibus,
|
|
|
a4b3ac5 |
|
|
|
a4b3ac5 |
p = g_list_find (ibus->register_engine_list, desc);
|
|
|
a4b3ac5 |
if (p != NULL) {
|
|
|
a4b3ac5 |
- p = p->next;
|
|
|
a4b3ac5 |
+ if (is_next) {
|
|
|
a4b3ac5 |
+ p = p->next;
|
|
|
a4b3ac5 |
+ } else if (p->prev) {
|
|
|
a4b3ac5 |
+ p = p->prev;
|
|
|
a4b3ac5 |
+ }
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
if (p == NULL) {
|
|
|
a4b3ac5 |
p = g_list_find (ibus->engine_list, desc);
|
|
|
a4b3ac5 |
if (p != NULL) {
|
|
|
a4b3ac5 |
- p = p->next;
|
|
|
a4b3ac5 |
+ if (is_next) {
|
|
|
a4b3ac5 |
+ p = p->next;
|
|
|
a4b3ac5 |
+ } else if (p->prev) {
|
|
|
a4b3ac5 |
+ p = p->prev;
|
|
|
a4b3ac5 |
+ }
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
|
|
|
a4b3ac5 |
@@ -1126,12 +1135,9 @@ bus_ibus_impl_context_request_previous_engine (BusIBusImpl *ibus,
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
|
|
|
a4b3ac5 |
- /*
|
|
|
a4b3ac5 |
- * If the previous engine name is not found, switch to the next engine
|
|
|
a4b3ac5 |
- * in the menu. This behavior is better than doing nothing.
|
|
|
a4b3ac5 |
- */
|
|
|
a4b3ac5 |
if (!engine_name) {
|
|
|
a4b3ac5 |
- bus_ibus_impl_context_request_next_engine_in_menu (ibus, context);
|
|
|
a4b3ac5 |
+ bus_ibus_impl_context_request_rotate_engine_in_menu (ibus, context,
|
|
|
a4b3ac5 |
+ FALSE);
|
|
|
a4b3ac5 |
return;
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
|
|
|
a4b3ac5 |
@@ -2084,7 +2090,8 @@ bus_ibus_impl_filter_keyboard_shortcuts (BusIBusImpl *ibus,
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
if (event == next) {
|
|
|
a4b3ac5 |
if (bus_input_context_is_enabled (context)) {
|
|
|
a4b3ac5 |
- bus_ibus_impl_context_request_next_engine_in_menu (ibus, context);
|
|
|
a4b3ac5 |
+ bus_ibus_impl_context_request_rotate_engine_in_menu (ibus, context,
|
|
|
a4b3ac5 |
+ TRUE);
|
|
|
a4b3ac5 |
}
|
|
|
a4b3ac5 |
else {
|
|
|
a4b3ac5 |
bus_input_context_enable (context);
|
|
|
a4b3ac5 |
--
|
|
|
a4b3ac5 |
1.7.6.4
|
|
|
5fabd65 |
|