Update to 1.3.2-6; migrate to quilt.

This commit is contained in:
Daiki Ueno 2011-07-07 14:37:21 +09:00
parent 3ffa03d35f
commit 57aab5b85e
8 changed files with 603 additions and 124 deletions

View File

@ -1,7 +1,8 @@
diff --git a/Makefile.am b/Makefile.am Patch to synch with the git master 65cc1bc1.
index eac3b9d..14a674d 100644 Index: ibus-m17n-1.3.2/Makefile.am
--- a/Makefile.am ===================================================================
+++ b/Makefile.am --- ibus-m17n-1.3.2.orig/Makefile.am
+++ ibus-m17n-1.3.2/Makefile.am
@@ -69,7 +69,7 @@ debian/changelog: @@ -69,7 +69,7 @@ debian/changelog:
version=@VERSION@; \ version=@VERSION@; \
serie=$(serie); \ serie=$(serie); \
@ -11,10 +12,10 @@ index eac3b9d..14a674d 100644
fi; \ fi; \
if test -z "$$release"; then \ if test -z "$$release"; then \
release=1; \ release=1; \
diff --git a/configure.ac b/configure.ac Index: ibus-m17n-1.3.2/configure.ac
index 17077f2..4df68b6 100644 ===================================================================
--- a/configure.ac --- ibus-m17n-1.3.2.orig/configure.ac
+++ b/configure.ac +++ ibus-m17n-1.3.2/configure.ac
@@ -89,7 +89,22 @@ fi @@ -89,7 +89,22 @@ fi
AM_CONDITIONAL([HAVE_GTK],[test x$with_gtk != xno]) AM_CONDITIONAL([HAVE_GTK],[test x$with_gtk != xno])
@ -38,10 +39,10 @@ index 17077f2..4df68b6 100644
# define GETTEXT_* variables # define GETTEXT_* variables
GETTEXT_PACKAGE=ibus-m17n GETTEXT_PACKAGE=ibus-m17n
diff --git a/src/engine.c b/src/engine.c Index: ibus-m17n-1.3.2/src/engine.c
index 62359c1..60816b0 100644 ===================================================================
--- a/src/engine.c --- ibus-m17n-1.3.2.orig/src/engine.c
+++ b/src/engine.c +++ ibus-m17n-1.3.2/src/engine.c
@@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
/* vim:set et sts=4: */ /* vim:set et sts=4: */
+#ifdef HAVE_CONFIG_H +#ifdef HAVE_CONFIG_H
@ -85,7 +86,7 @@ index 62359c1..60816b0 100644
static void ibus_m17n_config_value_changed (IBusConfig *config, static void ibus_m17n_config_value_changed (IBusConfig *config,
const gchar *section, const gchar *section,
const gchar *name, const gchar *name,
@@ -119,7 +102,6 @@ static void ibus_m17n_engine_update_lookup_table @@ -119,7 +102,6 @@ static void ibus_m17n_engine_update_look
static IBusEngineClass *parent_class = NULL; static IBusEngineClass *parent_class = NULL;
static IBusConfig *config = NULL; static IBusConfig *config = NULL;
@ -149,7 +150,7 @@ index 62359c1..60816b0 100644
} }
static gboolean static gboolean
@@ -239,14 +172,14 @@ ibus_m17n_engine_get_type_for_name (const gchar *engine_name) @@ -239,14 +172,14 @@ ibus_m17n_engine_get_type_for_name (cons
GTypeInfo type_info = { GTypeInfo type_info = {
sizeof (IBusM17NEngineClass), sizeof (IBusM17NEngineClass),
@ -169,7 +170,7 @@ index 62359c1..60816b0 100644
}; };
if (!ibus_m17n_scan_engine_name (engine_name, &lang, &name)) { if (!ibus_m17n_scan_engine_name (engine_name, &lang, &name)) {
@@ -264,11 +197,10 @@ ibus_m17n_engine_get_type_for_name (const gchar *engine_name) @@ -264,11 +197,10 @@ ibus_m17n_engine_get_type_for_name (cons
g_assert (type == 0 || g_type_is_a (type, IBUS_TYPE_ENGINE)); g_assert (type == 0 || g_type_is_a (type, IBUS_TYPE_ENGINE));
if (type == 0) { if (type == 0) {
@ -185,7 +186,7 @@ index 62359c1..60816b0 100644
} }
g_free (type_name); g_free (type_name);
@@ -408,14 +340,6 @@ ibus_m17n_config_value_changed (IBusConfig *config, @@ -408,14 +340,6 @@ ibus_m17n_config_value_changed (IBusConf
} }
static void static void
@ -200,7 +201,24 @@ index 62359c1..60816b0 100644
ibus_m17n_engine_init (IBusM17NEngine *m17n) ibus_m17n_engine_init (IBusM17NEngine *m17n)
{ {
IBusText* label; IBusText* label;
@@ -986,8 +910,57 @@ ibus_m17n_engine_callback (MInputContext *context, @@ -773,6 +697,16 @@ ibus_m17n_engine_enable (IBusEngine *eng
IBusM17NEngine *m17n = (IBusM17NEngine *) engine;
parent_class->enable (engine);
+
+#ifdef HAVE_IBUS_ENGINE_GET_SURROUNDING_TEXT
+ /* Issue a dummy ibus_engine_get_surrounding_text() call to tell
+ input context that we will use surrounding-text. */
+ IBusText *text;
+ guint cursor_pos;
+
+ ibus_engine_get_surrounding_text (engine, &text, &cursor_pos);
+ g_object_unref (text);
+#endif /* HAVE_IBUS_ENGINE_GET_SURROUNDING_TEXT */
}
static void
@@ -986,8 +920,57 @@ ibus_m17n_engine_callback (MInputContext
} }
else if (command == Minput_reset) { else if (command == Minput_reset) {
} }

View File

@ -1,17 +1,9 @@
From c27a0917c26624f1741efeebe20cd5cfb8647a67 Mon Sep 17 00:00:00 2001 Patch to support iok (Indic Onscreen Keyboard).
From: Daiki Ueno <ueno@unixuser.org> Index: ibus-m17n-1.3.2/src/engine.c
Date: Mon, 7 Mar 2011 14:57:32 +0900 ===================================================================
Subject: [PATCH] Apply iok patch from Fedora. --- ibus-m17n-1.3.2.orig/src/engine.c
+++ ibus-m17n-1.3.2/src/engine.c
--- @@ -23,6 +23,7 @@ struct _IBusM17NEngine {
src/engine.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/src/engine.c b/src/engine.c
index 62359c1..362d347 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -37,6 +37,7 @@ struct _IBusM17NEngine {
IBusProperty *setup_prop; IBusProperty *setup_prop;
#endif /* HAVE_SETUP */ #endif /* HAVE_SETUP */
IBusPropList *prop_list; IBusPropList *prop_list;
@ -19,7 +11,7 @@ index 62359c1..362d347 100644
}; };
struct _IBusM17NEngineClass { struct _IBusM17NEngineClass {
@@ -48,6 +49,7 @@ struct _IBusM17NEngineClass { @@ -34,6 +35,7 @@ struct _IBusM17NEngineClass {
guint preedit_background; guint preedit_background;
gint preedit_underline; gint preedit_underline;
gint lookup_table_orientation; gint lookup_table_orientation;
@ -27,7 +19,7 @@ index 62359c1..362d347 100644
MInputMethod *im; MInputMethod *im;
}; };
@@ -316,6 +318,9 @@ ibus_m17n_engine_class_init (IBusM17NEngineClass *klass) @@ -248,6 +250,9 @@ ibus_m17n_engine_class_init (IBusM17NEng
} }
engine_name = g_strdup_printf ("m17n:%s:%s", lang, name); engine_name = g_strdup_printf ("m17n:%s:%s", lang, name);
klass->config_section = g_strdup_printf ("engine/M17N/%s/%s", lang, name); klass->config_section = g_strdup_printf ("engine/M17N/%s/%s", lang, name);
@ -37,7 +29,7 @@ index 62359c1..362d347 100644
g_free (lang); g_free (lang);
g_free (name); g_free (name);
@@ -420,6 +425,7 @@ ibus_m17n_engine_init (IBusM17NEngine *m17n) @@ -344,6 +349,7 @@ ibus_m17n_engine_init (IBusM17NEngine *m
{ {
IBusText* label; IBusText* label;
IBusText* tooltip; IBusText* tooltip;
@ -45,7 +37,7 @@ index 62359c1..362d347 100644
m17n->prop_list = ibus_prop_list_new (); m17n->prop_list = ibus_prop_list_new ();
g_object_ref_sink (m17n->prop_list); g_object_ref_sink (m17n->prop_list);
@@ -452,6 +458,23 @@ ibus_m17n_engine_init (IBusM17NEngine *m17n) @@ -376,6 +382,23 @@ ibus_m17n_engine_init (IBusM17NEngine *m
ibus_prop_list_append (m17n->prop_list, m17n->setup_prop); ibus_prop_list_append (m17n->prop_list, m17n->setup_prop);
#endif /* HAVE_SETUP */ #endif /* HAVE_SETUP */
@ -69,7 +61,7 @@ index 62359c1..362d347 100644
m17n->table = ibus_lookup_table_new (9, 0, TRUE, TRUE); m17n->table = ibus_lookup_table_new (9, 0, TRUE, TRUE);
g_object_ref_sink (m17n->table); g_object_ref_sink (m17n->table);
m17n->context = NULL; m17n->context = NULL;
@@ -537,6 +560,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine *m17n) @@ -461,6 +484,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine
} }
#endif /* HAVE_SETUP */ #endif /* HAVE_SETUP */
@ -81,7 +73,7 @@ index 62359c1..362d347 100644
if (m17n->table) { if (m17n->table) {
g_object_unref (m17n->table); g_object_unref (m17n->table);
m17n->table = NULL; m17n->table = NULL;
@@ -844,6 +872,24 @@ ibus_m17n_engine_property_activate (IBusEngine *engine, @@ -778,6 +806,24 @@ ibus_m17n_engine_property_activate (IBus
} }
#endif /* HAVE_SETUP */ #endif /* HAVE_SETUP */
@ -106,6 +98,3 @@ index 62359c1..362d347 100644
parent_class->property_activate (engine, prop_name, prop_state); parent_class->property_activate (engine, prop_name, prop_state);
} }
--
1.7.4

View File

@ -1,38 +0,0 @@
From f85e79001e7669e3b1b45b1c6ad14dedc5e0752f Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@unixuser.org>
Date: Tue, 7 Jun 2011 12:54:53 +0900
Subject: [PATCH] Request IBUS_CAP_SURROUNDING_TEXT.
---
src/m17nutil.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/m17nutil.c b/src/m17nutil.c
index 1150cc4..db99686 100644
--- a/src/m17nutil.c
+++ b/src/m17nutil.c
@@ -91,6 +91,13 @@ ibus_m17n_parse_color (const gchar *hex)
return color;
}
+#define DEFAULT_REQUIRES (IBUS_CAP_PREEDIT_TEXT | \
+ IBUS_CAP_AUXILIARY_TEXT | \
+ IBUS_CAP_LOOKUP_TABLE | \
+ IBUS_CAP_FOCUS | \
+ IBUS_CAP_PROPERTY | \
+ IBUS_CAP_SURROUNDING_TEXT)
+
static IBusEngineDesc *
ibus_m17n_engine_new (MSymbol lang,
MSymbol name,
@@ -122,6 +129,7 @@ ibus_m17n_engine_new (MSymbol lang,
"icon", engine_icon ? engine_icon : "",
"layout", "us",
"rank", config->rank,
+ "requires", DEFAULT_REQUIRES,
NULL);
#else
engine = ibus_engine_desc_new (engine_name,
--
1.7.5.2

View File

@ -1,33 +0,0 @@
From 02e72cdd3673c65d4217ea19fab7aa2fdfd449f6 Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@unixuser.org>
Date: Tue, 14 Jun 2011 16:10:23 +0900
Subject: [PATCH] Proclaim we will use surrounding-text, in enable().
---
src/engine.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/engine.c b/src/engine.c
index 60816b0..b68b13e 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -697,6 +697,16 @@ ibus_m17n_engine_enable (IBusEngine *engine)
IBusM17NEngine *m17n = (IBusM17NEngine *) engine;
parent_class->enable (engine);
+
+#ifdef HAVE_IBUS_ENGINE_GET_SURROUNDING_TEXT
+ /* Issue a dummy ibus_engine_get_surrounding_text() call to tell
+ input context that we will use surrounding-text. */
+ IBusText *text;
+ guint cursor_pos;
+
+ ibus_engine_get_surrounding_text (engine, &text, &cursor_pos);
+ g_object_unref (text);
+#endif /* HAVE_IBUS_ENGINE_GET_SURROUNDING_TEXT */
}
static void
--
1.7.5.2

386
ibus-m17n-xkb-options.patch Normal file
View File

@ -0,0 +1,386 @@
Patch to set certain XKB options when an m17n IME is set.
Index: ibus-m17n-1.3.2/configure.ac
===================================================================
--- ibus-m17n-1.3.2.orig/configure.ac
+++ ibus-m17n-1.3.2/configure.ac
@@ -106,6 +106,14 @@ AC_CHECK_FUNCS([ibus_engine_get_surround
CFLAGS="$save_CFLAGS"
LIBS="$save_LIBS"
+# check libxklavier
+have_libxklavier=no
+PKG_CHECK_MODULES([LIBXKLAVIER], [libxklavier gdk-3.0 x11],
+ have_libxklavier=yes)
+if test x$have_libxklavier != xno; then
+ AC_DEFINE([HAVE_LIBXKLAVIER], [1], [Define if libxklavier is found])
+fi
+
# define GETTEXT_* variables
GETTEXT_PACKAGE=ibus-m17n
AC_SUBST(GETTEXT_PACKAGE)
Index: ibus-m17n-1.3.2/src/Makefile.am
===================================================================
--- ibus-m17n-1.3.2.orig/src/Makefile.am
+++ ibus-m17n-1.3.2/src/Makefile.am
@@ -66,10 +66,15 @@ ibus_engine_m17n_SOURCES = \
engine.c \
engine.h \
$(NULL)
+ibus_engine_m17n_CFLAGS = \
+ @LIBXKLAVIER_CFLAGS@ \
+ $(AM_CFLAGS) \
+ $(NULL)
ibus_engine_m17n_LDADD = \
libm17ncommon.a \
@IBUS_LIBS@ \
@M17N_LIBS@ \
+ @LIBXKLAVIER_LIBS@ \
$(NULL)
if HAVE_GTK
Index: ibus-m17n-1.3.2/src/default.xml.in.in
===================================================================
--- ibus-m17n-1.3.2.orig/src/default.xml.in.in
+++ ibus-m17n-1.3.2/src/default.xml.in.in
@@ -12,19 +12,22 @@
<preedit-highlight>FALSE</preedit-highlight>
</engine>
<engine>
- <name>m17n:bn:inscript</name>
+ <name>m17n:bn:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
- <name>m17n:gu:inscript</name>
+ <name>m17n:gu:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
- <name>m17n:hi:inscript</name>
+ <name>m17n:hi:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
<name>m17n:kn:kgp</name>
@@ -37,19 +40,22 @@
<preedit-highlight>FALSE</preedit-highlight>
</engine>
<engine>
- <name>m17n:mai:inscript</name>
+ <name>m17n:mai:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
- <name>m17n:ml:inscript</name>
+ <name>m17n:ml:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
- <name>m17n:mr:inscript</name>
+ <name>m17n:mr:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
<name>m17n:ne:rom</name>
@@ -57,14 +63,16 @@
<preedit-highlight>FALSE</preedit-highlight>
</engine>
<engine>
- <name>m17n:or:inscript</name>
+ <name>m17n:or:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
- <name>m17n:pa:inscript</name>
+ <name>m17n:pa:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
<name>m17n:sa:harvard-kyoto</name>
@@ -72,14 +80,16 @@
<preedit-highlight>FALSE</preedit-highlight>
</engine>
<engine>
- <name>m17n:sd:inscript</name>
+ <name>m17n:sd:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
<name>m17n:si:wijesekera</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
<name>m17n:ta:tamil99</name>
@@ -87,9 +97,10 @@
<preedit-highlight>FALSE</preedit-highlight>
</engine>
<engine>
- <name>m17n:te:inscript</name>
+ <name>m17n:te:inscript*</name>
<rank>2</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<!-- Samanala should have lower rank than other Sinhala
engines since it is the only non-keyboard input method in
@@ -226,6 +237,7 @@
<name>m17n:si:*</name>
<rank>1</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ <xkb-options>lv3:ralt_switch</xkb-options>
</engine>
<engine>
<name>m17n:ta:*</name>
Index: ibus-m17n-1.3.2/src/engine.c
===================================================================
--- ibus-m17n-1.3.2.orig/src/engine.c
+++ ibus-m17n-1.3.2/src/engine.c
@@ -6,6 +6,10 @@
#include <ibus.h>
#include <m17n.h>
#include <string.h>
+#ifdef HAVE_LIBXKLAVIER
+#include <gdk/gdkx.h>
+#include <libxklavier/xklavier.h>
+#endif /* HAVE_LIBXKLAVIER */
#include "m17nutil.h"
#include "engine.h"
@@ -38,6 +42,10 @@ struct _IBusM17NEngineClass {
gboolean use_iok;
MInputMethod *im;
+
+#if HAVE_LIBXKLAVIER
+ XklConfigRec *xkl_config_rec;
+#endif /* HAVE_LIBXKLAVIER */
};
/* functions prototype */
@@ -105,12 +113,90 @@ static IBusEngineClass *parent_class = N
static IBusConfig *config = NULL;
+#if HAVE_LIBXKLAVIER
+static XklEngine *xkl_engine = NULL;
+static XklConfigRec *xkl_system_config_rec = NULL;
+
+static gboolean
+parse_xkb_options (XklConfigRec *config_rec, const gchar *xkb_options)
+{
+ gchar **strv;
+
+ strv = g_strsplit (xkb_options, ",", -1);
+ if (g_strv_length (strv) < 1) {
+ g_strfreev (strv);
+ return FALSE;
+ }
+
+ g_strfreev (config_rec->options);
+ config_rec->options = strv;
+
+ return TRUE;
+}
+
+static GdkFilterReturn
+filter_xkl_event (GdkXEvent *xev,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ XEvent *xevent = (XEvent *)xev;
+
+ xkl_engine_filter_events (xkl_engine, xevent);
+ return GDK_FILTER_CONTINUE;
+}
+
+static void
+on_xkl_config_changed (XklEngine *xklengine,
+ gpointer user_data)
+{
+ IBusM17NEngineClass *klass = user_data;
+ XklConfigRec *config_rec;
+
+ config_rec = xkl_config_rec_new ();
+ if (!xkl_config_rec_get_from_server (config_rec, xkl_engine)) {
+ g_object_unref (config_rec);
+ g_warning ("Can't get default keyboard config from the server");
+ } else if (klass->xkl_config_rec &&
+ !xkl_config_rec_equals (config_rec, klass->xkl_config_rec)) {
+ if (xkl_system_config_rec)
+ g_object_unref (xkl_system_config_rec);
+ xkl_system_config_rec = config_rec;
+ }
+}
+#endif /* HAVE_LIBXKLAVIER */
+
void
ibus_m17n_init (IBusBus *bus)
{
+#if HAVE_LIBXKLAVIER
+ if (gdk_init_check (NULL, NULL)) {
+ GdkDisplay *display = gdk_display_get_default ();
+ g_assert (display);
+
+ xkl_engine = xkl_engine_get_instance (GDK_DISPLAY_XDISPLAY (display));
+ xkl_system_config_rec = xkl_config_rec_new ();
+ if (!xkl_config_rec_get_from_server (xkl_system_config_rec,
+ xkl_engine)) {
+ g_object_unref (xkl_system_config_rec);
+ xkl_system_config_rec = NULL;
+
+ g_warning ("Can't get default keyboard config from the server");
+ } else {
+ gdk_window_add_filter (NULL,
+ (GdkFilterFunc) filter_xkl_event,
+ NULL);
+ gdk_window_add_filter (gdk_get_default_root_window (),
+ (GdkFilterFunc) filter_xkl_event,
+ NULL);
+ xkl_engine_start_listen (xkl_engine, XKLL_TRACK_KEYBOARD_STATE);
+ }
+ }
+#endif /* HAVE_LIBXKLAVIER */
+
config = ibus_bus_get_config (bus);
if (config)
g_object_ref_sink (config);
+
ibus_m17n_init_common ();
}
@@ -299,6 +385,25 @@ ibus_m17n_engine_class_init (IBusM17NEng
G_CALLBACK(ibus_m17n_config_value_changed),
klass);
+#if HAVE_LIBXKLAVIER
+ if (engine_config->xkb_options) {
+ klass->xkl_config_rec = xkl_config_rec_new ();
+ if (!xkl_config_rec_get_from_server (klass->xkl_config_rec,
+ xkl_engine)) {
+ g_object_unref (klass->xkl_config_rec);
+ g_warning ("Can't get default keyboard config from the server");
+ } else if (!parse_xkb_options (klass->xkl_config_rec,
+ engine_config->xkb_options)) {
+ g_object_unref (klass->xkl_config_rec);
+ g_warning ("Can't parse xkb options %s",
+ engine_config->xkb_options);
+ }
+ }
+
+ g_signal_connect (xkl_engine, "X-config-changed",
+ G_CALLBACK(on_xkl_config_changed), klass);
+#endif /* HAVE_LIBXKLAVIER */
+
klass->im = NULL;
}
@@ -412,6 +517,9 @@ ibus_m17n_engine_constructor (GType
IBusM17NEngine *m17n;
GObjectClass *object_class;
IBusM17NEngineClass *klass;
+#if HAVE_LIBXKLAVIER
+ GdkDisplay *display;
+#endif /* HAVE_LIBXKLAVIER */
m17n = (IBusM17NEngine *) G_OBJECT_CLASS (parent_class)->constructor (type,
n_construct_params,
@@ -499,6 +607,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine
m17n->context = NULL;
}
+#if HAVE_LIBXKLAVIER
+ if (xkl_system_config_rec)
+ xkl_config_rec_activate (xkl_system_config_rec, xkl_engine);
+#endif /* HAVE_LIBXKLAVIER */
+
IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)m17n);
}
@@ -735,6 +848,19 @@ ibus_m17n_engine_enable (IBusEngine *eng
ibus_engine_get_surrounding_text (engine, &text, &cursor_pos);
g_object_unref (text);
#endif /* HAVE_IBUS_ENGINE_GET_SURROUNDING_TEXT */
+
+#if HAVE_LIBXKLAVIER
+ GObjectClass *object_class;
+ IBusM17NEngineClass *klass;
+
+ object_class = G_OBJECT_GET_CLASS (m17n);
+ klass = (IBusM17NEngineClass *) object_class;
+
+ if (klass->xkl_config_rec) {
+ if (!xkl_config_rec_activate (klass->xkl_config_rec, xkl_engine))
+ g_warning ("Can't set the XKB layout");
+ }
+#endif /* HAVE_LIBXKLAVIER */
}
static void
@@ -744,6 +870,17 @@ ibus_m17n_engine_disable (IBusEngine *en
ibus_m17n_engine_focus_out (engine);
parent_class->disable (engine);
+
+#if HAVE_LIBXKLAVIER
+ GObjectClass *object_class;
+ IBusM17NEngineClass *klass;
+
+ object_class = G_OBJECT_GET_CLASS (m17n);
+ klass = (IBusM17NEngineClass *) object_class;
+
+ if (xkl_system_config_rec)
+ xkl_config_rec_activate (xkl_system_config_rec, xkl_engine);
+#endif /* HAVE_LIBXKLAVIER */
}
static void
Index: ibus-m17n-1.3.2/src/m17nutil.c
===================================================================
--- ibus-m17n-1.3.2.orig/src/m17nutil.c
+++ ibus-m17n-1.3.2/src/m17nutil.c
@@ -290,6 +290,11 @@ ibus_m17n_engine_config_parse_xml_node (
sub_node->name, sub_node->text);
continue;
}
+ if (g_strcmp0 (sub_node->name, "xkb-options") == 0) {
+ g_free (cnode->config.xkb_options);
+ cnode->config.xkb_options = g_strdup (sub_node->text);
+ continue;
+ }
g_warning ("<engine> element contains invalid element <%s>",
sub_node->name);
}
Index: ibus-m17n-1.3.2/src/m17nutil.h
===================================================================
--- ibus-m17n-1.3.2.orig/src/m17nutil.h
+++ ibus-m17n-1.3.2/src/m17nutil.h
@@ -16,6 +16,9 @@ struct _IBusM17NEngineConfig {
/* whether to highlight preedit */
gboolean preedit_highlight;
+
+ /* keyboard options to which the engine switches when enabled */
+ char *xkb_options;
};
typedef struct _IBusM17NEngineConfig IBusM17NEngineConfig;

View File

@ -0,0 +1,130 @@
Patch to embed hotkeys and symbol property in component XML.
Index: ibus-m17n-1.3.2/configure.ac
===================================================================
--- ibus-m17n-1.3.2.orig/configure.ac
+++ ibus-m17n-1.3.2/configure.ac
@@ -122,6 +122,10 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION(0.16.1)
+# hotkeys in component xml
+IBUS_WITH_HOTKEYS
+IBUS_SET_SYMBOL([?])
+
# OUTPUT files
AC_CONFIG_FILES([ po/Makefile.in
Index: ibus-m17n-1.3.2/m4/ibus.m4
===================================================================
--- /dev/null
+++ ibus-m17n-1.3.2/m4/ibus.m4
@@ -0,0 +1,52 @@
+# IBUS_WITH_HOTKEYS([DEFAULT])
+AC_DEFUN([IBUS_WITH_HOTKEYS], [
+ IBUS_HOTKEYS_DEFAULT=m4_default([$1], [Control+space,Zenkaku_Hankaku])
+ AC_ARG_WITH(hotkeys,
+ [AC_HELP_STRING([--with-hotkeys=HOTKEYS],
+ [Use hotkeys for ibus bridge mode. (available value: yes/no/keys)])],
+ [with_hotkeys="$withval"],
+ [with_hotkeys="no"])
+ if test x$with_hotkeys = xno; then
+ IBUS_HOTKEYS_XML="<!-- <hotkeys>${IBUS_HOTKEYS_DEFAULT}</hotkeys> -->"
+ elif test x$with_hotkeys = xyes -o x$with_hotkeys = x; then
+ IBUS_HOTKEYS="$IBUS_HOTKEYS_DEFAULT"
+ IBUS_HOTKEYS_XML="<hotkeys>${IBUS_HOTKEYS}</hotkeys>"
+ else
+ IBUS_HOTKEYS="$with_hotkeys"
+ IBUS_HOTKEYS_XML="<hotkeys>${IBUS_HOTKEYS}</hotkeys>"
+ fi
+ if test x$IBUS_HOTKEYS != x; then
+ AC_DEFINE_UNQUOTED(IBUS_IBUS_HOTKEYS, ["$IBUS_HOTKEYS"],
+ [IME specific hotkeys for IBus])
+ AC_SUBST(IBUS_HOTKEYS)
+ fi
+ AC_SUBST(IBUS_HOTKEYS_XML)
+])
+
+# IBUS_SET_SYMBOL(SYMBOL)
+AC_DEFUN([IBUS_SET_SYMBOL], [
+ IBUS_SYMBOL="$1"
+ if test x$PYTHON = x; then
+ AM_PATH_PYTHON([2.5])
+ fi
+ AC_MSG_CHECKING([if ibus supports icon symbol])
+ $PYTHON <<_IBUS_SYMBOL_TEST
+import ibus
+engine = ibus.EngineDesc('test')
+exit(not hasattr(engine, 'symbol'))
+_IBUS_SYMBOL_TEST
+ if test $? -eq 0; then
+ IBUS_SYMBOL_XML="<symbol>${IBUS_SYMBOL}</symbol>"
+ AC_MSG_RESULT([yes])
+ else
+ IBUS_SYMBOL_XML="<!-- <symbol>${IBUS_SYMBOL}</symbol> -->"
+ IBUS_SYMBOL=
+ AC_MSG_RESULT([no])
+ fi
+ if test x$IBUS_SYMBOL != x; then
+ AC_DEFINE_UNQUOTED([IBUS_SYMBOL], ["$IBUS_SYMBOL"],
+ [Icon symbol string for IBus])
+ AC_SUBST(IBUS_SYMBOL)
+ fi
+ AC_SUBST(IBUS_SYMBOL_XML)
+])
Index: ibus-m17n-1.3.2/src/default.xml.in.in
===================================================================
--- ibus-m17n-1.3.2.orig/src/default.xml.in.in
+++ ibus-m17n-1.3.2/src/default.xml.in.in
@@ -254,5 +254,7 @@
<name>m17n:*</name>
<rank>0</rank>
<preedit-highlight>FALSE</preedit-highlight>
+ @IBUS_HOTKEYS_XML@
+ @IBUS_SYMBOL_XML@
</engine>
</engines>
Index: ibus-m17n-1.3.2/src/m17nutil.c
===================================================================
--- ibus-m17n-1.3.2.orig/src/m17nutil.c
+++ ibus-m17n-1.3.2/src/m17nutil.c
@@ -122,6 +122,8 @@ ibus_m17n_engine_new (MSymbol lang,
"icon", engine_icon ? engine_icon : "",
"layout", "us",
"rank", config->rank,
+ "hotkeys", config->hotkeys ? config->hotkeys : "",
+ "symbol", config->symbol ? config->symbol : "",
NULL);
#else
engine = ibus_engine_desc_new (engine_name,
@@ -282,6 +284,14 @@ ibus_m17n_engine_config_parse_xml_node (
cnode->config.rank = atoi (sub_node->text);
continue;
}
+ if (g_strcmp0 (sub_node->name , "hotkeys") == 0) {
+ cnode->config.hotkeys = g_strdup (sub_node->text);
+ continue;
+ }
+ if (g_strcmp0 (sub_node->name , "symbol") == 0) {
+ cnode->config.symbol = g_strdup (sub_node->text);
+ continue;
+ }
if (g_strcmp0 (sub_node->name , "preedit-highlight") == 0) {
if (g_ascii_strcasecmp ("TRUE", sub_node->text) == 0)
cnode->config.preedit_highlight = TRUE;
Index: ibus-m17n-1.3.2/src/m17nutil.h
===================================================================
--- ibus-m17n-1.3.2.orig/src/m17nutil.h
+++ ibus-m17n-1.3.2/src/m17nutil.h
@@ -14,6 +14,12 @@ struct _IBusM17NEngineConfig {
/* engine rank */
gint rank;
+ /* hotkeys */
+ gchar *hotkeys;
+
+ /* symbol */
+ gchar *symbol;
+
/* whether to highlight preedit */
gboolean preedit_highlight;

View File

@ -1,20 +1,31 @@
%define require_ibus_version 1.3.0 %global require_ibus_version 1.3.0
%global have_bridge_hotkey 1
%if (0%{?fedora} > 14)
%global _with_gtk --with-gtk=3.0
%else
%global _with_gtk --with-gtk=2.0
%endif
%if %have_bridge_hotkey
%global _with_hotkeys --with-hotkeys
%endif
Name: ibus-m17n Name: ibus-m17n
Version: 1.3.2 Version: 1.3.2
Release: 5%{?dist} Release: 6%{?dist}
Summary: The M17N engine for IBus platform Summary: The M17N engine for IBus platform
License: GPLv2+ License: GPLv2+
Group: System Environment/Libraries Group: System Environment/Libraries
URL: http://code.google.com/p/ibus/ URL: http://code.google.com/p/ibus/
Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
Patch0: ibus-m17n-iok.patch Patch0: ibus-m17n-HEAD.patch
Patch1: ibus-m17n-HEAD.patch Patch1: ibus-m17n-iok.patch
# Surrounding-text support fixes. Hopefully Patch2 won't be needed Patch2: ibus-m17n-xkb-options.patch
# with future IBus versions. %if %have_bridge_hotkey
Patch2: ibus-m17n-stscap.patch Patch3: ibus-m17n-xx-icon-symbol.patch
Patch3: ibus-m17n-stsreq.patch %endif
# The following BR is for autogen and not necessary when packging # The following BR is for autogen and not necessary when packging
# released tarballs. # released tarballs.
@ -23,7 +34,12 @@ BuildRequires: libtool
BuildRequires: pkgconfig BuildRequires: pkgconfig
BuildRequires: gnome-common BuildRequires: gnome-common
BuildRequires: m17n-lib-devel BuildRequires: m17n-lib-devel
%if (0%{?fedora} > 14)
BuildRequires: gtk3-devel BuildRequires: gtk3-devel
%else
BuildRequires: gtk2-devel
%endif
BuildRequires: libxklavier-devel
BuildRequires: ibus-devel >= %{require_ibus_version} BuildRequires: ibus-devel >= %{require_ibus_version}
Requires: ibus >= %{require_ibus_version} Requires: ibus >= %{require_ibus_version}
@ -36,14 +52,16 @@ the input table maps from m17n-db.
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .iok %patch0 -p1 -b .HEAD
%patch1 -p1 -b .HEAD %patch1 -p1 -b .iok
%patch2 -p1 -b .stscap %patch2 -p1 -b .xkb-options
%patch3 -p1 -b .stsreq %if %have_bridge_hotkey
%patch3 -p1 -b .xx-icon-symbol
%endif
NOCONFIGURE=1 ./autogen.sh NOCONFIGURE=1 ./autogen.sh
%build %build
%configure --disable-static --with-gtk=3.0 %configure --disable-static %{?_with_gtk} %{?_with_hotkeys}
# make -C po update-gmo # make -C po update-gmo
make %{?_smp_mflags} make %{?_smp_mflags}
@ -61,6 +79,11 @@ make DESTDIR=${RPM_BUILD_ROOT} install
%{_datadir}/ibus/component/* %{_datadir}/ibus/component/*
%changelog %changelog
* Mon Jul 4 2011 Daiki Ueno <dueno@redhat.com> - 1.3.2-6
- Add ibus-m17n-xkb-options.patch.
- Add ibus-m17n-xx-icon-symbol.patch.
- Drop surrounding-text patches since they are included in the HEAD patch.
* Wed Jun 15 2011 Daiki Ueno <dueno@redhat.com> - 1.3.2-5 * Wed Jun 15 2011 Daiki Ueno <dueno@redhat.com> - 1.3.2-5
- Add ibus-m17n-stsreq.patch. - Add ibus-m17n-stsreq.patch.
- Fix bug 711126 - ibus: surrounding text support fails for the first - Fix bug 711126 - ibus: surrounding text support fails for the first

4
series Normal file
View File

@ -0,0 +1,4 @@
ibus-m17n-HEAD.patch
ibus-m17n-iok.patch
ibus-m17n-xkb-options.patch
ibus-m17n-xx-icon-symbol.patch