Updated to 1.3.99.20101118

This commit is contained in:
Takao Fujiwara 2010-11-26 14:38:39 +09:00
parent f7291cc56a
commit 3b5789d9b4
9 changed files with 338 additions and 709 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ ibus-1.3.6.tar.gz
/ibus-1.3.7.tar.gz
/ibus-1.3.8.tar.gz
/ibus-1.3.99.20101028.tar.gz
/ibus-1.3.99.20101118.tar.gz

View File

@ -1,6 +1,6 @@
From d396da77a9174df65f42e5ebe5bb723cf3fd47ef Mon Sep 17 00:00:00 2001
From e1316c38ca1b20c51c02d22517c54fcdcd42898e Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@unixuser.org>
Date: Mon, 22 Nov 2010 11:49:47 +0900
Date: Mon, 22 Nov 2010 12:48:51 +0900
Subject: [PATCH] Support surrounding-text retrieval.
This change adds a new API function ibus_engine_get_surrounding_text().
@ -26,7 +26,7 @@ resets the current surrounding-text.
bus/engineproxy.h | 4 +
bus/inputcontext.c | 32 +++++++++
client/gtk2/ibusimcontext.c | 93 ++++++++++++++++++++++++---
configure.ac | 15 +++++
configure.ac | 14 ++++
ibus/engine.py | 6 ++
ibus/interface/iengine.py | 3 +
ibus/interface/iinputcontext.py | 3 +
@ -35,15 +35,15 @@ resets the current surrounding-text.
src/ibusinputcontext.c | 61 ++++++++++++++++++
src/ibusinputcontext.h | 11 +++
src/ibusmarshalers.list | 1 +
13 files changed, 415 insertions(+), 12 deletions(-)
13 files changed, 414 insertions(+), 12 deletions(-)
diff --git a/bus/engineproxy.c b/bus/engineproxy.c
index eb9412c..2955f71 100644
--- a/bus/engineproxy.c
+++ b/bus/engineproxy.c
@@ -42,6 +42,10 @@ struct _BusEngineProxy {
@@ -41,6 +41,10 @@ struct _BusEngineProxy {
IBusKeymap *keymap;
IBusPropList *prop_list;
/* private member */
+
+ /* surrounding text */
@ -52,19 +52,20 @@ index eb9412c..2955f71 100644
};
struct _BusEngineProxyClass {
@@ -74,6 +78,8 @@ enum {
@@ -78,6 +82,8 @@ enum {
static guint engine_signals[LAST_SIGNAL] = { 0 };
// static guint engine_signals[LAST_SIGNAL] = { 0 };
+static IBusText *text_empty = NULL;
+
/* functions prototype */
static void bus_engine_proxy_real_destroy (IBusProxy *proxy);
@@ -287,11 +293,15 @@ bus_engine_proxy_class_init (BusEnginePr
static void bus_engine_proxy_set_property (BusEngineProxy *engine,
guint prop_id,
@@ -325,11 +331,16 @@ bus_engine_proxy_class_init (BusEngineProxyClass *class)
G_TYPE_NONE,
1,
IBUS_TYPE_PROPERTY);
+
+ text_empty = ibus_text_new_from_static_string ("");
+ g_object_ref_sink (text_empty);
}
@ -77,7 +78,7 @@ index eb9412c..2955f71 100644
}
static void
@@ -318,6 +328,11 @@ bus_engine_proxy_real_destroy (IBusProxy
@@ -388,6 +399,11 @@ bus_engine_proxy_real_destroy (IBusProxy *proxy)
engine->keymap = NULL;
}
@ -86,10 +87,10 @@ index eb9412c..2955f71 100644
+ engine->surrounding_text = NULL;
+ }
+
IBUS_PROXY_CLASS(bus_engine_proxy_parent_class)->destroy ((IBusProxy *)engine);
IBUS_PROXY_CLASS (bus_engine_proxy_parent_class)->destroy ((IBusProxy *)engine);
}
@@ -641,6 +656,33 @@ void bus_engine_proxy_property_hide (Bus
@@ -861,6 +877,33 @@ void bus_engine_proxy_property_hide (BusEngineProxy *engine,
NULL);
}
@ -195,10 +196,10 @@ index b006ed4..7e425c7 100644
gint i;
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
index 63d66c9..04ba818 100644
index 63d66c9..f1f0d6e 100644
--- a/client/gtk2/ibusimcontext.c
+++ b/client/gtk2/ibusimcontext.c
@@ -113,6 +113,12 @@ static void ibus_im_context_set_curs
@@ -106,6 +106,12 @@ static void ibus_im_context_set_cursor_location
static void ibus_im_context_set_use_preedit
(GtkIMContext *context,
gboolean use_preedit);
@ -211,7 +212,7 @@ index 63d66c9..04ba818 100644
/* static methods*/
static void _create_input_context (IBusIMContext *context);
@@ -131,16 +137,16 @@ static void _slave_preedit_start_cb
@@ -124,14 +130,15 @@ static void _slave_preedit_start_cb (GtkIMContext *slave,
IBusIMContext *context);
static void _slave_preedit_end_cb (GtkIMContext *slave,
IBusIMContext *context);
@ -229,13 +230,11 @@ index 63d66c9..04ba818 100644
+ gint offset_from_cursor,
+ guint nchars,
+ IBusIMContext *context);
static void _create_fake_input_context (void);
-
+static void _request_surrounding_text (IBusIMContext *context);
static GType _ibus_type_im_context = 0;
@@ -206,6 +212,17 @@ ibus_im_context_new (void)
static GtkIMContextClass *parent_class = NULL;
@@ -196,6 +203,17 @@ ibus_im_context_new (void)
return IBUS_IM_CONTEXT (obj);
}
@ -253,16 +252,16 @@ index 63d66c9..04ba818 100644
static gint
_key_snooper_cb (GtkWidget *widget,
GdkEventKey *event,
@@ -245,6 +262,8 @@ _key_snooper_cb (GtkWidget *widget,
_input_window = event->window;
}
@@ -223,6 +241,8 @@ _key_snooper_cb (GtkWidget *widget,
if (G_UNLIKELY (event->state & IBUS_IGNORED_MASK))
return FALSE;
+ _request_surrounding_text (ibusimcontext);
+
switch (event->type) {
case GDK_KEY_RELEASE:
retval = ibus_input_context_process_key_event (ibuscontext,
@@ -291,6 +310,7 @@ ibus_im_context_class_init (IBusIMCo
@@ -269,6 +289,7 @@ ibus_im_context_class_init (IBusIMContextClass *class)
im_context_class->set_client_window = ibus_im_context_set_client_window;
im_context_class->set_cursor_location = ibus_im_context_set_cursor_location;
im_context_class->set_use_preedit = ibus_im_context_set_use_preedit;
@ -270,7 +269,7 @@ index 63d66c9..04ba818 100644
gobject_class->finalize = ibus_im_context_finalize;
_signal_commit_id =
@@ -396,7 +416,11 @@ ibus_im_context_init (GObject *obj)
@@ -367,7 +388,11 @@ ibus_im_context_init (GObject *obj)
ibusimcontext->ibuscontext = NULL;
ibusimcontext->has_focus = FALSE;
@ -282,7 +281,7 @@ index 63d66c9..04ba818 100644
// Create slave im context
@@ -488,6 +512,8 @@ ibus_im_context_filter_keypress (GtkIMCo
@@ -459,6 +484,8 @@ ibus_im_context_filter_keypress (GtkIMContext *context,
if (ibusimcontext->client_window == NULL && event->window != NULL)
gtk_im_context_set_client_window ((GtkIMContext *)ibusimcontext, event->window);
@ -291,7 +290,7 @@ index 63d66c9..04ba818 100644
switch (event->type) {
case GDK_KEY_RELEASE:
retval = ibus_input_context_process_key_event (ibusimcontext->ibuscontext,
@@ -552,6 +578,8 @@ ibus_im_context_focus_in (GtkIMContext *
@@ -523,6 +550,8 @@ ibus_im_context_focus_in (GtkIMContext *context)
g_object_weak_ref ((GObject *) context, _weak_notify_cb, NULL);
_focus_im_context = context;
}
@ -300,7 +299,7 @@ index 63d66c9..04ba818 100644
}
static void
@@ -723,6 +751,39 @@ ibus_im_context_set_use_preedit (GtkIMCo
@@ -695,6 +724,39 @@ ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit)
}
static void
@ -340,7 +339,7 @@ index 63d66c9..04ba818 100644
_bus_connected_cb (IBusBus *bus,
IBusIMContext *ibusimcontext)
{
@@ -741,6 +802,8 @@ _ibus_context_commit_text_cb (IBusInputC
@@ -710,6 +772,8 @@ _ibus_context_commit_text_cb (IBusInputContext *ibuscontext,
IDEBUG ("%s", __FUNCTION__);
g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text);
@ -349,7 +348,7 @@ index 63d66c9..04ba818 100644
}
static gboolean
@@ -1013,6 +1076,8 @@ _ibus_context_show_preedit_text_cb (IBus
@@ -982,6 +1046,8 @@ _ibus_context_show_preedit_text_cb (IBusInputContext *ibuscontext,
ibusimcontext->preedit_visible = TRUE;
g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0);
g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
@ -358,7 +357,7 @@ index 63d66c9..04ba818 100644
}
static void
@@ -1178,17 +1243,21 @@ _slave_preedit_end_cb (GtkIMContext *sl
@@ -1146,17 +1212,21 @@ _slave_preedit_end_cb (GtkIMContext *slave,
g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
}
@ -384,7 +383,7 @@ index 63d66c9..04ba818 100644
_slave_delete_surrounding_cb (GtkIMContext *slave,
gint offset_from_cursor,
guint nchars,
@@ -1197,9 +1266,10 @@ _slave_delete_surrounding_cb (GtkIMConte
@@ -1165,8 +1235,9 @@ _slave_delete_surrounding_cb (GtkIMContext *slave,
gboolean return_value;
if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
@ -395,9 +394,8 @@ index 63d66c9..04ba818 100644
+ return return_value;
}
#ifdef OS_CHROMEOS
diff --git a/configure.ac b/configure.ac
index ea0d32b..60776df 100644
index ea0d32b..1347991 100644
--- a/configure.ac
+++ b/configure.ac
@@ -405,6 +405,19 @@ AC_ARG_WITH(no-snooper-apps,

View File

@ -1,12 +1,12 @@
From 8d29b30a2ad09a1e7cf840655e23018d41201436 Mon Sep 17 00:00:00 2001
From 154582485a21da5c8ecf09ca500fc58f7400c7d4 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 12 Nov 2010 18:03:42 +0900
Date: Fri, 26 Nov 2010 14:13:17 +0900
Subject: [PATCH] Reload preload engines until users customize the list.
The idea is, if users don't customize the preload_engines with ibus-setup,
users would prefer to load the system default engines again by login.
The gconf value 'preload_engine_mode' is
IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE by default.
IBUS_PRELOAD_ENGINE_MODE_USER by default.
If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE,
ibus-daemon loads the system preload engines by langs.
If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_USER,
@ -18,19 +18,19 @@ IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value
Loading system default may spend the startup time. If you mind it,
your dist may like to put TRUE in 'use_local_preload_engines' value.
---
bus/ibusimpl.c | 80 +++++++++++++++++++++++++++++++++++++++++++-------
data/ibus.schemas.in | 13 ++++++++
ibus/common.py | 4 ++
setup/main.py | 47 ++++++++++++++++++++++++++---
setup/setup.ui | 21 +++++++++++--
src/ibustypes.h | 10 ++++++
6 files changed, 156 insertions(+), 19 deletions(-)
bus/ibusimpl.c | 228 +++++++++++++++++++++++++++++++++++---------------
data/ibus.schemas.in | 13 +++
ibus/common.py | 6 ++
setup/main.py | 37 +++++++-
setup/setup.ui | 21 ++++-
src/ibustypes.h | 10 ++
6 files changed, 241 insertions(+), 74 deletions(-)
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
index 80f0bf0..c0c1a8a 100644
index b045d7f..eb353c2 100644
--- a/bus/ibusimpl.c
+++ b/bus/ibusimpl.c
@@ -133,6 +133,9 @@ static void bus_ibus_impl_set_previous_engine
@@ -144,6 +144,9 @@ static void bus_ibus_impl_set_previous_engine
static void bus_ibus_impl_set_preload_engines
(BusIBusImpl *ibus,
GVariant *value);
@ -40,50 +40,205 @@ index 80f0bf0..c0c1a8a 100644
static void bus_ibus_impl_set_use_sys_layout
(BusIBusImpl *ibus,
GVariant *value);
@@ -145,6 +148,9 @@ static void bus_ibus_impl_set_enable_by_default
static void bus_ibus_impl_set_use_global_engine
(BusIBusImpl *ibus,
GVariant *value);
+static void bus_ibus_impl_set_default_preload_engines
+ (BusIBusImpl *ibus,
+ gboolean force);
static void bus_ibus_impl_set_global_engine (BusIBusImpl *ibus,
BusEngineProxy *engine);
@@ -343,6 +349,23 @@ bus_ibus_impl_set_preload_engines (BusIBusImpl *ibus,
@@ -264,6 +267,122 @@ _panel_destroy_cb (BusPanelProxy *panel,
g_object_unref (panel);
}
+static gint
+_engine_desc_cmp (IBusEngineDesc *desc1,
+ IBusEngineDesc *desc2)
+{
+ return - ((gint) ibus_engine_desc_get_rank (desc1)) +
+ ((gint) ibus_engine_desc_get_rank (desc2));
+}
+
+static gint
+_get_config_preload_engine_mode (BusIBusImpl *ibus)
+{
+ GVariant *variant = NULL;
+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
+
+ g_assert (BUS_IS_IBUS_IMPL (ibus));
+
+ if (ibus->config == NULL) {
+ return preload_engine_mode;
+ }
+
+ variant = ibus_config_get_value (ibus->config, "general",
+ "preload_engine_mode");
+ if (variant != NULL) {
+ if (g_variant_classify (variant) == G_VARIANT_CLASS_INT32) {
+ preload_engine_mode = g_variant_get_int32 (variant);
+ }
+ g_variant_unref (variant);
+ }
+
+ return preload_engine_mode;
+}
+
+static void
+_set_preload_engines (BusIBusImpl *ibus,
+ GVariant *value)
+{
+ GList *engine_list = NULL;
+
+ g_assert (BUS_IS_IBUS_IMPL (ibus));
+
+ g_list_foreach (ibus->engine_list, (GFunc) g_object_unref, NULL);
+ g_list_free (ibus->engine_list);
+
+ if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
+ GVariantIter iter;
+ g_variant_iter_init (&iter, value);
+ const gchar *engine_name = NULL;
+ while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
+ IBusEngineDesc *engine = bus_registry_find_engine_by_name (ibus->registry, engine_name);
+ if (engine == NULL || g_list_find (engine_list, engine) != NULL)
+ continue;
+ engine_list = g_list_append (engine_list, engine);
+ }
+
+ if (engine_list != NULL &&
+ ibus_config_get_value (ibus->config, "general",
+ "preload_engines") == NULL) {
+ ibus_config_set_value (ibus->config, "general",
+ "preload_engines", value);
+ }
+ }
+
+ g_list_foreach (engine_list, (GFunc) g_object_ref, NULL);
+ ibus->engine_list = engine_list;
+
+ if (ibus->engine_list) {
+ BusComponent *component = bus_component_from_engine_desc ((IBusEngineDesc *) ibus->engine_list->data);
+ if (component && !bus_component_is_running (component)) {
+ bus_component_start (component, g_verbose);
+ }
+ }
+
+ bus_ibus_impl_update_engines_hotkey_profile (ibus);
+}
+
+static void
+_set_language_relative_preload_engines (BusIBusImpl *ibus)
+{
+ gchar *lang = NULL;
+ gchar *p = NULL;
+ GList *engines = NULL;
+ GList *list;
+ GVariantBuilder builder;
+
+ g_assert (BUS_IS_IBUS_IMPL (ibus));
+
+ lang = g_strdup (setlocale (LC_ALL, NULL));
+ p = index (lang, '.');
+ if (p) {
+ *p = '\0';
+ }
+
+ engines = bus_registry_get_engines_by_language (ibus->registry, lang);
+ if (engines == NULL) {
+ p = index (lang, '_');
+ if (p) {
+ *p = '\0';
+ engines = bus_registry_get_engines_by_language (ibus->registry, lang);
+ }
+ }
+ g_free (lang);
+
+ /* sort engines by rank */
+ engines = g_list_sort (engines, (GCompareFunc) _engine_desc_cmp);
+
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
+ for (list = engines; list != NULL; list = list->next) {
+ IBusEngineDesc *desc = (IBusEngineDesc *)list->data;
+ /* ignore engines with rank <== 0 */
+ if (ibus_engine_desc_get_rank (desc) > 0)
+ g_variant_builder_add (&builder, "s", ibus_engine_desc_get_name (desc));
+ }
+ _set_preload_engines (ibus, g_variant_builder_end (&builder));
+ g_list_free (engines);
+}
+
static void
bus_ibus_impl_set_hotkey (BusIBusImpl *ibus,
GQuark hotkey,
@@ -347,34 +466,32 @@ static void
bus_ibus_impl_set_preload_engines (BusIBusImpl *ibus,
GVariant *value)
{
- GList *engine_list = NULL;
-
- g_list_foreach (ibus->engine_list, (GFunc) g_object_unref, NULL);
- g_list_free (ibus->engine_list);
+ gint preload_engine_mode = _get_config_preload_engine_mode (ibus);
- if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
- GVariantIter iter;
- g_variant_iter_init (&iter, value);
- const gchar *engine_name = NULL;
- while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
- IBusEngineDesc *engine = bus_registry_find_engine_by_name (ibus->registry, engine_name);
- if (engine == NULL || g_list_find (engine_list, engine) != NULL)
- continue;
- engine_list = g_list_append (engine_list, engine);
+ if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
+ if (value == NULL) {
+ _set_language_relative_preload_engines (ibus);
+ } else {
+ _set_preload_engines (ibus, value);
}
}
+}
- g_list_foreach (engine_list, (GFunc) g_object_ref, NULL);
- ibus->engine_list = engine_list;
+static void
+bus_ibus_impl_set_preload_engine_mode (BusIBusImpl *ibus,
+ GVariant *value)
+{
+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE;
+
+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
- if (ibus->engine_list) {
- BusComponent *component = bus_component_from_engine_desc ((IBusEngineDesc *) ibus->engine_list->data);
- if (component && !bus_component_is_running (component)) {
- bus_component_start (component, g_verbose);
- }
+ if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_INT32) {
+ preload_engine_mode = g_variant_get_int16 (value);
+ }
+
+ preload_engine_mode = g_variant_get_int32 (value);
}
- bus_ibus_impl_update_engines_hotkey_profile (ibus);
+ if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
+ return;
+ }
+
+ bus_ibus_impl_set_default_preload_engines (ibus, TRUE);
+}
+
+static void
bus_ibus_impl_set_use_sys_layout (BusIBusImpl *ibus,
GVariant *value)
{
@@ -405,22 +428,48 @@ _engine_desc_cmp (IBusEngineDesc *desc1,
((gint) ibus_engine_desc_get_rank (desc2));
+ _set_language_relative_preload_engines (ibus);
}
+/* bus_ibus_impl_set_use_sys_layout handles the gconf value
/**
@@ -452,69 +569,47 @@ bus_ibus_impl_set_use_global_engine (BusIBusImpl *ibus,
}
}
-static gint
-_engine_desc_cmp (IBusEngineDesc *desc1,
- IBusEngineDesc *desc2)
-{
- return - ((gint) ibus_engine_desc_get_rank (desc1)) +
- ((gint) ibus_engine_desc_get_rank (desc2));
-}
-
/**
* bus_ibus_impl_set_default_preload_engines:
*
- * If the "preload_engines" config variable is not set yet, set the default value which is determined based on a current locale (LC_ALL).
+ * bus_ibus_impl_set_default_preload_engines handles the gconf value
+ * /desktop/ibus/general/preload_engines and preload_engine_mode.
+ * The idea is, if users don't customize the preload_engines with ibus-setup,
+ * users would prefer to load the system default engines again by login.
+ * The gconf value 'preload_engine_mode' is
+ * IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE by default.
+ * IBUS_PRELOAD_ENGINE_MODE_USER by default.
+ * If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE,
+ * ibus-daemon loads the system preload engines by langs.
+ * If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_USER,
@ -94,45 +249,68 @@ index 80f0bf0..c0c1a8a 100644
+ * 'preload_engines'.
+ * Loading system default may spend the startup time. If you mind it,
+ * your dist may like to put TRUE in 'use_local_preload_engines' value.
+ */
*/
static void
-bus_ibus_impl_set_default_preload_engines (BusIBusImpl *ibus)
+bus_ibus_impl_set_default_preload_engines (BusIBusImpl *ibus, gboolean force)
bus_ibus_impl_set_default_preload_engines (BusIBusImpl *ibus)
{
g_assert (BUS_IS_IBUS_IMPL (ibus));
+ GVariant *variant = NULL;
- g_assert (BUS_IS_IBUS_IMPL (ibus));
-
static gboolean done = FALSE;
+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE;
+ gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
+
+ g_assert (BUS_IS_IBUS_IMPL (ibus));
- if (done || ibus->config == NULL) {
- return;
- }
+ if (!force) {
+ if (done || ibus->config == NULL) {
+ return;
+ }
if (done || ibus->config == NULL) {
return;
}
- GVariant *variant = ibus_config_get_value (ibus->config, "general", "preload_engines");
- if (variant != NULL) {
- done = TRUE;
- g_variant_unref (variant);
- return;
+ variant = ibus_config_get_value (ibus->config, "general",
+ "preload_engine_mode");
+ if (variant != NULL) {
+ preload_engine_mode = g_variant_get_int32 (variant);
+ g_variant_unref (variant);
+ }
+ preload_engine_mode = _get_config_preload_engine_mode (ibus);
+
+ if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
+ done = TRUE;
+ return;
+ }
+ if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
done = TRUE;
- g_variant_unref (variant);
return;
}
done = TRUE;
@@ -466,6 +515,7 @@ const static struct {
- gchar *lang = g_strdup (setlocale (LC_ALL, NULL));
- gchar *p = index (lang, '.');
- if (p) {
- *p = '\0';
- }
-
- GList *engines = bus_registry_get_engines_by_language (ibus->registry, lang);
- if (engines == NULL) {
- p = index (lang, '_');
- if (p) {
- *p = '\0';
- engines = bus_registry_get_engines_by_language (ibus->registry, lang);
- }
- }
- g_free (lang);
-
- /* sort engines by rank */
- engines = g_list_sort (engines, (GCompareFunc) _engine_desc_cmp);
-
- GVariantBuilder builder;
- g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
- GList *list;
- for (list = engines; list != NULL; list = list->next) {
- IBusEngineDesc *desc = (IBusEngineDesc *) list->data;
- /* ignore engines with rank <= 0 */
- if (ibus_engine_desc_get_rank (desc) > 0)
- g_variant_builder_add (&builder, "s", ibus_engine_desc_get_name (desc));
- }
- ibus_config_set_value (ibus->config,
- "general", "preload_engines", g_variant_builder_end (&builder));
- g_list_free (engines);
+ _set_language_relative_preload_engines (ibus);
}
/* The list of config entries that are related to ibus-daemon. */
@@ -527,6 +622,7 @@ const static struct {
{ "general/hotkey", "next_engine_in_menu", bus_ibus_impl_set_next_engine_in_menu },
{ "general/hotkey", "previous_engine", bus_ibus_impl_set_previous_engine },
{ "general", "preload_engines", bus_ibus_impl_set_preload_engines },
@ -140,37 +318,8 @@ index 80f0bf0..c0c1a8a 100644
{ "general", "use_system_keyboard_layout", bus_ibus_impl_set_use_sys_layout },
{ "general", "use_global_engine", bus_ibus_impl_set_use_global_engine },
{ "general", "embed_preedit_text", bus_ibus_impl_set_embed_preedit_text },
@@ -480,10 +530,18 @@ bus_ibus_impl_reload_config (BusIBusImpl *ibus)
gint i;
for (i = 0; i < G_N_ELEMENTS (bus_ibus_impl_config_items); i++) {
GVariant *variant = NULL;
- if (ibus->config != NULL)
+
+ if (g_strcmp0 (bus_ibus_impl_config_items[i].section, "general") == 0 &&
+ g_strcmp0 (bus_ibus_impl_config_items[i].key, "preload_engine_mode") == 0) {
+ continue;
+ }
+
+ if (ibus->config != NULL) {
variant = ibus_config_get_value (ibus->config,
bus_ibus_impl_config_items[i].section,
bus_ibus_impl_config_items[i].key);
+ }
+
bus_ibus_impl_config_items[i].func (ibus, variant);
if (variant) g_variant_unref (variant);
}
@@ -603,7 +661,7 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus,
G_CALLBACK (_config_destroy_cb),
ibus);
- bus_ibus_impl_set_default_preload_engines (ibus);
+ bus_ibus_impl_set_default_preload_engines (ibus, FALSE);
bus_ibus_impl_reload_config (ibus);
}
}
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
index aa66aa5..5956171 100644
index aa66aa5..9b82857 100644
--- a/data/ibus.schemas.in
+++ b/data/ibus.schemas.in
@@ -13,6 +13,19 @@
@ -185,8 +334,8 @@ index aa66aa5..5956171 100644
+ <locale name="C">
+ <short>Preload engine mode</short>
+ <long>Preload engines are loaded with this mode.
+ 0 = language related engines.
+ 1 = user customized engines.</long>
+ 0 = user customized engines.
+ 1 = language related engines.</long>
+ </locale>
+ </schema>
+ <schema>
@ -194,39 +343,40 @@ index aa66aa5..5956171 100644
<applyto>/desktop/ibus/general/hotkey/trigger</applyto>
<owner>ibus</owner>
diff --git a/ibus/common.py b/ibus/common.py
index cbc8d56..3598546 100644
index cbc8d56..db881fc 100644
--- a/ibus/common.py
+++ b/ibus/common.py
@@ -133,6 +133,10 @@ ORIENTATION_HORIZONTAL = 0
@@ -33,6 +33,8 @@ __all__ = (
"ORIENTATION_HORIZONTAL",
"ORIENTATION_VERTICAL",
"ORIENTATION_SYSTEM",
+ "PRELOAD_ENGINE_MODE_USER",
+ "PRELOAD_ENGINE_MODE_LANG_RELATIVE",
"default_reply_handler",
"default_error_handler",
"DEFAULT_ASYNC_HANDLERS",
@@ -133,6 +135,10 @@ ORIENTATION_HORIZONTAL = 0
ORIENTATION_VERTICAL = 1
ORIENTATION_SYSTEM = 2
+# define preload engine mode
+PRELOAD_ENGINE_MODE_LANG_RELATIVE = 0
+PRELOAD_ENGINE_MODE_USER = 1
+PRELOAD_ENGINE_MODE_USER = 0
+PRELOAD_ENGINE_MODE_LANG_RELATIVE = 1
+
def default_reply_handler( *args):
pass
diff --git a/setup/main.py b/setup/main.py
index 98fa1d1..77fdfb3 100644
index 96e9456..215670d 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -91,6 +91,7 @@ class Setup(object):
# keyboard shortcut
# trigger
self.__config = self.__bus.get_config()
+ self.__config.connect("value-changed", self.__config_value_changed_cb)
shortcuts = self.__config.get_value(
"general/hotkey", "trigger",
ibus.CONFIG_GENERAL_SHORTCUT_TRIGGER_DEFAULT)
@@ -190,15 +191,25 @@ class Setup(object):
@@ -190,15 +190,22 @@ class Setup(object):
self.__checkbutton_use_global_engine.connect("toggled", self.__checkbutton_use_global_engine_toggled_cb)
# init engine page
+ preload_engine_mode = self.__config.get_value("general",
+ "preload_engine_mode",
+ ibus.common.PRELOAD_ENGINE_MODE_LANG_RELATIVE)
+ ibus.common.PRELOAD_ENGINE_MODE_USER)
+ button = self.__builder.get_object("checkbutton_preload_engine_mode")
+ if preload_engine_mode == ibus.common.PRELOAD_ENGINE_MODE_USER:
+ button.set_active(True)
@ -235,8 +385,6 @@ index 98fa1d1..77fdfb3 100644
+ button.set_active(False)
+ self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(False)
+ button.connect("toggled", self.__checkbutton_preload_engine_mode_toggled_cb)
+ self.__wait_update_preload_engines = False
+
self.__engines = self.__bus.list_engines()
self.__combobox = self.__builder.get_object("combobox_engines")
self.__combobox.set_engines(self.__engines)
@ -244,13 +392,13 @@ index 98fa1d1..77fdfb3 100644
- tmp_dict = {}
- for e in self.__engines:
- tmp_dict[e.name] = e
engine_names = self.__config.get_value("general", "preload_engines", [])
- engine_names = self.__config.get_value("general", "preload_engines", [])
- engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
+ engines = self.__get_engine_descs_from_names(engine_names)
+ engines = self.__bus.list_active_engines()
self.__treeview = self.__builder.get_object("treeview_engines")
self.__treeview.set_engines(engines)
@@ -240,6 +251,13 @@ class Setup(object):
@@ -240,6 +247,13 @@ class Setup(object):
engine_names = map(lambda e: e.name, engines)
self.__config.set_list("general", "preload_engines", engine_names, "s")
@ -264,7 +412,7 @@ index 98fa1d1..77fdfb3 100644
def __button_engine_add_cb(self, button):
engine = self.__combobox.get_active_engine()
self.__treeview.append_engine(engine)
@@ -251,6 +269,19 @@ class Setup(object):
@@ -251,6 +265,19 @@ class Setup(object):
about.run()
about.destroy()
@ -274,31 +422,16 @@ index 98fa1d1..77fdfb3 100644
+ "preload_engine_mode",
+ ibus.common.PRELOAD_ENGINE_MODE_USER)
+ self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(True)
+ self.__treeview.notify("engines")
+ else:
+ self.__config.set_value("general",
+ "preload_engine_mode",
+ ibus.common.PRELOAD_ENGINE_MODE_LANG_RELATIVE)
+ self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(False)
+ self.__wait_update_preload_engines = True
+
def __init_bus(self):
try:
self.__bus = ibus.Bus()
@@ -441,7 +472,13 @@ class Setup(object):
self.__config.set_value("general", "use_global_engine", value)
def __config_value_changed_cb(self, bus, section, name, value):
- pass
+ if section == "general":
+ if name == "preload_engines":
+ if self.__wait_update_preload_engines:
+ engines = self.__get_engine_descs_from_names(value)
+ self.__treeview.set_engines(engines)
+ # treeview update gconf value again
+ self.__wait_update_preload_engines = False
def __config_reloaded_cb(self, bus):
pass
diff --git a/setup/setup.ui b/setup/setup.ui
index 0e31a78..ef841a0 100644
--- a/setup/setup.ui
@ -346,7 +479,7 @@ index 0e31a78..ef841a0 100644
</child>
</object>
diff --git a/src/ibustypes.h b/src/ibustypes.h
index 035d124..dd3806d 100644
index 035d124..0a9d7b2 100644
--- a/src/ibustypes.h
+++ b/src/ibustypes.h
@@ -144,6 +144,16 @@ typedef enum {
@ -354,12 +487,12 @@ index 035d124..dd3806d 100644
/**
+ * IBusPreloadEngineMode:
+ * @IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE: language related engines.
+ * @IBUS_PRELOAD_ENGINE_MODE_USER: user custimized engines
+ * @IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE: language related engines.
+ */
+typedef enum {
+ IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE = 0,
+ IBUS_PRELOAD_ENGINE_MODE_USER = 1,
+ IBUS_PRELOAD_ENGINE_MODE_USER = 0,
+ IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE = 1,
+} IBusPreloadEngineMode;
+
+/**

View File

@ -1,6 +1,6 @@
From cfe234ad9bd771efaa1ba5a52e31a68b3d25e477 Mon Sep 17 00:00:00 2001
From 4bac7696cf277414eba7b166fcd8dbfabe8f9e6f Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Thu, 4 Nov 2010 17:40:30 +0900
Date: Mon, 22 Nov 2010 11:39:27 +0900
Subject: [PATCH] Add XKB layouts
---
@ -11,7 +11,7 @@ Subject: [PATCH] Add XKB layouts
ibus/__init__.py | 2 +
ibus/bus.py | 3 +
ibus/interface/iibus.py | 3 +
ibus/xkblayout.py.in | 185 ++++++++++++
ibus/xkblayout.py.in | 190 ++++++++++++
ibus/xkbxml.py.in | 412 ++++++++++++++++++++++++++
setup/Makefile.am | 1 +
setup/enginecombobox.py | 7 +-
@ -24,14 +24,14 @@ Subject: [PATCH] Add XKB layouts
xkb/Makefile.am | 104 +++++++
xkb/ibus-engine-xkb-main.c | 397 +++++++++++++++++++++++++
xkb/ibus-engine-xkb-main.h | 46 +++
xkb/ibus-xkb-main.c | 101 +++++++
xkb/ibus-xkb-main.c | 105 +++++++
xkb/xkblayout.xml.in | 16 +
xkb/xkblayoutconfig.xml.in | 6 +
xkb/xkblib.c | 297 +++++++++++++++++++
xkb/xkblib.h | 40 +++
xkb/xkbxml.c | 696 ++++++++++++++++++++++++++++++++++++++++++++
xkb/xkbxml.h | 189 ++++++++++++
27 files changed, 3749 insertions(+), 6 deletions(-)
27 files changed, 3758 insertions(+), 6 deletions(-)
create mode 100644 ibus/xkblayout.py.in
create mode 100644 ibus/xkbxml.py.in
create mode 100644 setup/xkbsetup.py
@ -72,7 +72,7 @@ index 02b7163..6cbe82a 100644
$(NULL)
diff --git a/configure.ac b/configure.ac
index 2c330fa..181490c 100644
index 1a1e663..ea0d32b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -185,6 +185,57 @@ else
@ -150,10 +150,10 @@ index 2c330fa..181490c 100644
Build gconf modules $enable_gconf
Build memconf modules $enable_memconf
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
index f818635..f3f567b 100644
index 5956171..322f831 100644
--- a/data/ibus.schemas.in
+++ b/data/ibus.schemas.in
@@ -184,6 +184,42 @@
@@ -180,6 +180,42 @@
</locale>
</schema>
<schema>
@ -280,7 +280,7 @@ index e63caa3..8b7b6f7 100644
diff --git a/ibus/xkblayout.py.in b/ibus/xkblayout.py.in
new file mode 100644
index 0000000..0503f35
index 0000000..63d4327
--- /dev/null
+++ b/ibus/xkblayout.py.in
@@ -0,0 +1,190 @@
@ -936,7 +936,7 @@ index 2fd8876..7383177 100644
+ self.__title = title
diff --git a/setup/main.py b/setup/main.py
index 8191282..afc4ca1 100644
index 92a2398..1912e20 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -37,6 +37,7 @@ from gtk import gdk
@ -944,10 +944,10 @@ index 8191282..afc4ca1 100644
from enginetreeview import EngineTreeView
from engineabout import EngineAbout
+from xkbsetup import XKBSetup
from i18n import _, N_, init
from i18n import DOMAINNAME, _, N_, init as i18n_init
(
@@ -224,6 +225,8 @@ class Setup(object):
@@ -229,6 +230,8 @@ class Setup(object):
self.__combobox.connect("notify::active-engine", self.__combobox_notify_active_engine_cb)
self.__treeview.connect("notify", self.__treeview_notify_cb)
@ -957,7 +957,7 @@ index 8191282..afc4ca1 100644
engine = self.__combobox.get_active_engine()
button = self.__builder.get_object("button_engine_add")
diff --git a/setup/setup.ui b/setup/setup.ui
index 82a2101..19f36c8 100644
index ef841a0..71f723d 100644
--- a/setup/setup.ui
+++ b/setup/setup.ui
@@ -129,7 +129,6 @@
@ -984,7 +984,7 @@ index 82a2101..19f36c8 100644
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
@@ -780,6 +777,7 @@ You may use up/down buttons to change it.&lt;/i&gt;&lt;/small&gt;</property>
@@ -744,6 +741,7 @@ You may use up/down buttons to change it.&lt;/i&gt;&lt;/small&gt;</property>
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
@ -992,7 +992,7 @@ index 82a2101..19f36c8 100644
<child>
<object class="GtkCheckButton" id="checkbutton_use_sys_layout">
<property name="label" translatable="yes">Use system keyboard layout</property>
@@ -795,6 +793,57 @@ You may use up/down buttons to change it.&lt;/i&gt;&lt;/small&gt;</property>
@@ -812,6 +810,57 @@ You may use up/down buttons to change it.&lt;/i&gt;&lt;/small&gt;</property>
<property name="position">0</property>
</packing>
</child>
@ -1050,7 +1050,7 @@ index 82a2101..19f36c8 100644
</object>
</child>
</object>
@@ -993,4 +1042,558 @@ Homepage: http://code.google.com/p/ibus
@@ -957,4 +1006,558 @@ Homepage: http://code.google.com/p/ibus
</object>
</child>
</object>
@ -2804,7 +2804,7 @@ index 0000000..8007631
+#endif
diff --git a/xkb/ibus-xkb-main.c b/xkb/ibus-xkb-main.c
new file mode 100644
index 0000000..0919913
index 0000000..9db7d0a
--- /dev/null
+++ b/xkb/ibus-xkb-main.c
@@ -0,0 +1,105 @@

View File

@ -1,29 +0,0 @@
From cd7385f4cc1e729891bd878db12dfafad397b098 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Thu, 11 Nov 2010 18:09:52 +0900
Subject: [PATCH] Always read Window as 32 bits integer to fix problem in ppc64.
---
client/x11/main.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/client/x11/main.c b/client/x11/main.c
index c91a6d7..be9cb0e 100644
--- a/client/x11/main.c
+++ b/client/x11/main.c
@@ -277,10 +277,10 @@ _xim_store_ic_values (X11IC *x11ic, IMChangeICStruct *call_data)
x11ic->input_style = *(gint32 *) ic_attr->value;
}
else if (g_strcmp0 (XNClientWindow, ic_attr->name) == 0) {
- x11ic->client_window = *(Window *) call_data->ic_attr[i].value;
+ x11ic->client_window = (Window)(*(CARD32 *) call_data->ic_attr[i].value);
}
else if (g_strcmp0 (XNFocusWindow, ic_attr->name) == 0) {
- x11ic->focus_window = *(Window *) call_data->ic_attr[i].value;
+ x11ic->focus_window = (Window)(*(CARD32 *) call_data->ic_attr[i].value);
}
else {
LOG (1, "Unknown ic attribute: %s", ic_attr->name);
--
1.7.2.1

View File

@ -1,415 +1 @@
--- ibus-1.3.99.20101028/client/gtk3/Makefile.am.orig 2010-10-29 17:23:56.706717818 +0900
+++ ibus-1.3.99.20101028/client/gtk3/Makefile.am 2010-10-29 17:24:18.236715894 +0900
@@ -20,7 +20,7 @@
# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA 02111-1307 USA
-libibus = $(top_builddir)/src/libibus-2.0.la
+libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la
INCLUDES = \
-I$(top_srcdir)/src \
--- ibus-1.3.99.20101028/src/ibusenginedesc.c.orig 2010-10-29 19:27:09.522715859 +0900
+++ ibus-1.3.99.20101028/src/ibusenginedesc.c 2010-10-29 19:28:11.539716134 +0900
@@ -379,8 +379,8 @@ ibus_engine_desc_serialize (IBusEngineDe
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->author));
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->icon));
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout));
- g_variant_builder_add (builder, "s", NOTNULL (desc->priv->hotkeys));
g_variant_builder_add (builder, "u", desc->priv->rank);
+ g_variant_builder_add (builder, "s", NOTNULL (desc->priv->hotkeys));
#undef NOTNULL
return TRUE;
}
@@ -402,8 +402,8 @@ ibus_engine_desc_deserialize (IBusEngine
g_variant_get_child (variant, retval++, "s", &desc->priv->author);
g_variant_get_child (variant, retval++, "s", &desc->priv->icon);
g_variant_get_child (variant, retval++, "s", &desc->priv->layout);
- g_variant_get_child (variant, retval++, "s", &desc->priv->hotkeys);
g_variant_get_child (variant, retval++, "u", &desc->priv->rank);
+ g_variant_get_child (variant, retval++, "s", &desc->priv->hotkeys);
return retval;
}
--- ibus-1.3.99.20101028/ibus/common.py.orig 2010-11-01 14:06:59.222958549 +0900
+++ ibus-1.3.99.20101028/ibus/common.py 2010-11-01 14:07:09.253716200 +0900
@@ -120,7 +120,7 @@ IBUS_SERVICE_IBUS = "org.freedesktop.I
IBUS_IFACE_PANEL = "org.freedesktop.IBus.Panel"
IBUS_IFACE_CONFIG = "org.freedesktop.IBus.Config"
IBUS_IFACE_ENGINE = "org.freedesktop.IBus.Engine"
-IBUS_IFACE_ENGINE_FACTORY = "org.freedesktop.IBus.EngineFactory"
+IBUS_IFACE_ENGINE_FACTORY = "org.freedesktop.IBus.Factory"
IBUS_IFACE_INPUT_CONTEXT = "org.freedesktop.IBus.InputContext"
IBUS_IFACE_NOTIFICATIONS = "org.freedesktop.IBus.Notifications"
--- ibus-1.3.99.20101028/ibus/config.py.orig 2010-11-01 17:47:11.241780699 +0900
+++ ibus-1.3.99.20101028/ibus/config.py 2010-11-01 17:47:24.946715350 +0900
@@ -46,7 +46,7 @@ class ConfigBase(object.Object):
def set_value(self, section, name, value):
pass
- def unset(self, section, name):
+ def unset_value(self, section, name):
pass
def value_changed(self, section, name, value):
@@ -65,8 +65,8 @@ class ConfigProxy(interface.IConfig):
def SetValue(self, section, name, value):
return self.__config.set_value(section, name, value)
- def Unset(self, section, name):
- return self.__config.unset(section, name)
+ def UnsetValue(self, section, name):
+ return self.__config.unset_value(section, name)
def Destroy(self):
self.__config.destroy()
@@ -148,8 +148,8 @@ class Config(object.Object):
def set_list(self, section, name, value, signature):
return self.set_value(section, name, dbus.Array(value, signature=signature))
- def unset(self, section, name):
+ def unset_value(self, section, name):
try:
- return self.__config.Unset(section, name)
+ return self.__config.UnsetValue(section, name)
except:
return
--- ibus-1.3.99.20101028/ibus/interface/iconfig.py.orig 2010-11-01 18:08:49.704715614 +0900
+++ ibus-1.3.99.20101028/ibus/interface/iconfig.py 2010-11-01 18:09:10.036715669 +0900
@@ -49,6 +49,9 @@ class IConfig(dbus.service.Object):
@method(in_signature="ssv")
def SetValue(self, section, name, value): pass
+ @method(in_signature="ss")
+ def UnsetValue(self, section, name): pass
+
@method()
def Destroy(self): pass
diff --git a/src/ibuscomponent.c b/src/ibuscomponent.c
index df05727..d016698 100644
--- a/src/ibuscomponent.c
+++ b/src/ibuscomponent.c
@@ -713,20 +713,20 @@ ibus_component_new (const gchar *name,
const gchar *exec,
const gchar *textdomain)
{
- return ibus_component_new2 ("name", name,
- "description", description,
- "version", version,
- "license", license,
- "author", author,
- "homepage", homepage,
- "exec", exec,
- "textdomain", textdomain,
- NULL);
+ return ibus_component_new_varargs ("name", name,
+ "description", description,
+ "version", version,
+ "license", license,
+ "author", author,
+ "homepage", homepage,
+ "exec", exec,
+ "textdomain", textdomain,
+ NULL);
}
IBusComponent *
-ibus_component_new2 (const gchar *first_property_name, ...)
+ibus_component_new_varargs (const gchar *first_property_name, ...)
{
va_list var_args;
IBusComponent *component;
diff --git a/src/ibuscomponent.h b/src/ibuscomponent.h
index 2383de9..c8da80e 100644
--- a/src/ibuscomponent.h
+++ b/src/ibuscomponent.h
@@ -141,18 +141,18 @@ IBusComponent *ibus_component_new (const gchar *name,
const gchar *textdomain);
/**
- * ibus_component_new2:
+ * ibus_component_new_varargs:
* @first_property_name: Name of the first property.
* @Varargs: the NULL-terminated arguments of the properties and values.
*
* New an IBusComponent.
- * ibus_component_new2() supports the va_list format.
+ * ibus_component_new_varargs() supports the va_list format.
* name property is required. e.g.
- * IBusComponent *component = ibus_component_new2 ("name", "ibus-foo",
- * "exec", "/usr/libexec/ibus-engine-foo --ibus",
- * NULL)
+ * IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo",
+ * "exec", "/usr/libexec/ibus-engine-foo --ibus",
+ * NULL)
*/
-IBusComponent *ibus_component_new2 (const gchar *first_property_name,
+IBusComponent *ibus_component_new_varargs (const gchar *first_property_name,
...);
/**
diff --git a/src/ibusenginedesc.c b/src/ibusenginedesc.c
index 8bcef34..1e6954c 100644
--- a/src/ibusenginedesc.c
+++ b/src/ibusenginedesc.c
@@ -538,19 +538,19 @@ ibus_engine_desc_new (const gchar *name,
const gchar *icon,
const gchar *layout)
{
- return ibus_engine_desc_new2 ("name", name,
- "longname", longname,
- "description", description,
- "language", language,
- "license", license,
- "author", author,
- "icon", icon,
- "layout", layout,
- NULL);
+ return ibus_engine_desc_new_varargs ("name", name,
+ "longname", longname,
+ "description", description,
+ "language", language,
+ "license", license,
+ "author", author,
+ "icon", icon,
+ "layout", layout,
+ NULL);
}
IBusEngineDesc *
-ibus_engine_desc_new2 (const gchar *first_property_name, ...)
+ibus_engine_desc_new_varargs (const gchar *first_property_name, ...)
{
va_list var_args;
IBusEngineDesc *desc;
diff --git a/src/ibusenginedesc.h b/src/ibusenginedesc.h
index d88b35a..c9dd1c2 100644
--- a/src/ibusenginedesc.h
+++ b/src/ibusenginedesc.h
@@ -132,16 +132,16 @@ IBusEngineDesc *ibus_engine_desc_new (const gchar *name,
const gchar *layout);
/**
- * ibus_engine_desc_new2:
+ * ibus_engine_desc_new_varargs:
* @first_property_name: Name of the first property.
* @Varargs: the NULL-terminated arguments of the properties and values.
*
* New a IBusEngineDesc.
- * ibus_engine_desc_new2() supports the va_list format.
+ * ibus_engine_desc_new_varargs() supports the va_list format.
* name property is required. e.g.
- * ibus_engine_desc_new2("name", "ibus-foo", "language", "us", NULL)
+ * ibus_engine_desc_new_varargs("name", "ibus-foo", "language", "us", NULL)
*/
-IBusEngineDesc *ibus_engine_desc_new2 (const gchar *first_property_name,
+IBusEngineDesc *ibus_engine_desc_new_varargs (const gchar *first_property_name,
...);
diff --git a/bus/factoryproxy.c b/bus/factoryproxy.c
index f4e739d..130b881 100644
--- a/bus/factoryproxy.c
+++ b/bus/factoryproxy.c
@@ -176,7 +176,8 @@ bus_factory_proxy_create_engine (BusFactoryProxy *factory,
g_variant_get (retval, "(&o)", &object_path);
GDBusConnection *connection = g_dbus_proxy_get_connection ((GDBusProxy *) factory);
BusEngineProxy *engine = bus_engine_proxy_new (object_path,
- desc, bus_connection_lookup (connection));
+ desc,
+ bus_connection_lookup (connection));
g_variant_unref (retval);
return engine;
}
diff --git a/src/ibusproperty.c b/src/ibusproperty.c
index 52a8210..bb9cc21 100644
--- a/src/ibusproperty.c
+++ b/src/ibusproperty.c
@@ -243,7 +243,7 @@ ibus_property_set_icon (IBusProperty *prop,
g_assert (IBUS_IS_PROPERTY (prop));
g_free (prop->icon);
- prop->icon = g_strdup (icon);
+ prop->icon = g_strdup (icon != NULL ? icon : "");
}
void
diff --git a/ui/gtk/main.py b/ui/gtk/main.py
index 18bb12e..f4c901d 100644
--- a/ui/gtk/main.py
+++ b/ui/gtk/main.py
@@ -56,7 +56,6 @@ class UIApplication:
"Please restart ibus input platform."), \
"ibus")
self.__notify.set_timeout(10 * 1000)
- self.__notify.attach_to_status_icon (self.__panel.get_status_icon())
self.__notify.add_action("restart", _("Restart Now"), self.__restart_cb, None)
self.__notify.add_action("ignore", _("Later"), lambda *args: None, None)
diff --git a/client/x11/main.c b/client/x11/main.c
index c91a6d7..f3c835b 100644
--- a/client/x11/main.c
+++ b/client/x11/main.c
@@ -245,7 +245,9 @@ _xim_preedit_callback_draw (XIMS xims, X11IC *x11ic, const gchar *preedit_string
text.feedback = feedback;
if (len > 0) {
- Xutf8TextListToTextProperty (GDK_DISPLAY (), (char **)&preedit_string, 1, XCompoundTextStyle, &tp);
+ Xutf8TextListToTextProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
+ (char **)&preedit_string,
+ 1, XCompoundTextStyle, &tp);
text.encoding_is_wchar = 0;
text.length = strlen ((char*)tp.value);
text.string.multi_byte = (char*)tp.value;
@@ -583,9 +585,9 @@ _xim_set_cursor_location (X11IC *x11ic)
XWindowAttributes xwa;
Window child;
- XGetWindowAttributes (GDK_DISPLAY(), w, &xwa);
+ XGetWindowAttributes (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), w, &xwa);
if (preedit_area.x <= 0 && preedit_area.y <= 0) {
- XTranslateCoordinates (GDK_DISPLAY(), w,
+ XTranslateCoordinates (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), w,
xwa.root,
0,
xwa.height,
@@ -594,7 +596,7 @@ _xim_set_cursor_location (X11IC *x11ic)
&child);
}
else {
- XTranslateCoordinates (GDK_DISPLAY(), w,
+ XTranslateCoordinates (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), w,
xwa.root,
preedit_area.x,
preedit_area.y,
@@ -739,11 +741,11 @@ _xim_forward_key_event (X11IC *x11ic,
xkp.xkey.serial = 0L;
xkp.xkey.send_event = False;
xkp.xkey.same_screen = True;
- xkp.xkey.display = GDK_DISPLAY();
+ xkp.xkey.display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
xkp.xkey.window =
x11ic->focus_window ? x11ic->focus_window : x11ic->client_window;
xkp.xkey.subwindow = None;
- xkp.xkey.root = DefaultRootWindow (GDK_DISPLAY());
+ xkp.xkey.root = DefaultRootWindow (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
xkp.xkey.time = 0;
xkp.xkey.state = state;
@@ -781,7 +783,7 @@ _context_commit_text_cb (IBusInputContext *context,
XTextProperty tp;
IMCommitStruct cms = {0};
- Xutf8TextListToTextProperty (GDK_DISPLAY (),
+ Xutf8TextListToTextProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
(gchar **)&(text->text), 1, XCompoundTextStyle, &tp);
cms.major_code = XIM_COMMIT;
@@ -961,7 +963,7 @@ _xim_init_IMdkit ()
sizeof (ims_encodings)/sizeof (XIMEncoding) - 1;
encodings.supported_encodings = ims_encodings;
- _xims = IMOpenIM(GDK_DISPLAY(),
+ _xims = IMOpenIM(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
IMModifiers, "Xi18n",
IMServerWindow, GDK_WINDOW_XWINDOW(win),
IMServerName, _server_name != NULL ? _server_name : "ibus",
diff --git a/client/gtk3/ibusimcontext.c b/client/gtk3/ibusimcontext.c
index 0bb71b5..c06faaa 100644
--- a/client/gtk3/ibusimcontext.c
+++ b/client/gtk3/ibusimcontext.c
@@ -669,10 +669,15 @@ _set_cursor_location_internal (GtkIMContext *context)
area = ibusimcontext->cursor_area;
if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) {
+#if GTK_CHECK_VERSION (2, 91, 0)
+ area.x = 0;
+ area.y += gdk_window_get_height (ibusimcontext->client_window);
+#else
gint w, h;
gdk_drawable_get_size (ibusimcontext->client_window, &w, &h);
area.y += h;
area.x = 0;
+#endif
}
gdk_window_get_origin (ibusimcontext->client_window, &x, &y);
diff --git a/configure.ac b/configure.ac
index 2c330fa..a9cd908 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,10 +21,6 @@
# Boston, MA 02111-1307 USA
AC_PREFEQ([2.62])
-AC_INIT([ibus], [ibus_version],
- [http://code.google.com/p/ibus/issues/entry],
- [ibus])
-
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
@@ -46,6 +42,10 @@ m4_define([ibus_api_version], [1.0])
m4_define([glib_required_version], [2.26.0])
+AC_INIT([ibus], [ibus_version],
+ [http://code.google.com/p/ibus/issues/entry],
+ [ibus])
+
# Init automake
AM_INIT_AUTOMAKE([1.10])
AM_MAINTAINER_MODE([enable])
diff --git a/setup/main.py b/setup/main.py
index 978b467..98fa1d1 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -69,7 +69,7 @@ class Setup(object):
super(Setup, self).__init__()
gtk_builder_file = path.join(path.dirname(__file__), "./setup.ui")
self.__builder = gtk.Builder()
- self.__builder.set_translation_domain("ibus")
+ self.__builder.set_translation_domain("ibus10")
self.__builder.add_from_file(gtk_builder_file);
self.__bus = None
self.__init_bus()
--- ibus/setup/engineabout.py.orig 2010-11-16 17:53:20.970390287 +0900
+++ ibus/setup/engineabout.py 2010-11-16 17:53:44.781344317 +0900
@@ -25,7 +25,7 @@ from gtk import gdk
import pango
import ibus
-from i18n import *
+from i18n import _, N_
class EngineAbout(gtk.Dialog):
def __init__(self, enginedesc):
diff --git a/ui/gtk/engineabout.py b/ui/gtk/engineabout.py
index 3ac853a..a34e930 100644
--- a/ui/gtk/engineabout.py
+++ b/ui/gtk/engineabout.py
@@ -25,7 +25,7 @@ from gtk import gdk
import pango
import ibus
-from i18n import *
+from i18n import _, N_
class EngineAbout(gtk.Dialog):
def __init__(self, enginedesc):
diff --git a/bus/inputcontext.c b/bus/inputcontext.c
index ec72dd1..87fa162 100644
--- a/bus/inputcontext.c
+++ b/bus/inputcontext.c
@@ -698,7 +698,7 @@ _ic_process_key_event (BusInputContext *context,
if (G_UNLIKELY (!context->has_focus)) {
/* workaround: set focus if context does not have focus */
BusInputContext *focused_context = bus_ibus_impl_get_focused_input_context (BUS_DEFAULT_IBUS);
- if (context == NULL ||
+ if (focused_context == NULL ||
focused_context->fake == TRUE ||
context->fake == FALSE) {
/* grab focus, if context is a real IC or current focused IC is fake */

View File

@ -1,30 +0,0 @@
--- ibus-1.3.7/client/gtk3/ibusim.c.orig 2010-10-07 15:26:58.572225337 +0900
+++ ibus-1.3.7/client/gtk3/ibusim.c 2010-10-07 15:33:04.881225883 +0900
@@ -20,6 +20,12 @@
*/
#include <glib/gprintf.h>
+#define WORKAROUND_GTK3_BUILD_FAILURE 1
+#ifdef WORKAROUND_GTK3_BUILD_FAILURE
+#include <glib-object.h>
+typedef struct _GObject GApplication;
+typedef struct _GObjectClass GApplicationClass;
+#endif
#include <gtk/gtk.h>
#include <gtk/gtkimmodule.h>
#include <ibus.h>
--- ibus-1.3.7/client/gtk3/ibusimcontext.c.gtk3 2010-10-07 15:33:47.128225657 +0900
+++ ibus-1.3.7/client/gtk3/ibusimcontext.c 2010-10-07 15:35:00.708225606 +0900
@@ -23,6 +23,12 @@
# include <config.h>
#endif
+#define WORKAROUND_GTK3_BUILD_FAILURE 1
+#ifdef WORKAROUND_GTK3_BUILD_FAILURE
+#include <glib-object.h>
+typedef struct _GObject GApplication;
+typedef struct _GObjectClass GApplicationClass;
+#endif
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <gdk/gdkx.h>

View File

@ -11,21 +11,18 @@
%define im_chooser_version 1.2.5
Name: ibus
Version: 1.3.99.20101028
Release: 6%{?dist}
Version: 1.3.99.20101118
Release: 1%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
Group: System Environment/Libraries
URL: http://code.google.com/p/ibus/
Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
Source1: xinput-ibus
Patch0: ibus-HEAD.patch
Patch1: ibus-652157-x11-ppc64.patch
Patch2: ibus-530711-preload-sys.patch
Patch3: ibus-541492-xkb.patch
Patch4: ibus-435880-surrounding-text.patch
# WORKAROUND_GTK3_BUILD_FAILURE @ fedora14
Patch99: ibus-xx-workaround-gtk3.patch
# Patch0: ibus-HEAD.patch
Patch1: ibus-530711-preload-sys.patch
Patch2: ibus-541492-xkb.patch
Patch3: ibus-435880-surrounding-text.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -131,29 +128,12 @@ The ibus-devel-docs package contains developer documentation for ibus
%prep
%setup -q
%patch0 -p1
%patch1 -p1 -b .ppc64
%patch2 -p1 -b .preload-sys
# %patch0 -p1
%patch1 -p1 -b .preload-sys
%if %have_libxkbfile
%patch3 -p1 -b .xkb
%patch2 -p1 -b .xkb
%endif
%patch4 -p1 -b .surrounding
#### start WORKAROUND_GTK3_BUILD_FAILURE
WORKAROUND_GTK3_BUILD_FAILURE=0
pkg-config --print-requires gtk+-3.0 | grep -q gio-2.0
if test $? -eq 0; then
if test -f /usr/include/gtk-3.0/gtk/gtkapplication.h -a \
! -f /usr/include/glib-2.0/gio/gapplication.h ; then
WORKAROUND_GTK3_BUILD_FAILURE=1
fi
fi
if test $WORKAROUND_GTK3_BUILD_FAILURE -eq 1 ; then
printf "#### ERROR: glib2 is old against gtk3\n"
printf "#### Applying a workaround\n"
%patch99 -p1 -b .ugly-hack
fi
#### end WORKAROUND_GTK3_BUILD_FAILURE
%patch3 -p1 -b .surrounding
%build
%if %have_libxkbfile
@ -311,20 +291,10 @@ fi
%{_datadir}/gtk-doc/html/*
%changelog
* Mon Nov 22 2010 Takao Fujiwara <tfujiwar@redhat.com> - 1.3.99.20101028-6
- Added ibus-652157-x11-ppc64.patch
Fixed Bug 652157 - Window position of ibus-x11 in ppc64
* Fri Nov 26 2010 Takao Fujiwara <tfujiwar@redhat.com> - 1.3.99.20101118-1
- Updated to 1.3.99.20101118
- Added ibus-530711-preload-sys.patch
Fixed Bug 530711 - Reload preloaded engines by login
- Updated ibus-HEAD.patch
Fixed ibus.get_version & gettext domain for gtkbuilder
Fixed undefined '_' in EngineAbout
Fixed Bug 654260 - NULL of focused input context
- Applied no-snooper for 'gnome-do,Do.*,firefox.*,.*chrome.*,.*chromium.*'
- Updated ibus-541492-xkb.patch
Fixed Bug 653806 - ibus-xkb SEGV
- Updated ibus-435880-surrounding-text.patch
Fixed Bug 639253 - ibus_engine_delete_surrounding_text with offset.
* Fri Oct 29 2010 Takao Fujiwara <tfujiwar@redhat.com> - 1.3.99.20101028-1
- Updated to 1.3.99.20101028

View File

@ -1 +1 @@
0e66622e7d5a35c0df96676322753f18 ibus-1.3.99.20101028.tar.gz
b8a7fb91ae719e9b0bfdb2a09d5d1691 ibus-1.3.99.20101118.tar.gz