diff --git a/ibus-m17n-HEAD.patch b/ibus-m17n-HEAD.patch new file mode 100644 index 0000000..cbfb685 --- /dev/null +++ b/ibus-m17n-HEAD.patch @@ -0,0 +1,1928 @@ +diff --git a/autogen.sh b/autogen.sh +index 99be006..f8bf2b0 100755 +--- a/autogen.sh ++++ b/autogen.sh +@@ -18,10 +18,10 @@ which gnome-autogen.sh || { + exit 1 + } + +-export CFLAGS="-g -O0" +-export CXXFLAGS="$CFLAGS" ++export CFLAGS=${CFLAGS-"-Wall"} ++export CXXFLAGS=${CXXFLAGS-"$CFLAGS"} + + ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" + REQUIRED_AUTOMAKE_VERSION=1.10 + +-. gnome-autogen.sh ++. gnome-autogen.sh "$@" +diff --git a/configure.ac b/configure.ac +index 0548537..30d44ff 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -48,6 +48,7 @@ AM_PROG_CC_C_O + AC_PROG_CXX + AC_ISC_POSIX + AC_HEADER_STDC ++IT_PROG_INTLTOOL([0.35.0]) + AM_PROG_LIBTOOL + + # check ibus +@@ -111,8 +112,6 @@ AC_CONFIG_FILES([ po/Makefile.in + Makefile + ibus-m17n.spec + src/Makefile +-src/m17n.xml.in +-src/default.xml.in + icons/Makefile + m4/Makefile + ]) +diff --git a/po/POTFILES.in b/po/POTFILES.in +index a426e33..bb3bd6e 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -1,3 +1,5 @@ + src/engine.c + src/m17nutil.c + src/main.c ++[type: gettext/glade]src/ibus-m17n-preferences.ui ++src/ibus-setup-m17n.desktop.in.in +diff --git a/po/POTFILES.skip b/po/POTFILES.skip +new file mode 100644 +index 0000000..3667f37 +--- /dev/null ++++ b/po/POTFILES.skip +@@ -0,0 +1 @@ ++src/ibus-setup-m17n.desktop.in +diff --git a/src/Makefile.am b/src/Makefile.am +index 39d6523..68ec953 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -19,15 +19,14 @@ + # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + AM_CFLAGS = \ +- @IBUS_CFLAGS@ \ +- @M17N_CFLAGS@ \ ++ $(IBUS_CFLAGS) \ ++ $(M17N_CFLAGS) \ + -DPKGDATADIR=\"$(pkgdatadir)\" \ + -DLIBEXECDIR=\"$(libexecdir)\" \ +- -DSETUPDIR=\"$(setupdir)\" \ + $(NULL) + AM_LDADD = \ +- @IBUS_LIBS@ \ +- @M17N_LIBS@ \ ++ $(IBUS_LIBS) \ ++ $(M17N_LIBS) \ + $(NULL) + + check_PROGRAMS = \ +@@ -38,6 +37,7 @@ TESTS = \ + $(check_PROGRAMS) \ + $(NULL) + ++TESTS_ENVIRONMENT = IBUS_M17N_PKGDATADIR=$(builddir) + + test_m17n_SOURCES = \ + test.c \ +@@ -46,10 +46,13 @@ test_m17n_CFLAGS = \ + $(AM_CFLAGS) \ + $(NULL) + test_m17n_LDADD = \ +- libm17ncommon.a \ ++ libm17ncommon.la \ + $(AM_LDADD) \ + $(NULL) + ++test: ibus-engine-m17n ++ $(builddir)/ibus-engine-m17n ++ + libexec_PROGRAMS = ibus-engine-m17n + + noinst_LTLIBRARIES = libm17ncommon.la +@@ -67,8 +70,8 @@ ibus_engine_m17n_SOURCES = \ + $(NULL) + ibus_engine_m17n_LDADD = \ + libm17ncommon.la \ +- @IBUS_LIBS@ \ +- @M17N_LIBS@ \ ++ $(IBUS_LIBS) \ ++ $(M17N_LIBS) \ + $(NULL) + + if HAVE_GTK +@@ -78,58 +81,61 @@ ibus_setup_m17n_SOURCES = \ + setup.c \ + $(NULL) + ibus_setup_m17n_CFLAGS = \ +- @GTK_CFLAGS@ \ ++ $(GTK_CFLAGS) \ + $(AM_CFLAGS) \ + $(NULL) + ibus_setup_m17n_LDADD = \ + libm17ncommon.la \ +- @IBUS_LIBS@ \ +- @M17N_LIBS@ \ +- @GTK_LIBS@ \ ++ $(IBUS_LIBS) \ ++ $(M17N_LIBS) \ ++ $(GTK_LIBS) \ + $(NULL) ++ ++setupdir = $(pkgdatadir)/setup + dist_setup_DATA = \ + ibus-m17n-preferences.ui \ + $(NULL) + endif + +-setup_DATA = \ ++pkgdata_DATA = \ + default.xml \ + $(NULL) +-setupdir = $(pkgdatadir)/setup + + component_DATA = \ + m17n.xml \ + $(NULL) +-componentdir = @datadir@/ibus/component ++componentdir = $(datadir)/ibus/component + + EXTRA_DIST = \ +- m17n.xml.in.in \ +- default.xml.in \ ++ m17n.xml.in \ ++ $(desktop_in_in_files) \ + $(NULL) + + DISTCLEANFILES = \ + m17n.xml.in \ +- default.xml.in \ + $(NULL) + + CLEANFILES = \ + m17n.xml \ +- default.xml \ ++ $(desktop_DATA) \ ++ $(desktop_in_files) \ + $(NULL) + ++edit = sed \ ++ -e 's|@VERSION[@]|$(VERSION)|g' \ ++ -e 's|@libexecdir[@]|$(libexecdir)|g' \ ++ -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' ++ + m17n.xml: m17n.xml.in +-default.xml: default.xml.in +- +-SUFFIXES = .xml.in .xml +-.xml.in.xml: +- $(AM_V_GEN) \ +- ( \ +- libexecdir=${libexecdir}; \ +- pkgdatadir=${pkgdatadir}; \ +- setupdir=${setupdir}; \ +- s=`cat $<`; \ +- eval "echo \"$${s}\""; \ +- ) > $@ ++ $(AM_V_GEN) $(edit) $< > $@.tmp && mv $@.tmp $@ + +-test: ibus-engine-m17n +- $(builddir)/ibus-engine-m17n ++desktop_in_in_files = ibus-setup-m17n.desktop.in.in ++desktop_in_files = $(desktop_in_in_files:.in.in=.in) ++ ++$(desktop_in_files): %.desktop.in: %.desktop.in.in Makefile ++ $(AM_V_GEN) $(edit) $< > $@.tmp && mv $@.tmp $@ ++ ++desktopdir=$(datadir)/applications ++desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) ++ ++@INTLTOOL_DESKTOP_RULE@ +diff --git a/src/default.xml b/src/default.xml +new file mode 100644 +index 0000000..ffd733a +--- /dev/null ++++ b/src/default.xml +@@ -0,0 +1,434 @@ ++ ++ ++ ++ ++ ++ m17n:* ++ 0 ++ FALSE ++ ++ ++ ++ ++ ++ m17n:*:kbd ++ -1 ++ ++ ++ ++ m17n:zh:py ++ -1 ++ ++ ++ ++ m17n:ja:anthy ++ -1 ++ ++ ++ ++ m17n:ko:han2 ++ -1 ++ ++ ++ ++ m17n:ko:romaja ++ -1 ++ ++ ++ ++ m17n:as:* ++ 1 ++ ++ ++ m17n:bn:* ++ 1 ++ ++ ++ m17n:gu:* ++ 1 ++ ++ ++ m17n:hi:* ++ 1 ++ ++ ++ m17n:kn:* ++ 1 ++ ++ ++ m17n:ks:* ++ 1 ++ ++ ++ m17n:mai:* ++ 1 ++ ++ ++ m17n:ml:* ++ 1 ++ ++ ++ m17n:mr:* ++ 1 ++ ++ ++ m17n:ne:* ++ 1 ++ ++ ++ m17n:or:* ++ 1 ++ ++ ++ m17n:pa:* ++ 1 ++ ++ ++ m17n:sa:* ++ 1 ++ ++ ++ m17n:sd:* ++ 1 ++ ++ ++ m17n:si:* ++ 1 ++ ++ ++ m17n:ta:* ++ 1 ++ ++ ++ m17n:te:* ++ 1 ++ ++ ++ ++ m17n:as:phonetic ++ 2 ++ ++ ++ m17n:bn:inscript ++ 2 ++ ++ ++ m17n:gu:inscript ++ 2 ++ ++ ++ m17n:hi:inscript ++ 2 ++ ++ ++ m17n:kn:kgp ++ 2 ++ ++ ++ m17n:ks:kbd ++ 2 ++ ++ ++ m17n:mai:inscript ++ 2 ++ ++ ++ m17n:ml:inscript ++ 2 ++ ++ ++ m17n:mr:inscript ++ 2 ++ ++ ++ m17n:ne:rom ++ 2 ++ ++ ++ m17n:or:inscript ++ 2 ++ ++ ++ m17n:pa:inscript ++ 2 ++ ++ ++ m17n:sa:harvard-kyoto ++ 2 ++ ++ ++ m17n:sd:inscript ++ 2 ++ ++ ++ m17n:si:wijesekera ++ 2 ++ ++ ++ m17n:ta:tamil99 ++ 2 ++ ++ ++ m17n:te:inscript ++ 2 ++ ++ ++ ++ m17n:si:samanala ++ 0 ++ ++ ++ ++ m17n:zh:cangjie ++ TRUE ++ ++ ++ m17n:zh:py-b5 ++ TRUE ++ ++ ++ m17n:zh:py-gb ++ TRUE ++ ++ ++ m17n:zh:py ++ TRUE ++ ++ ++ m17n:zh:quick ++ TRUE ++ ++ ++ m17n:zh:tonepy-b5 ++ TRUE ++ ++ ++ m17n:zh:tonepy-gb ++ TRUE ++ ++ ++ m17n:zh:tonepy ++ TRUE ++ ++ ++ m17n:ja:anthy ++ TRUE ++ ++ ++ ++ m17n:as:* ++ ++ ++ ++ m17n:bn:* ++ বা ++ ++ ++ m17n:gu:* ++ ગુ ++ ++ ++ m17n:hi:* ++ हिं ++ ++ ++ m17n:kn:* ++ ++ ++ ++ m17n:ks:* ++ ++ ++ ++ m17n:mai:* ++ मै ++ ++ ++ m17n:ml:* ++ ++ ++ ++ m17n:mr:* ++ ++ ++ ++ m17n:ne:* ++ ने ++ ++ ++ m17n:or:* ++ ++ ++ ++ m17n:pa:* ++ ਪੰ ++ ++ ++ m17n:sa:* ++ सं ++ ++ ++ m17n:sd:* ++ सिं ++ ++ ++ m17n:si:* ++ සි ++ ++ ++ m17n:ta:* ++ ++ ++ ++ m17n:te:* ++ తె ++ ++ ++ m17n:*:kbd ++ ++ ++ ++ m17n:*:pre ++ ++ ++ ++ m17n:*:post ++ ++ ++ ++ m17n:am:sera ++ ++ ++ ++ m17n:bo:* ++ ++ ++ ++ m17n:cr:* ++ ++ ++ ++ m17n:dv:* ++ ++ ++ ++ m17n:eo:* ++ ++ ++ ++ m17n:fa:* ++ ف ++ ++ ++ m17n:fr:* ++ ++ ++ ++ m17n:ii:* ++ ++ ++ ++ m17n:iu:* ++ ++ ++ ++ m17n:ja:anthy ++ ++ ++ ++ m17n:kk:* ++ قا ++ ++ ++ m17n:km:* ++ ++ ++ ++ m17n:lo:* ++ ++ ++ ++ m17n:nsk:* ++ ++ ++ ++ m17n:oj:* ++ ++ ++ ++ m17n:ps:* ++ ++ ++ ++ m17n:ru:* ++ Я ++ ++ ++ m17n:sv:* ++ ++ ++ ++ m17n:syrc:* ++ ++ ++ ++ m17n:tai:* ++ ++ ++ ++ m17n:th:* ++ ++ ++ ++ m17n:ur:* ++ خ ++ ++ ++ m17n:vi:han ++ ++ ++ ++ m17n:vi:nom* ++ ++ ++ ++ m17n:vi:* ++ ++ ++ ++ m17n:yi:* ++ ++ ++ ++ m17n:zh:bopomofo ++ ++ ++ ++ m17n:zh:cangjie ++ ++ ++ ++ m17n:zh:pinyin ++ PY ++ hanyu pinyin (m17n) ++ ++ ++ m17n:zh:py* ++ ++ ++ ++ m17n:zh:quick ++ ++ ++ ++ m17n:zh:tonepy* ++ ++ ++ +diff --git a/src/default.xml.in.in b/src/default.xml.in.in +deleted file mode 100644 +index 9f5a01e..0000000 +--- a/src/default.xml.in.in ++++ /dev/null +@@ -1,408 +0,0 @@ +- +- +- +- +- +- m17n:* +- 0 +- FALSE +- +- +- +- +- m17n:as:* +- 1 +- +- +- m17n:bn:* +- 1 +- +- +- m17n:gu:* +- 1 +- +- +- m17n:hi:* +- 1 +- +- +- m17n:kn:* +- 1 +- +- +- m17n:ks:* +- 1 +- +- +- m17n:mai:* +- 1 +- +- +- m17n:ml:* +- 1 +- +- +- m17n:mr:* +- 1 +- +- +- m17n:ne:* +- 1 +- +- +- m17n:or:* +- 1 +- +- +- m17n:pa:* +- 1 +- +- +- m17n:sa:* +- 1 +- +- +- m17n:sd:* +- 1 +- +- +- m17n:si:* +- 1 +- +- +- m17n:ta:* +- 1 +- +- +- m17n:te:* +- 1 +- +- +- +- m17n:as:phonetic +- 2 +- +- +- m17n:bn:inscript +- 2 +- +- +- m17n:gu:inscript +- 2 +- +- +- m17n:hi:inscript +- 2 +- +- +- m17n:kn:kgp +- 2 +- +- +- m17n:ks:kbd +- 2 +- +- +- m17n:mai:inscript +- 2 +- +- +- m17n:ml:inscript +- 2 +- +- +- m17n:mr:inscript +- 2 +- +- +- m17n:ne:rom +- 2 +- +- +- m17n:or:inscript +- 2 +- +- +- m17n:pa:inscript +- 2 +- +- +- m17n:sa:harvard-kyoto +- 2 +- +- +- m17n:sd:inscript +- 2 +- +- +- m17n:si:wijesekera +- 2 +- +- +- m17n:ta:tamil99 +- 2 +- +- +- m17n:te:inscript +- 2 +- +- +- +- m17n:si:samanala +- 0 +- +- +- +- m17n:zh:cangjie +- TRUE +- +- +- m17n:zh:py-b5 +- TRUE +- +- +- m17n:zh:py-gb +- TRUE +- +- +- m17n:zh:py +- TRUE +- +- +- m17n:zh:quick +- TRUE +- +- +- m17n:zh:tonepy-b5 +- TRUE +- +- +- m17n:zh:tonepy-gb +- TRUE +- +- +- m17n:zh:tonepy +- TRUE +- +- +- m17n:ja:anthy +- TRUE +- +- +- +- m17n:as:* +- +- +- +- m17n:bn:* +- বা +- +- +- m17n:gu:* +- ગુ +- +- +- m17n:hi:* +- हिं +- +- +- m17n:kn:* +- +- +- +- m17n:ks:* +- +- +- +- m17n:mai:* +- मै +- +- +- m17n:ml:* +- +- +- +- m17n:mr:* +- +- +- +- m17n:ne:* +- ने +- +- +- m17n:or:* +- +- +- +- m17n:pa:* +- ਪੰ +- +- +- m17n:sa:* +- सं +- +- +- m17n:sd:* +- सिं +- +- +- m17n:si:* +- සි +- +- +- m17n:ta:* +- +- +- +- m17n:te:* +- తె +- +- +- m17n:*:kbd +- +- +- +- m17n:*:pre +- +- +- +- m17n:*:post +- +- +- +- m17n:am:sera +- +- +- +- m17n:bo:* +- +- +- +- m17n:cr:* +- +- +- +- m17n:dv:* +- +- +- +- m17n:eo:* +- +- +- +- m17n:fa:* +- ف +- +- +- m17n:fr:* +- +- +- +- m17n:ii:* +- +- +- +- m17n:iu:* +- +- +- +- m17n:ja:anthy +- +- +- +- m17n:kk:* +- قا +- +- +- m17n:km:* +- +- +- +- m17n:lo:* +- +- +- +- m17n:nsk:* +- +- +- +- m17n:oj:* +- +- +- +- m17n:ps:* +- +- +- +- m17n:ru:* +- Я +- +- +- m17n:sv:* +- +- +- +- m17n:syrc:* +- +- +- +- m17n:tai:* +- +- +- +- m17n:th:* +- +- +- +- m17n:ur:* +- خ +- +- +- m17n:vi:han +- +- +- +- m17n:vi:nom* +- +- +- +- m17n:vi:* +- +- +- +- m17n:yi:* +- +- +- +- m17n:zh:bopomofo +- +- +- +- m17n:zh:cangjie +- +- +- +- m17n:zh:pinyin +- PY +- hanyu pinyin (m17n) +- +- +- m17n:zh:py* +- +- +- +- m17n:zh:quick +- +- +- +- m17n:zh:tonepy* +- +- +- +diff --git a/src/engine.c b/src/engine.c +index bd7ea0f..bcc1a71 100644 +--- a/src/engine.c ++++ b/src/engine.c +@@ -23,6 +23,7 @@ struct _IBusM17NEngine { + IBusProperty *setup_prop; + #endif /* HAVE_SETUP */ + IBusPropList *prop_list; ++ IBusKeymap *us_keymap; + }; + + struct _IBusM17NEngineClass { +@@ -35,6 +36,7 @@ struct _IBusM17NEngineClass { + gint preedit_underline; + IBusPreeditFocusMode preedit_focus_mode; + gint lookup_table_orientation; ++ gboolean use_us_layout; + + MInputMethod *im; + }; +@@ -64,14 +66,6 @@ static void ibus_m17n_engine_focus_out (IBusEngine *engine); + static void ibus_m17n_engine_reset (IBusEngine *engine); + static void ibus_m17n_engine_enable (IBusEngine *engine); + static void ibus_m17n_engine_disable (IBusEngine *engine); +-static void ibus_engine_set_cursor_location (IBusEngine *engine, +- gint x, +- gint y, +- gint w, +- gint h); +-static void ibus_m17n_engine_set_capabilities +- (IBusEngine *engine, +- guint caps); + static void ibus_m17n_engine_page_up (IBusEngine *engine); + static void ibus_m17n_engine_page_down (IBusEngine *engine); + static void ibus_m17n_engine_cursor_up (IBusEngine *engine); +@@ -80,12 +74,6 @@ static void ibus_m17n_engine_property_activate + (IBusEngine *engine, + const gchar *prop_name, + guint prop_state); +-static void ibus_m17n_engine_property_show +- (IBusEngine *engine, +- const gchar *prop_name); +-static void ibus_m17n_engine_property_hide +- (IBusEngine *engine, +- const gchar *prop_name); + + static void ibus_m17n_engine_commit_string + (IBusM17NEngine *m17n, +@@ -263,6 +251,7 @@ ibus_m17n_engine_class_init (IBusM17NEngineClass *klass) + IBUS_ENGINE_PREEDIT_COMMIT : + IBUS_ENGINE_PREEDIT_CLEAR; + klass->lookup_table_orientation = IBUS_ORIENTATION_SYSTEM; ++ klass->use_us_layout = FALSE; + + ibus_m17n_engine_config_free (engine_config); + +@@ -304,6 +293,14 @@ ibus_m17n_engine_class_init (IBusM17NEngineClass *klass) + klass->lookup_table_orientation = g_variant_get_int32 (value); + g_variant_unref (value); + } ++ ++ value = g_variant_lookup_value (values, ++ "use_us_layout", ++ G_VARIANT_TYPE_BOOLEAN); ++ if (value != NULL) { ++ klass->use_us_layout = g_variant_get_boolean (value); ++ g_variant_unref (value); ++ } + g_variant_unref (values); + } + +@@ -340,6 +337,8 @@ ibus_m17n_config_value_changed (IBusConfig *config, + klass->preedit_underline = g_variant_get_int32 (value); + } else if (g_strcmp0 (name, "lookup_table_orientation") == 0) { + klass->lookup_table_orientation = g_variant_get_int32 (value); ++ } else if (g_strcmp0 (name, "use_us_layout") == 0) { ++ klass->use_us_layout = g_variant_get_boolean (value); + } + } + } +@@ -384,6 +383,7 @@ ibus_m17n_engine_init (IBusM17NEngine *m17n) + m17n->table = ibus_lookup_table_new (9, 0, TRUE, TRUE); + g_object_ref_sink (m17n->table); + m17n->context = NULL; ++ m17n->us_keymap = ibus_keymap_get ("us"); + } + + static GObject* +@@ -476,6 +476,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine *m17n) + m17n->context = NULL; + } + ++ if (m17n->us_keymap) { ++ g_object_unref (m17n->us_keymap); ++ m17n->us_keymap = NULL; ++ } ++ + IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)m17n); + } + +@@ -531,28 +536,25 @@ ibus_m17n_engine_commit_string (IBusM17NEngine *m17n, + Since IBus engines are supposed to be cross-platform, the code + should go into IBus core, instead of ibus-m17n. */ + static MSymbol +-ibus_m17n_key_event_to_symbol (guint keycode, +- guint keyval, +- guint modifiers) ++ibus_m17n_key_event_to_symbol (IBusM17NEngine *m17n, ++ guint keycode, ++ guint keyval, ++ guint modifiers) + { + GString *keysym; + MSymbol mkeysym = Mnil; + guint mask = 0; +- IBusKeymap *keymap; + + if (keyval >= IBUS_Shift_L && keyval <= IBUS_Hyper_R) { + return Mnil; + } + +- /* Here, keyval is already translated by IBUS_MOD5_MASK. Obtain +- the untranslated keyval from the underlying keymap and +- represent the translated keyval as the form "G-", which m17n-lib accepts. */ ++ /* If keyval is already translated by IBUS_MOD5_MASK. Try to ++ obtain the untranslated keyval from the US keymap. */ + if (modifiers & IBUS_MOD5_MASK) { +- keymap = ibus_keymap_get ("us"); +- keyval = ibus_keymap_lookup_keysym (keymap, keycode, ++ keyval = ibus_keymap_lookup_keysym (m17n->us_keymap, ++ keycode, + modifiers & ~IBUS_MOD5_MASK); +- g_object_unref (keymap); + } + + keysym = g_string_new (""); +@@ -656,15 +658,38 @@ ibus_m17n_engine_process_key_event (IBusEngine *engine, + guint modifiers) + { + IBusM17NEngine *m17n = (IBusM17NEngine *) engine; ++ IBusM17NEngineClass *klass = ++ (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n); ++ guint original_keyval = keyval; + + if (modifiers & IBUS_RELEASE_MASK) + return FALSE; +- MSymbol m17n_key = ibus_m17n_key_event_to_symbol (keycode, keyval, modifiers); + +- if (m17n_key == Mnil) +- return FALSE; ++ if (klass->use_us_layout) { ++ keyval = ibus_keymap_lookup_keysym (m17n->us_keymap, ++ keycode, ++ modifiers); ++ } + +- return ibus_m17n_engine_process_key (m17n, m17n_key); ++ MSymbol m17n_key = ibus_m17n_key_event_to_symbol (m17n, ++ keycode, ++ keyval, ++ modifiers); ++ if (m17n_key != Mnil && ibus_m17n_engine_process_key (m17n, m17n_key)) { ++ return TRUE; ++ } ++ ++ /* If keyval is translated in US layout, send the new keyval and ++ notify that the event is handled. */ ++ if (keyval != original_keyval && 0x20 <= keyval && keyval < 0x7F) { ++ gchar buf[2]; ++ buf[0] = keyval; ++ buf[1] = '\0'; ++ ibus_m17n_engine_commit_string (m17n, buf); ++ return TRUE; ++ } ++ ++ return FALSE; + } + + static void +@@ -704,8 +729,6 @@ ibus_m17n_engine_reset (IBusEngine *engine) + static void + ibus_m17n_engine_enable (IBusEngine *engine) + { +- IBusM17NEngine *m17n = (IBusM17NEngine *) engine; +- + parent_class->enable (engine); + + /* Issue a dummy ibus_engine_get_surrounding_text() call to tell +@@ -716,8 +739,6 @@ ibus_m17n_engine_enable (IBusEngine *engine) + static void + ibus_m17n_engine_disable (IBusEngine *engine) + { +- IBusM17NEngine *m17n = (IBusM17NEngine *) engine; +- + ibus_m17n_engine_focus_out (engine); + parent_class->disable (engine); + } +@@ -951,7 +972,9 @@ ibus_m17n_engine_callback (MInputContext *context, + &anchor_pos); + nchars = ibus_text_get_length (text); + nbytes = g_utf8_offset_to_pointer (text->text, nchars) - text->text; +- mt = mconv_decode_buffer (Mcoding_utf_8, text->text, nbytes); ++ mt = mconv_decode_buffer (Mcoding_utf_8, ++ (const unsigned char *) text->text, ++ nbytes); + g_object_unref (text); + + len = (long) mplist_value (m17n->context->plist); +diff --git a/src/ibus-m17n-preferences.ui b/src/ibus-m17n-preferences.ui +index a46ab49..e85fb15 100644 +--- a/src/ibus-m17n-preferences.ui ++++ b/src/ibus-m17n-preferences.ui +@@ -1,8 +1,8 @@ +- ++ + + + +- ++ + + + +@@ -11,24 +11,20 @@ + + + +- Single +- 1 +- +- +- Double ++ System + 2 + + +- Low +- 3 ++ Vertical ++ 1 + + +- None ++ Horizontal + 0 + + + +- ++ + + + +@@ -37,32 +33,67 @@ + + + +- System ++ Single ++ 1 ++ ++ ++ Double + 2 + + +- Vertical +- 1 ++ Low ++ 3 + + +- Horizontal ++ None + 0 + + + + + 400 ++ False + 5 + Preferences + center-always + gtk-preferences + normal +- False + + + True +- vertical ++ False + 2 ++ ++ ++ True ++ False ++ end ++ ++ ++ gtk-close ++ True ++ True ++ True ++ True ++ True ++ True ++ True ++ True ++ ++ ++ False ++ False ++ 0 ++ ++ ++ ++ ++ False ++ True ++ end ++ 0 ++ ++ + + + True +@@ -71,6 +102,7 @@ + + + True ++ False + 12 + 12 + 12 +@@ -78,20 +110,23 @@ + + + True +- vertical ++ False + + + True ++ False + 0 + none + + + True ++ False + 6 + 12 + + + True ++ False + 3 + 2 + +@@ -123,6 +158,7 @@ + + + True ++ False + liststore_underline + + +@@ -157,6 +193,7 @@ + + + True ++ False + Underline: + + +@@ -171,31 +208,39 @@ + + + True ++ False + <b>Pre-edit Appearance</b> + True + + + + ++ True ++ True + 0 + + + + + True ++ False + 0 + none + + + True ++ False + 12 + + + True ++ False ++ 2 + 2 + + + True ++ False + 0.46000000834465027 + Lookup Table Orientation: + +@@ -203,6 +248,7 @@ + + + True ++ False + liststore_orientation + + +@@ -210,6 +256,20 @@ + 2 + + ++ ++ ++ Use US keyboard layout ++ True ++ True ++ False ++ True ++ ++ ++ 2 ++ 1 ++ 2 ++ ++ + + + +@@ -217,12 +277,15 @@ + + + True ++ False + <b>Other</b> + True + + + + ++ True ++ True + 1 + + +@@ -233,6 +296,7 @@ + + + True ++ False + General + + +@@ -242,6 +306,7 @@ + + + True ++ False + 12 + 12 + 12 +@@ -249,11 +314,13 @@ + + + True ++ False + 0 + none + + + True ++ False + 6 + 12 + +@@ -277,6 +344,7 @@ + + + True ++ False + <b>m17n-lib Configuration</b> + True + +@@ -291,6 +359,7 @@ + + + True ++ False + Advanced + + +@@ -300,38 +369,11 @@ + + + ++ True ++ True + 1 + + +- +- +- True +- end +- +- +- gtk-close +- True +- True +- True +- True +- True +- True +- True +- True +- +- +- False +- False +- 0 +- +- +- +- +- False +- end +- 0 +- +- + + + +diff --git a/src/ibus-setup-m17n.desktop.in.in b/src/ibus-setup-m17n.desktop.in.in +new file mode 100644 +index 0000000..a380cb3 +--- /dev/null ++++ b/src/ibus-setup-m17n.desktop.in.in +@@ -0,0 +1,7 @@ ++[Desktop Entry] ++_Name=IBus M17N Setup ++_Comment=Set up IBus M17N engine ++Exec=@libexecdir@/ibus-setup-m17n ++NoDisplay=true ++Type=Application ++StartupNotify=true +diff --git a/src/m17n.xml.in b/src/m17n.xml.in +new file mode 100644 +index 0000000..fc215ab +--- /dev/null ++++ b/src/m17n.xml.in +@@ -0,0 +1,18 @@ ++ ++ ++ ++ org.freedesktop.IBus.M17N ++ M17N Component ++ @libexecdir@/ibus-engine-m17n --ibus ++ @VERSION@ ++ Peng Huang <shawn.p.huang@gmail.com> ++ GPL ++ http://code.google.com/p/ibus ++ ibus-m17n ++ ++ /usr/share/m17n/ ++ @pkgdatadir@/default.xml ++ ~/.m17n.d/ ++ ++ ++ +diff --git a/src/m17n.xml.in.in b/src/m17n.xml.in.in +deleted file mode 100644 +index 2f18ad5..0000000 +--- a/src/m17n.xml.in.in ++++ /dev/null +@@ -1,18 +0,0 @@ +- +- +- +- org.freedesktop.IBus.M17N +- M17N Component +- ${libexecdir}/ibus-engine-m17n --ibus +- @VERSION@ +- Peng Huang <shawn.p.huang@gmail.com> +- GPL +- http://code.google.com/p/ibus +- ibus-m17n +- +- /usr/share/m17n/ +- ${setupdir}/default.xml +- ~/.m17n.d/ +- +- +- +diff --git a/src/m17nutil.c b/src/m17nutil.c +index 51026b2..d82b855 100644 +--- a/src/m17nutil.c ++++ b/src/m17nutil.c +@@ -11,7 +11,7 @@ + + static MConverter *utf8_converter = NULL; + +-#define DEFAULT_XML (SETUPDIR "/default.xml") ++#define DEFAULT_XML (PKGDATADIR "/default.xml") + + typedef enum { + ENGINE_CONFIG_RANK_MASK = 1 << 0, +@@ -53,7 +53,9 @@ ibus_m17n_mtext_to_utf8 (MText *text) + bufsize = (mtext_len (text) + 1) * 6; + buf = (gchar *) g_malloc (bufsize); + +- mconv_rebind_buffer (utf8_converter, buf, bufsize); ++ mconv_rebind_buffer (utf8_converter, ++ (const unsigned char *) buf, ++ bufsize); + mconv_encode (utf8_converter, text); + + buf [utf8_converter->nbytes] = 0; +@@ -76,7 +78,9 @@ ibus_m17n_mtext_to_ucs4 (MText *text, glong *nchars) + bufsize = (mtext_len (text) + 1) * 6; + buf = (gchar *) g_malloc (bufsize); + +- mconv_rebind_buffer (utf8_converter, buf, bufsize); ++ mconv_rebind_buffer (utf8_converter, ++ (const unsigned char *) buf, ++ bufsize); + if (mconv_encode (utf8_converter, text) < 0) { + g_free (buf); + return NULL; +@@ -133,7 +137,7 @@ ibus_m17n_engine_new (MSymbol lang, + "language", msymbol_name (lang), + "license", "GPL", + "icon", engine_icon ? engine_icon : "", +- "layout", "us", ++ "layout", "default", + "rank", config->rank, + "symbol", config->symbol ? config->symbol : "", + "setup", engine_setup, +@@ -202,17 +206,12 @@ ibus_m17n_list_engines (void) + if (l) { + /* check candidates encoding */ + MPlist *sl; +- MSymbol varname; +- MText *vardesc; +- MSymbol varunknown; + MSymbol varcharset; + + sl = mplist_value (l); +- varname = mplist_value (sl); ++ /* L = (VAR-NAME DESCRIPTION 'nil' VALUE) */ + sl = mplist_next (sl); +- vardesc = mplist_value (sl); + sl = mplist_next (sl); +- varunknown = mplist_value (sl); + sl = mplist_next (sl); + varcharset = mplist_value (sl); + +@@ -336,17 +335,24 @@ ibus_m17n_get_component (void) + GList *engines, *p; + IBusComponent *component; + XMLNode *node; ++ const gchar *pkgdatadir; ++ gchar *default_xml; + + component = ibus_component_new ("org.freedesktop.IBus.M17n", + N_("M17N"), +- "0.1.0", ++ PACKAGE_VERSION, + "GPL", + "Peng Huang ", + "http://code.google.com/p/ibus/", + "", +- "ibus-m17n"); ++ PACKAGE_NAME); + +- node = ibus_xml_parse_file (DEFAULT_XML); ++ pkgdatadir = g_getenv ("IBUS_M17N_PKGDATADIR"); ++ if (pkgdatadir == NULL) ++ pkgdatadir = PKGDATADIR; ++ default_xml = g_build_filename (pkgdatadir, "default.xml", NULL); ++ ++ node = ibus_xml_parse_file (default_xml); + if (node && g_strcmp0 (node->name, "engines") == 0) { + for (p = node->sub_nodes; p != NULL; p = p->next) { + XMLNode *sub_node = p->data; +@@ -367,10 +373,12 @@ ibus_m17n_get_component (void) + } + config_list = g_slist_reverse (config_list); + } else +- g_warning ("failed to parse %s", DEFAULT_XML); ++ g_warning ("failed to parse %s", default_xml); + if (node) + ibus_xml_free (node); + ++ g_free (default_xml); ++ + engines = ibus_m17n_list_engines (); + + for (p = engines; p != NULL; p = p->next) +diff --git a/src/setup.c b/src/setup.c +index cc5cb09..513fabf 100644 +--- a/src/setup.c ++++ b/src/setup.c +@@ -25,6 +25,7 @@ struct _SetupDialog { + GtkWidget *colorbutton_foreground; + GtkWidget *checkbutton_background; + GtkWidget *colorbutton_background; ++ GtkWidget *checkbutton_use_us_layout; + GtkWidget *treeview; + GtkListStore *store; + +@@ -73,7 +74,9 @@ parse_m17n_value (MPlist *plist, gchar *text) + if (mplist_key (plist) == Mtext) { + MText *mtext; + +- mtext = mtext_from_data (text, strlen (text), MTEXT_FORMAT_UTF_8); ++ mtext = mconv_decode_buffer (Mcoding_utf_8, ++ (const unsigned char *) text, ++ strlen (text)); + value = mplist (); + mplist_add (value, Mtext, mtext); + return value; +@@ -288,6 +291,25 @@ load_choice (GVariant *values, + } + + static void ++load_toggle (GVariant *values, ++ GtkToggleButton *togglebutton, ++ const gchar *name, ++ gboolean defval) ++{ ++ GVariant *value; ++ gboolean bvalue; ++ ++ bvalue = defval; ++ value = g_variant_lookup_value (values, name, G_VARIANT_TYPE_BOOLEAN); ++ if (value != NULL) { ++ bvalue = g_variant_get_boolean (value); ++ g_variant_unref (value); ++ } ++ ++ gtk_toggle_button_set_active (togglebutton, bvalue); ++} ++ ++static void + setup_dialog_load_config (SetupDialog *dialog) + { + GVariant *values; +@@ -336,6 +358,12 @@ setup_dialog_load_config (SetupDialog *dialog) + "lookup_table_orientation", + IBUS_ORIENTATION_SYSTEM); + ++ /* Use US keyboard layout */ ++ load_toggle (values, ++ GTK_TOGGLE_BUTTON (dialog->checkbutton_use_us_layout), ++ "use_us_layout", ++ FALSE); ++ + /* Advanced -> m17n-lib configuration */ + dialog->store = gtk_list_store_new (NUM_COLS, + G_TYPE_STRING, +@@ -372,10 +400,10 @@ setup_dialog_load_config (SetupDialog *dialog) + static gchar * + _gdk_color_to_string (GdkColor *color) + { +- g_strdup_printf ("#%02X%02X%02X", +- (color->red & 0xFF00) >> 8, +- (color->green & 0xFF00) >> 8, +- (color->blue & 0xFF00) >> 8); ++ return g_strdup_printf ("#%02X%02X%02X", ++ (color->red & 0xFF00) >> 8, ++ (color->green & 0xFF00) >> 8, ++ (color->blue & 0xFF00) >> 8); + } + + static void +@@ -418,6 +446,20 @@ save_choice (SetupDialog *dialog, + ibus_config_set_value (dialog->config, dialog->section, name, value); + } + ++static void ++save_toggle (SetupDialog *dialog, ++ GtkToggleButton *togglebutton, ++ const gchar *name) ++{ ++ GVariant *value; ++ ++ value = g_variant_new_boolean (gtk_toggle_button_get_active (togglebutton)); ++ ibus_config_set_value (dialog->config, ++ dialog->section, ++ name, ++ value); ++} ++ + static gboolean + save_m17n_options (SetupDialog *dialog) + { +@@ -428,7 +470,7 @@ save_m17n_options (SetupDialog *dialog) + gboolean retval = TRUE; + + if (!gtk_tree_model_get_iter_first (model, &iter)) +- return; ++ return FALSE; + + do { + gtk_tree_model_get (model, &iter, +@@ -499,6 +541,9 @@ setup_dialog_save_config (SetupDialog *dialog) + save_choice (dialog, + GTK_COMBO_BOX (dialog->combobox_orientation), + "lookup_table_orientation"); ++ save_toggle (dialog, ++ GTK_TOGGLE_BUTTON (dialog->checkbutton_use_us_layout), ++ "use_us_layout"); + save_m17n_options (dialog); + } + +@@ -525,7 +570,7 @@ setup_dialog_new (IBusConfig *config, + + error = NULL; + if (gtk_builder_add_from_file (builder, +- SETUPDIR "/ibus-m17n-preferences.ui", ++ PKGDATADIR "setup/ibus-m17n-preferences.ui", + &error) == 0) { + g_warning ("can't read ibus-m17n-preferences.ui: %s", + error->message); +@@ -547,6 +592,8 @@ setup_dialog_new (IBusConfig *config, + dialog->combobox_underline = GTK_WIDGET (object); + object = gtk_builder_get_object (builder, "combobox_orientation"); + dialog->combobox_orientation = GTK_WIDGET (object); ++ object = gtk_builder_get_object (builder, "checkbutton_use_us_layout"); ++ dialog->checkbutton_use_us_layout = GTK_WIDGET (object); + object = gtk_builder_get_object (builder, "treeview_mim_config"); + dialog->treeview = GTK_WIDGET (object); + +@@ -567,9 +614,8 @@ start (const gchar *engine_name) + { + IBusBus *bus; + IBusConfig *config; +- gchar **strv, *section; ++ gchar **strv; + SetupDialog *dialog; +- GObject *object; + + ibus_init (); + ibus_m17n_init_common (); +@@ -610,6 +656,11 @@ main (gint argc, gchar **argv) + g_option_context_free (context); + + gtk_init (&argc, &argv); ++ ++ if (!opt_name) { ++ opt_name = (gchar *) g_getenv ("IBUS_ENGINE_NAME"); ++ } ++ + if (!opt_name) { + fprintf (stderr, "can't determine IBus engine name; use --name\n"); + exit (1); diff --git a/ibus-m17n-blacklist-engines.patch b/ibus-m17n-blacklist-engines.patch deleted file mode 100644 index 80c5425..0000000 --- a/ibus-m17n-blacklist-engines.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 5978feeb0d96d633417318daf29c3d4974e17b2d Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Tue, 25 Oct 2011 14:26:41 +0900 -Subject: [PATCH 3/4] Blacklist some engines useless under ibus environment. - ---- - src/default.xml.in.in | 26 ++++++++++++++++++++++++++ - 1 files changed, 26 insertions(+), 0 deletions(-) - -diff --git a/src/default.xml.in.in b/src/default.xml.in.in -index beae494..fda4f30 100644 ---- a/src/default.xml.in.in -+++ b/src/default.xml.in.in -@@ -12,6 +12,32 @@ - FALSE - - -+ -+ -+ -+ m17n:*:kbd -+ -1 -+ -+ -+ -+ m17n:zh:py -+ -1 -+ -+ -+ -+ m17n:ja:anthy -+ -1 -+ -+ -+ -+ m17n:ko:han2 -+ -1 -+ -+ -+ -+ m17n:ko:romaja -+ -1 -+ - - --- -1.7.7.6 - diff --git a/ibus-m17n-desktop-file.patch b/ibus-m17n-desktop-file.patch deleted file mode 100644 index 6064c92..0000000 --- a/ibus-m17n-desktop-file.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 87ae4c79779f6e543ae5b75a595e2db04bfc7de2 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Fri, 28 Sep 2012 11:44:47 +0900 -Subject: [PATCH] Add a .desktop file for ibus-setup-m17n. - -BUG=https://bugzilla.gnome.org/show_bug.cgi?id=684935 - -Review URL: https://codereview.appspot.com/6572062 ---- - configure.ac | 1 + - po/POTFILES.in | 2 ++ - po/POTFILES.skip | 1 + - src/Makefile.am | 16 ++++++++++++++++ - src/ibus-setup-m17n.desktop.in.in | 7 +++++++ - src/setup.c | 5 +++++ - 6 files changed, 32 insertions(+) - create mode 100644 po/POTFILES.skip - create mode 100644 src/ibus-setup-m17n.desktop.in.in - -Index: ibus-m17n-1.3.4/configure.ac -=================================================================== ---- ibus-m17n-1.3.4.orig/configure.ac -+++ ibus-m17n-1.3.4/configure.ac -@@ -48,6 +48,7 @@ AM_PROG_CC_C_O - AC_PROG_CXX - AC_ISC_POSIX - AC_HEADER_STDC -+IT_PROG_INTLTOOL([0.35.0]) - AM_PROG_LIBTOOL - - # check ibus -Index: ibus-m17n-1.3.4/po/POTFILES.in -=================================================================== ---- ibus-m17n-1.3.4.orig/po/POTFILES.in -+++ ibus-m17n-1.3.4/po/POTFILES.in -@@ -1,3 +1,5 @@ - src/engine.c - src/m17nutil.c - src/main.c -+[type: gettext/glade]src/ibus-m17n-preferences.ui -+src/ibus-setup-m17n.desktop.in.in -Index: ibus-m17n-1.3.4/po/POTFILES.skip -=================================================================== ---- /dev/null -+++ ibus-m17n-1.3.4/po/POTFILES.skip -@@ -0,0 +1 @@ -+src/ibus-setup-m17n.desktop.in -Index: ibus-m17n-1.3.4/src/Makefile.am -=================================================================== ---- ibus-m17n-1.3.4.orig/src/Makefile.am -+++ ibus-m17n-1.3.4/src/Makefile.am -@@ -110,6 +110,7 @@ componentdir = @datadir@/ibus/component - EXTRA_DIST = \ - m17n.xml.in.in \ - default.xml.in \ -+ $(desktop_in_in_files) \ - $(NULL) - - DISTCLEANFILES = \ -@@ -120,6 +121,8 @@ DISTCLEANFILES = \ - CLEANFILES = \ - m17n.xml \ - default.xml \ -+ $(desktop_DATA) \ -+ $(desktop_in_files) \ - $(NULL) - - m17n.xml: m17n.xml.in -@@ -138,3 +141,16 @@ SUFFIXES = .xml.in .xml - - test: ibus-engine-m17n - $(builddir)/ibus-engine-m17n -+ -+desktop_in_in_files = ibus-setup-m17n.desktop.in.in -+desktop_in_files = $(desktop_in_in_files:.in.in=.in) -+ -+$(desktop_in_files): %.desktop.in: %.desktop.in.in Makefile -+ $(AM_V_GEN) sed \ -+ -e "s|\@libexecdir\@|$(libexecdir)|" \ -+ $< > $@.tmp && mv $@.tmp $@ -+ -+desktopdir=$(datadir)/applications -+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) -+ -+@INTLTOOL_DESKTOP_RULE@ -Index: ibus-m17n-1.3.4/src/ibus-setup-m17n.desktop.in.in -=================================================================== ---- /dev/null -+++ ibus-m17n-1.3.4/src/ibus-setup-m17n.desktop.in.in -@@ -0,0 +1,7 @@ -+[Desktop Entry] -+_Name=IBus M17N Setup -+_Comment=Set up IBus M17N engine -+Exec=@libexecdir@/ibus-setup-m17n -+NoDisplay=true -+Type=Application -+StartupNotify=true -Index: ibus-m17n-1.3.4/src/setup.c -=================================================================== ---- ibus-m17n-1.3.4.orig/src/setup.c -+++ ibus-m17n-1.3.4/src/setup.c -@@ -611,6 +611,11 @@ main (gint argc, gchar **argv) - g_option_context_free (context); - - gtk_init (&argc, &argv); -+ -+ if (!opt_name) { -+ opt_name = (gchar *) g_getenv ("IBUS_ENGINE_NAME"); -+ } -+ - if (!opt_name) { - fprintf (stderr, "can't determine IBus engine name; use --name\n"); - exit (1); diff --git a/ibus-m17n-fix-mtext-config.patch b/ibus-m17n-fix-mtext-config.patch deleted file mode 100644 index 4e29a8f..0000000 --- a/ibus-m17n-fix-mtext-config.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9897c12c22619a7cc2a78e81df344c325c690a9e Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Thu, 2 Aug 2012 17:55:07 +0900 -Subject: [PATCH] setup: fix storing MText values - ---- - src/setup.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/setup.c b/src/setup.c -index cc5cb09..aa109bf 100644 ---- a/src/setup.c -+++ b/src/setup.c -@@ -73,7 +73,7 @@ parse_m17n_value (MPlist *plist, gchar *text) - if (mplist_key (plist) == Mtext) { - MText *mtext; - -- mtext = mtext_from_data (text, strlen (text), MTEXT_FORMAT_UTF_8); -+ mtext = mconv_decode_buffer (Mcoding_utf_8, text, strlen (text)); - value = mplist (); - mplist_add (value, Mtext, mtext); - return value; --- -1.7.11.2 - diff --git a/ibus-m17n-hide-title-status.patch b/ibus-m17n-hide-title-status.patch index 6326eba..b373882 100644 --- a/ibus-m17n-hide-title-status.patch +++ b/ibus-m17n-hide-title-status.patch @@ -11,15 +11,15 @@ Index: ibus-m17n-1.3.4/src/engine.c =================================================================== --- ibus-m17n-1.3.4.orig/src/engine.c +++ ibus-m17n-1.3.4/src/engine.c -@@ -36,6 +36,7 @@ struct _IBusM17NEngineClass { - IBusPreeditFocusMode preedit_focus_mode; +@@ -38,6 +38,7 @@ struct _IBusM17NEngineClass { gint lookup_table_orientation; + gboolean use_us_layout; + gchar *title; MInputMethod *im; }; -@@ -245,6 +246,10 @@ ibus_m17n_engine_class_init (IBusM17NEng +@@ -233,6 +234,10 @@ ibus_m17n_engine_class_init (IBusM17NEng } engine_name = g_strdup_printf ("m17n:%s:%s", lang, name); klass->config_section = g_strdup_printf ("engine/M17N/%s/%s", lang, name); @@ -30,7 +30,7 @@ Index: ibus-m17n-1.3.4/src/engine.c g_free (lang); g_free (name); -@@ -903,8 +908,9 @@ ibus_m17n_engine_callback (MInputContext +@@ -924,8 +929,9 @@ ibus_m17n_engine_callback (MInputContext else if (command == Minput_status_draw) { gchar *status; status = ibus_m17n_mtext_to_utf8 (m17n->context->status); diff --git a/ibus-m17n-honor-user-cflags.patch b/ibus-m17n-honor-user-cflags.patch deleted file mode 100644 index 334eef0..0000000 --- a/ibus-m17n-honor-user-cflags.patch +++ /dev/null @@ -1,170 +0,0 @@ -From 3f8feaf9ab19f28f4bb7a121b34a844596a01472 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Wed, 26 Sep 2012 10:03:00 +0900 -Subject: [PATCH] Pass user-supplied CFLAGS to configure. - -Also fix several compiler warnings. - -BUG=none - -Review URL: https://codereview.appspot.com/6564047 ---- - autogen.sh | 4 ++-- - src/engine.c | 22 +++------------------- - src/m17nutil.c | 15 +++++++-------- - src/setup.c | 17 +++++++++-------- - 4 files changed, 21 insertions(+), 37 deletions(-) - -Index: ibus-m17n-1.3.4/autogen.sh -=================================================================== ---- ibus-m17n-1.3.4.orig/autogen.sh -+++ ibus-m17n-1.3.4/autogen.sh -@@ -18,8 +18,8 @@ which gnome-autogen.sh || { - exit 1 - } - --export CFLAGS="-g -O0" --export CXXFLAGS="$CFLAGS" -+export CFLAGS=${CFLAGS-"-Wall"} -+export CXXFLAGS=${CXXFLAGS-"$CFLAGS"} - - ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" - REQUIRED_AUTOMAKE_VERSION=1.10 -Index: ibus-m17n-1.3.4/src/engine.c -=================================================================== ---- ibus-m17n-1.3.4.orig/src/engine.c -+++ ibus-m17n-1.3.4/src/engine.c -@@ -77,14 +77,6 @@ static void ibus_m17n_engine_focus_out - static void ibus_m17n_engine_reset (IBusEngine *engine); - static void ibus_m17n_engine_enable (IBusEngine *engine); - static void ibus_m17n_engine_disable (IBusEngine *engine); --static void ibus_engine_set_cursor_location (IBusEngine *engine, -- gint x, -- gint y, -- gint w, -- gint h); --static void ibus_m17n_engine_set_capabilities -- (IBusEngine *engine, -- guint caps); - static void ibus_m17n_engine_page_up (IBusEngine *engine); - static void ibus_m17n_engine_page_down (IBusEngine *engine); - static void ibus_m17n_engine_cursor_up (IBusEngine *engine); -@@ -93,12 +85,6 @@ static void ibus_m17n_engine_property_ac - (IBusEngine *engine, - const gchar *prop_name, - guint prop_state); --static void ibus_m17n_engine_property_show -- (IBusEngine *engine, -- const gchar *prop_name); --static void ibus_m17n_engine_property_hide -- (IBusEngine *engine, -- const gchar *prop_name); - - static void ibus_m17n_engine_commit_string - (IBusM17NEngine *m17n, -@@ -1247,7 +1233,9 @@ ibus_m17n_engine_callback (MInputContext - &anchor_pos); - nchars = ibus_text_get_length (text); - nbytes = g_utf8_offset_to_pointer (text->text, nchars) - text->text; -- mt = mconv_decode_buffer (Mcoding_utf_8, text->text, nbytes); -+ mt = mconv_decode_buffer (Mcoding_utf_8, -+ (const unsigned char *) text->text, -+ nbytes); - g_object_unref (text); - - len = (long) mplist_value (m17n->context->plist); -Index: ibus-m17n-1.3.4/src/m17nutil.c -=================================================================== ---- ibus-m17n-1.3.4.orig/src/m17nutil.c -+++ ibus-m17n-1.3.4/src/m17nutil.c -@@ -55,7 +55,9 @@ ibus_m17n_mtext_to_utf8 (MText *text) - bufsize = (mtext_len (text) + 1) * 6; - buf = (gchar *) g_malloc (bufsize); - -- mconv_rebind_buffer (utf8_converter, buf, bufsize); -+ mconv_rebind_buffer (utf8_converter, -+ (const unsigned char *) buf, -+ bufsize); - mconv_encode (utf8_converter, text); - - buf [utf8_converter->nbytes] = 0; -@@ -78,7 +80,9 @@ ibus_m17n_mtext_to_ucs4 (MText *text, gl - bufsize = (mtext_len (text) + 1) * 6; - buf = (gchar *) g_malloc (bufsize); - -- mconv_rebind_buffer (utf8_converter, buf, bufsize); -+ mconv_rebind_buffer (utf8_converter, -+ (const unsigned char *) buf, -+ bufsize); - if (mconv_encode (utf8_converter, text) < 0) { - g_free (buf); - return NULL; -@@ -204,17 +208,12 @@ ibus_m17n_list_engines (void) - if (l) { - /* check candidates encoding */ - MPlist *sl; -- MSymbol varname; -- MText *vardesc; -- MSymbol varunknown; - MSymbol varcharset; - - sl = mplist_value (l); -- varname = mplist_value (sl); -+ /* L = (VAR-NAME DESCRIPTION 'nil' VALUE) */ - sl = mplist_next (sl); -- vardesc = mplist_value (sl); - sl = mplist_next (sl); -- varunknown = mplist_value (sl); - sl = mplist_next (sl); - varcharset = mplist_value (sl); - -Index: ibus-m17n-1.3.4/src/setup.c -=================================================================== ---- ibus-m17n-1.3.4.orig/src/setup.c -+++ ibus-m17n-1.3.4/src/setup.c -@@ -73,7 +73,9 @@ parse_m17n_value (MPlist *plist, gchar * - if (mplist_key (plist) == Mtext) { - MText *mtext; - -- mtext = mconv_decode_buffer (Mcoding_utf_8, text, strlen (text)); -+ mtext = mconv_decode_buffer (Mcoding_utf_8, -+ (const unsigned char *) text, -+ strlen (text)); - value = mplist (); - mplist_add (value, Mtext, mtext); - return value; -@@ -372,10 +374,10 @@ setup_dialog_load_config (SetupDialog *d - static gchar * - _gdk_color_to_string (GdkColor *color) - { -- g_strdup_printf ("#%02X%02X%02X", -- (color->red & 0xFF00) >> 8, -- (color->green & 0xFF00) >> 8, -- (color->blue & 0xFF00) >> 8); -+ return g_strdup_printf ("#%02X%02X%02X", -+ (color->red & 0xFF00) >> 8, -+ (color->green & 0xFF00) >> 8, -+ (color->blue & 0xFF00) >> 8); - } - - static void -@@ -428,7 +430,7 @@ save_m17n_options (SetupDialog *dialog) - gboolean retval = TRUE; - - if (!gtk_tree_model_get_iter_first (model, &iter)) -- return; -+ return FALSE; - - do { - gtk_tree_model_get (model, &iter, -@@ -567,9 +569,8 @@ start (const gchar *engine_name) - { - IBusBus *bus; - IBusConfig *config; -- gchar **strv, *section; -+ gchar **strv; - SetupDialog *dialog; -- GObject *object; - - ibus_init (); - ibus_m17n_init_common (); diff --git a/ibus-m17n-translit-layout.patch b/ibus-m17n-translit-layout.patch deleted file mode 100644 index 87e236d..0000000 --- a/ibus-m17n-translit-layout.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: ibus-m17n-1.3.4/src/default.xml.in.in -=================================================================== ---- ibus-m17n-1.3.4.orig/src/default.xml.in.in -+++ ibus-m17n-1.3.4/src/default.xml.in.in -@@ -231,6 +231,11 @@ - m17n:ja:anthy - TRUE - -+ -+ -+ m17n:*:translit -+ default -+ - - - m17n:as:* diff --git a/ibus-m17n-virtkbd.patch b/ibus-m17n-virtkbd.patch deleted file mode 100644 index ef9a04f..0000000 --- a/ibus-m17n-virtkbd.patch +++ /dev/null @@ -1,637 +0,0 @@ -From 98ae1c6dbd279e17ef3c20493a37c959f1b1e61f Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Fri, 30 Mar 2012 12:36:08 +0900 -Subject: [PATCH 4/4] Add virtual keyboard support. - ---- - configure.ac | 17 +++ - src/Makefile.am | 5 + - src/default.xml.in.in | 111 +++++++++++++++++++ - src/engine.c | 289 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/m17nutil.c | 10 ++- - src/m17nutil.h | 3 + - 6 files changed, 434 insertions(+), 1 deletions(-) - -Index: ibus-m17n-1.3.4/configure.ac -=================================================================== ---- ibus-m17n-1.3.4.orig/configure.ac -+++ ibus-m17n-1.3.4/configure.ac -@@ -88,6 +88,23 @@ fi - - AM_CONDITIONAL([HAVE_GTK],[test x$with_gtk != xno]) - -+dnl check eekboard for virtual keyboard -+AC_MSG_CHECKING([whether you enable eekboard]) -+AC_ARG_ENABLE(eekboard, -+ AS_HELP_STRING([--enable-eekboard=no/yes], -+ [Enable eekboard default=yes]), -+ enable_eekboard=$enableval, -+ enable_eekboard=yes) -+ -+if test x$enable_eekboard = xyes; then -+ PKG_CHECK_MODULES([EEKBOARD], [eekboard-0.90], , enable_xtest=no) -+ if test x$enable_eekboard = xyes; then -+ AC_DEFINE([HAVE_EEKBOARD], [1], [Define if eekboard is found]) -+ fi -+fi -+AM_CONDITIONAL(ENABLE_EEKBOARD, [test x$enable_eekboard = xyes]) -+AC_MSG_RESULT($enable_eekboard) -+ - # check if minput_list, which is available in m17n-lib 1.6.2+ (CVS) - save_CFLAGS="$CFLAGS" - save_LIBS="$LIBS" -Index: ibus-m17n-1.3.4/src/Makefile.am -=================================================================== ---- ibus-m17n-1.3.4.orig/src/Makefile.am -+++ ibus-m17n-1.3.4/src/Makefile.am -@@ -65,10 +65,15 @@ ibus_engine_m17n_SOURCES = \ - engine.c \ - engine.h \ - $(NULL) -+ibus_engine_m17n_CFLAGS = \ -+ @EEKBOARD_CFLAGS@ \ -+ $(AM_CFLAGS) \ -+ $(NULL) - ibus_engine_m17n_LDADD = \ - libm17ncommon.la \ - @IBUS_LIBS@ \ - @M17N_LIBS@ \ -+ @EEKBOARD_LIBS@ \ - $(NULL) - - if HAVE_GTK -Index: ibus-m17n-1.3.4/src/default.xml.in.in -=================================================================== ---- ibus-m17n-1.3.4.orig/src/default.xml.in.in -+++ ibus-m17n-1.3.4/src/default.xml.in.in -@@ -11,6 +11,7 @@ - 0 - FALSE - -+ us - - - -@@ -440,4 +441,114 @@ - m17n:zh:tonepy* - - -+ -+ -+ -+ m17n:ar:kbd -+ ar,us -+ -+ -+ m17n:be:kbd -+ be,us -+ -+ -+ m17n:fa:kbd -+ fa,us -+ -+ -+ m17n:he:kbd -+ he,us -+ -+ -+ m17n:kk:kbd -+ kk,us -+ -+ -+ m17n:ks:kbd -+ ks,us -+ -+ -+ m17n:my:kbd -+ my,us -+ -+ -+ m17n:ru:kbd -+ ru,us -+ -+ -+ m17n:ua:kbd -+ ua,us -+ -+ -+ m17n:ug:kbd -+ ug,us -+ -+ -+ m17n:be:kbd -+ be,us -+ -+ -+ m17n:th:* -+ th,us -+ -+ -+ m17n:zh:bopomofo -+ zh-bopomofo,us -+ -+ -+ m17n:as:inscript -+ as-inscript,us -+ -+ -+ m17n:bn:inscript -+ bn-inscript,us -+ -+ -+ m17n:gu:inscript -+ gu-inscript,us -+ -+ -+ m17n:hi:inscript -+ hi-inscript,us -+ -+ -+ m17n:kn:inscript -+ kn-inscript,us -+ -+ -+ m17n:ks:inscript -+ kn-inscript,us -+ -+ -+ m17n:mai:inscript -+ mai-inscript,us -+ -+ -+ m17n:ml:inscript -+ ml-inscript,us -+ -+ -+ m17n:mr:inscript -+ mr-inscript,us -+ -+ -+ m17n:or:inscript -+ or-inscript,us -+ -+ -+ m17n:pa:inscript -+ pa-inscript,us -+ -+ -+ m17n:sd:inscript -+ sd-inscript,us -+ -+ -+ m17n:ta:inscript -+ ta-inscript,us -+ -+ -+ m17n:te:inscript -+ te-inscript,us -+ - -Index: ibus-m17n-1.3.4/src/engine.c -=================================================================== ---- ibus-m17n-1.3.4.orig/src/engine.c -+++ ibus-m17n-1.3.4/src/engine.c -@@ -7,6 +7,9 @@ - #include - #include - #include "m17nutil.h" -+#ifdef HAVE_EEKBOARD -+#include -+#endif /* HAVE_EEKBOARD */ - #include "engine.h" - - typedef struct _IBusM17NEngine IBusM17NEngine; -@@ -18,10 +21,12 @@ struct _IBusM17NEngine { - /* members */ - MInputContext *context; - IBusLookupTable *table; -+ - IBusProperty *status_prop; - #ifdef HAVE_SETUP - IBusProperty *setup_prop; - #endif /* HAVE_SETUP */ -+ IBusProperty *virtkbd_prop; - IBusPropList *prop_list; - }; - -@@ -35,9 +40,16 @@ struct _IBusM17NEngineClass { - gint preedit_underline; - IBusPreeditFocusMode preedit_focus_mode; - gint lookup_table_orientation; -+ gchar *virtual_keyboard; - - gchar *title; - MInputMethod *im; -+ -+#ifdef HAVE_EEKBOARD -+ EekboardContext *econtext; -+ GSList *keyboards; -+ GSList *keyboards_head; -+#endif /* HAVE_EEKBOARD */ - }; - - /* functions prototype */ -@@ -101,13 +113,185 @@ static IBusEngineClass *parent_class = N - - static IBusConfig *config = NULL; - -+#ifdef HAVE_EEKBOARD -+static EekboardClient *eekboard = NULL; -+ -+static void -+client_destroyed_cb (EekboardClient *client, -+ gpointer user_data) -+{ -+ if (eekboard) { -+ g_object_unref (eekboard); -+ eekboard = NULL; -+ } -+} -+ -+static void -+context_destroyed_cb (EekboardContext *context, -+ IBusM17NEngineClass *klass) -+{ -+ if (klass->econtext) { -+ g_object_unref (klass->econtext); -+ klass->econtext = NULL; -+ } -+} -+ -+static EekboardContext * -+create_context (IBusM17NEngineClass *klass) -+{ -+ EekboardContext *context = eekboard_client_create_context (eekboard, -+ "ibus-m17n", -+ NULL); -+ g_signal_connect (context, "destroyed", -+ G_CALLBACK (context_destroyed_cb), klass); -+ -+ g_slist_free (klass->keyboards); -+ klass->keyboards = NULL; -+ -+ gchar **keyboards = g_strsplit (klass->virtual_keyboard, ",", -1); -+ gchar **p; -+ -+ for (p = keyboards; *p; p++) { -+ guint keyboard = eekboard_context_add_keyboard (context, -+ g_strstrip (*p), -+ NULL); -+ klass->keyboards = g_slist_prepend (klass->keyboards, -+ GUINT_TO_POINTER (keyboard)); -+ } -+ g_strfreev (keyboards); -+ -+ klass->keyboards = g_slist_reverse (klass->keyboards); -+ klass->keyboards_head = klass->keyboards; -+ -+ eekboard_context_set_keyboard (context, -+ GPOINTER_TO_UINT (klass->keyboards_head->data), -+ NULL); -+ return context; -+} -+ -+static void -+key_activated_cb (EekboardContext *context, -+ guint keycode, -+ EekSymbol *symbol, -+ guint modifiers, -+ IBusM17NEngine *m17n) -+{ -+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n); -+ IBusEngine *engine = IBUS_ENGINE (m17n); -+ -+ if (EEK_IS_TEXT (symbol)) { -+ const gchar *string; -+ IBusText *text; -+ -+ string = eek_text_get_text (EEK_TEXT (symbol)); -+ text = ibus_text_new_from_static_string (string); -+ ibus_engine_commit_text (engine, text); -+ } else if (EEK_IS_KEYSYM (symbol)) { -+ guint keyval = eek_keysym_get_xkeysym (EEK_KEYSYM (symbol)); -+ ibus_engine_forward_key_event (engine, -+ keyval, -+ 0, -+ modifiers); -+ ibus_engine_forward_key_event (engine, -+ keyval, -+ 0, -+ modifiers | IBUS_RELEASE_MASK); -+ } else if (g_strcmp0 (eek_symbol_get_name (symbol), -+ "cycle-keyboard") == 0) { -+ klass->keyboards_head = g_slist_next (klass->keyboards_head); -+ if (klass->keyboards_head == NULL) -+ klass->keyboards_head = klass->keyboards; -+ eekboard_context_set_keyboard (klass->econtext, -+ GPOINTER_TO_UINT (klass->keyboards_head->data), -+ NULL); -+ } -+} -+ -+static void -+init_eekboard () -+{ -+ GDBusConnection *connection; -+ GError *error; -+ -+ error = NULL; -+ connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); -+ if (connection == NULL) { -+ g_printerr ("Can't connect to the session bus: %s\n", -+ error->message); -+ g_error_free (error); -+ return; -+ } -+ -+ eek_init (); -+ -+ eekboard = eekboard_client_new (connection, NULL); -+ g_object_unref (connection); -+ -+ g_signal_connect (eekboard, "destroyed", -+ G_CALLBACK (client_destroyed_cb), NULL); -+} -+#endif /* HAVE_EEKBOARD */ -+ -+static GType ibus_m17n_virtual_keyboard_implementation_type = 0; -+ -+typedef enum { -+ IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_EEKBOARD, -+ IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_IOK -+} IBusM17NVirtualKeyboardImplementation; -+ -+#ifdef HAVE_EEKBOARD -+static IBusM17NVirtualKeyboardImplementation virtual_keyboard_implementation = -+ IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_EEKBOARD; -+#else -+static IBusM17NVirtualKeyboardImplementation virtual_keyboard_implementation = -+ IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_IOK; -+#endif -+ - void - ibus_m17n_init (IBusBus *bus) - { -+ static const GEnumValue evalues[] = { -+ { IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_EEKBOARD, -+ "IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_EEKBOARD", -+ "eekboard" }, -+ { IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_IOK, -+ "IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_IOK", -+ "iok" } -+ }; -+ -+ GVariant *values; -+ - config = ibus_bus_get_config (bus); - if (config) - g_object_ref_sink (config); - ibus_m17n_init_common (); -+ -+ ibus_m17n_virtual_keyboard_implementation_type = -+ g_enum_register_static ("IBusM17NVirtualKeyboardImplementation", -+ evalues); -+ g_type_class_ref (ibus_m17n_virtual_keyboard_implementation_type); -+ values = ibus_config_get_values (config, "engine/M17N"); -+ if (values != NULL) { -+ GVariant *value = -+ g_variant_lookup_value (values, -+ "virtual_keyboard_implementation", -+ G_VARIANT_TYPE_STRING); -+ if (value != NULL) { -+ GEnumClass *eclass = G_ENUM_CLASS (g_type_class_ref (ibus_m17n_virtual_keyboard_implementation_type)); -+ GEnumValue *evalue = g_enum_get_value_by_nick (eclass, g_variant_get_string (value, NULL)); -+ if (evalue != NULL) { -+ virtual_keyboard_implementation = evalue->value; -+ } -+ } -+ } -+ -+ if (virtual_keyboard_implementation == IBUS_M17N_VIRTUAL_KEYBOARD_IMPLEMENTATION_EEKBOARD) { -+#ifdef HAVE_EEKBOARD -+ init_eekboard (); -+#else -+ g_warning ("eekboard is not supported"); -+#endif /* HAVE_EEKBOARD */ -+ } - } - - static gboolean -@@ -268,6 +452,7 @@ ibus_m17n_engine_class_init (IBusM17NEng - IBUS_ENGINE_PREEDIT_COMMIT : - IBUS_ENGINE_PREEDIT_CLEAR; - klass->lookup_table_orientation = IBUS_ORIENTATION_SYSTEM; -+ klass->virtual_keyboard = engine_config->virtual_keyboard; - - ibus_m17n_engine_config_free (engine_config); - -@@ -317,6 +502,11 @@ ibus_m17n_engine_class_init (IBusM17NEng - klass); - - klass->im = NULL; -+ -+#if HAVE_EEKBOARD -+ if (eekboard) -+ klass->econtext = create_context (klass); -+#endif /* HAVE_EEKBOARD */ - } - - static void -@@ -354,6 +544,7 @@ ibus_m17n_engine_init (IBusM17NEngine *m - { - IBusText* label; - IBusText* tooltip; -+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n); - - m17n->prop_list = ibus_prop_list_new (); - g_object_ref_sink (m17n->prop_list); -@@ -386,6 +577,36 @@ ibus_m17n_engine_init (IBusM17NEngine *m - ibus_prop_list_append (m17n->prop_list, m17n->setup_prop); - #endif /* HAVE_SETUP */ - -+ label = ibus_text_new_from_string ("Screen Keyboard"); -+ tooltip = ibus_text_new_from_string ("Show screen keyboard"); -+ m17n->virtkbd_prop = ibus_property_new ("virtual-keyboard", -+ PROP_TYPE_NORMAL, -+ label, -+ "input-keyboard", -+ tooltip, -+ TRUE, -+ FALSE, -+ PROP_STATE_UNCHECKED, -+ NULL); -+ g_object_ref_sink (m17n->virtkbd_prop); -+ ibus_prop_list_append (m17n->prop_list, m17n->virtkbd_prop); -+ -+#ifdef HAVE_EEKBOARD -+ if (eekboard != NULL) -+ ibus_property_set_visible (m17n->virtkbd_prop, TRUE); -+ else -+#endif /* HAVE_EEKBOARD */ -+ { -+ gchar *lang = NULL, *name = NULL; -+ if (ibus_m17n_scan_class_name (G_OBJECT_CLASS_NAME (klass), -+ &lang, -+ &name) && -+ g_str_has_prefix (name, "inscript")) -+ ibus_property_set_visible (m17n->virtkbd_prop, TRUE); -+ g_free (lang); -+ g_free (name); -+ } -+ - m17n->table = ibus_lookup_table_new (9, 0, TRUE, TRUE); - g_object_ref_sink (m17n->table); - m17n->context = NULL; -@@ -471,6 +692,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine - } - #endif /* HAVE_SETUP */ - -+ if (m17n->virtkbd_prop) { -+ g_object_unref (m17n->virtkbd_prop); -+ m17n->virtkbd_prop = NULL; -+ } -+ - if (m17n->table) { - g_object_unref (m17n->table); - m17n->table = NULL; -@@ -716,6 +942,14 @@ ibus_m17n_engine_enable (IBusEngine *eng - /* Issue a dummy ibus_engine_get_surrounding_text() call to tell - input context that we will use surrounding-text. */ - ibus_engine_get_surrounding_text (engine, NULL, NULL, NULL); -+ -+#ifdef HAVE_EEKBOARD -+ if (eekboard) { -+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n); -+ if (klass->econtext) -+ eekboard_client_push_context (eekboard, klass->econtext, NULL); -+ } -+#endif /* HAVE_EEKBOARD */ - } - - static void -@@ -725,6 +959,14 @@ ibus_m17n_engine_disable (IBusEngine *en - - ibus_m17n_engine_focus_out (engine); - parent_class->disable (engine); -+ -+#ifdef HAVE_EEKBOARD -+ if (eekboard) { -+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n); -+ if (klass->econtext) -+ eekboard_client_pop_context (eekboard, NULL); -+ } -+#endif /* HAVE_EEKBOARD */ - } - - static void -@@ -772,6 +1014,7 @@ ibus_m17n_engine_property_activate (IBus - guint prop_state) - { - IBusM17NEngine *m17n = (IBusM17NEngine *) engine; -+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n); - - #ifdef HAVE_SETUP - if (g_strcmp0 (prop_name, "setup") == 0) { -@@ -787,6 +1030,53 @@ ibus_m17n_engine_property_activate (IBus - } - #endif /* HAVE_SETUP */ - -+ if (g_strcmp0 (prop_name, "virtual-keyboard") == 0) { -+#ifdef HAVE_EEKBOARD -+ if (eekboard) { -+ if (klass->econtext == NULL) { -+ klass->econtext = create_context (klass); -+ eekboard_client_push_context (eekboard, klass->econtext, NULL); -+ } -+ g_signal_handlers_disconnect_by_func (klass->econtext, -+ G_CALLBACK (key_activated_cb), -+ m17n); -+ g_signal_connect (klass->econtext, "key-activated", -+ G_CALLBACK (key_activated_cb), m17n); -+ eekboard_context_show_keyboard (klass->econtext, NULL); -+ } else -+#endif /* HAVE_EEKBOARD */ -+ { -+ gchar *lang = NULL, *name = NULL; -+ -+ if (ibus_m17n_scan_class_name (G_OBJECT_CLASS_NAME (klass), -+ &lang, -+ &name) && -+ g_str_has_prefix (name, "inscript")) { -+ gchar *argv[4]; -+ GError *error; -+ -+ argv[0] = "iok"; -+ argv[1] = "-n"; -+ argv[2] = lang; -+ argv[3] = NULL; -+ error = NULL; -+ if (!g_spawn_async (NULL, -+ argv, -+ NULL, -+ G_SPAWN_SEARCH_PATH, -+ NULL, -+ NULL, -+ NULL, -+ &error)) { -+ g_warning ("can't spawn iok: %s", error->message); -+ g_error_free (error); -+ } -+ } -+ g_free (lang); -+ g_free (name); -+ } -+ } -+ - parent_class->property_activate (engine, prop_name, prop_state); - } - -Index: ibus-m17n-1.3.4/src/m17nutil.c -=================================================================== ---- ibus-m17n-1.3.4.orig/src/m17nutil.c -+++ ibus-m17n-1.3.4/src/m17nutil.c -@@ -18,7 +18,8 @@ typedef enum { - ENGINE_CONFIG_SYMBOL_MASK = 1 << 1, - ENGINE_CONFIG_LONGNAME_MASK = 1 << 2, - ENGINE_CONFIG_LAYOUT_MASK = 1 << 3, -- ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 4 -+ ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 4, -+ ENGINE_CONFIG_VIRTUAL_KEYBOARD_MASK = 1 << 5 - } EngineConfigMask; - - struct _EngineConfigNode { -@@ -276,6 +277,8 @@ ibus_m17n_get_engine_config (const gchar - config->longname = cnode->config.longname; - if (cnode->mask & ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK) - config->preedit_highlight = cnode->config.preedit_highlight; -+ if (cnode->mask & ENGINE_CONFIG_VIRTUAL_KEYBOARD_MASK) -+ config->virtual_keyboard = cnode->config.virtual_keyboard; - if (cnode->mask & ENGINE_CONFIG_LAYOUT_MASK) - config->layout = cnode->config.layout; - } -@@ -333,6 +336,11 @@ ibus_m17n_engine_config_parse_xml_node ( - cnode->mask |= ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK; - continue; - } -+ if (g_strcmp0 (sub_node->name , "virtual-keyboard") == 0) { -+ cnode->config.virtual_keyboard = g_strdup (sub_node->text); -+ cnode->mask |= ENGINE_CONFIG_VIRTUAL_KEYBOARD_MASK; -+ continue; -+ } - g_warning (" element contains invalid element <%s>", - sub_node->name); - } -Index: ibus-m17n-1.3.4/src/m17nutil.h -=================================================================== ---- ibus-m17n-1.3.4.orig/src/m17nutil.h -+++ ibus-m17n-1.3.4/src/m17nutil.h -@@ -25,6 +25,9 @@ struct _IBusM17NEngineConfig { - - /* whether to highlight preedit */ - gboolean preedit_highlight; -+ -+ /* virtual keyboard type */ -+ gchar *virtual_keyboard; - }; - - typedef struct _IBusM17NEngineConfig IBusM17NEngineConfig; diff --git a/ibus-m17n-xkb-options.patch b/ibus-m17n-xkb-options.patch index a4179ed..1e74113 100644 --- a/ibus-m17n-xkb-options.patch +++ b/ibus-m17n-xkb-options.patch @@ -1,19 +1,8 @@ -From ab9d608fdb6054b4b135f891ad5fa1fa7ce27c7b Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Mon, 8 Aug 2011 09:59:28 +0900 -Subject: [PATCH 1/4] Set XKB layout option via default.xml. - ---- - src/default.xml.in.in | 9 +++++++++ - src/m17nutil.c | 13 +++++++++++-- - src/m17nutil.h | 3 +++ - 3 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/src/default.xml.in.in b/src/default.xml.in.in -index 9f5a01e..beae494 100644 ---- a/src/default.xml.in.in -+++ b/src/default.xml.in.in -@@ -158,6 +158,15 @@ +Index: ibus-m17n-1.3.4/src/default.xml +=================================================================== +--- ibus-m17n-1.3.4.orig/src/default.xml ++++ ibus-m17n-1.3.4/src/default.xml +@@ -184,6 +184,15 @@ m17n:si:samanala 0 @@ -29,10 +18,10 @@ index 9f5a01e..beae494 100644 m17n:zh:cangjie -diff --git a/src/m17nutil.c b/src/m17nutil.c -index 51026b2..0b46531 100644 ---- a/src/m17nutil.c -+++ b/src/m17nutil.c +Index: ibus-m17n-1.3.4/src/m17nutil.c +=================================================================== +--- ibus-m17n-1.3.4.orig/src/m17nutil.c ++++ ibus-m17n-1.3.4/src/m17nutil.c @@ -17,7 +17,8 @@ typedef enum { ENGINE_CONFIG_RANK_MASK = 1 << 0, ENGINE_CONFIG_SYMBOL_MASK = 1 << 1, @@ -43,25 +32,25 @@ index 51026b2..0b46531 100644 } EngineConfigMask; struct _EngineConfigNode { -@@ -133,7 +134,7 @@ ibus_m17n_engine_new (MSymbol lang, +@@ -137,7 +138,7 @@ ibus_m17n_engine_new (MSymbol lang, "language", msymbol_name (lang), "license", "GPL", "icon", engine_icon ? engine_icon : "", -- "layout", "us", -+ "layout", config->layout ? config->layout : "us", +- "layout", "default", ++ "layout", config->layout ? config->layout : "default", "rank", config->rank, "symbol", config->symbol ? config->symbol : "", "setup", engine_setup, -@@ -275,6 +276,8 @@ ibus_m17n_get_engine_config (const gchar *engine_name) +@@ -272,6 +273,8 @@ ibus_m17n_get_engine_config (const gchar + config->symbol = cnode->config.symbol; + if (cnode->mask & ENGINE_CONFIG_LONGNAME_MASK) config->longname = cnode->config.longname; - if (cnode->mask & ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK) - config->preedit_highlight = cnode->config.preedit_highlight; + if (cnode->mask & ENGINE_CONFIG_LAYOUT_MASK) + config->layout = cnode->config.layout; + if (cnode->mask & ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK) + config->preedit_highlight = cnode->config.preedit_highlight; } - } - return config; -@@ -315,6 +318,12 @@ ibus_m17n_engine_config_parse_xml_node (EngineConfigNode *cnode, +@@ -314,6 +317,12 @@ ibus_m17n_engine_config_parse_xml_node ( cnode->mask |= ENGINE_CONFIG_LONGNAME_MASK; continue; } @@ -74,10 +63,10 @@ index 51026b2..0b46531 100644 if (g_strcmp0 (sub_node->name , "preedit-highlight") == 0) { if (g_ascii_strcasecmp ("TRUE", sub_node->text) == 0) cnode->config.preedit_highlight = TRUE; -diff --git a/src/m17nutil.h b/src/m17nutil.h -index d790cf8..93faad4 100644 ---- a/src/m17nutil.h -+++ b/src/m17nutil.h +Index: ibus-m17n-1.3.4/src/m17nutil.h +=================================================================== +--- ibus-m17n-1.3.4.orig/src/m17nutil.h ++++ ibus-m17n-1.3.4/src/m17nutil.h @@ -20,6 +20,9 @@ struct _IBusM17NEngineConfig { /* overridding longname shown on panel */ gchar *longname; @@ -88,6 +77,3 @@ index d790cf8..93faad4 100644 /* whether to highlight preedit */ gboolean preedit_highlight; }; --- -1.7.7.6 - diff --git a/ibus-m17n.spec b/ibus-m17n.spec index 7d93385..2bebcf4 100644 --- a/ibus-m17n.spec +++ b/ibus-m17n.spec @@ -1,40 +1,19 @@ -%if (0%{?fedora} > 14 || 0%{?rhel} > 6) -%global require_ibus_version 1.3.99.20110817 -%global require_eekboard_version 1.0.6 -%else -%global require_ibus_version 1.3.0 -%global require_eekboard_version 0.0.6 -%endif -%global have_bridge_hotkey 0 - -%if (0%{?fedora} > 14 || 0%{?rhel} > 6) -%global _with_gtk --with-gtk=3.0 -%else -%global _with_gtk --with-gtk=2.0 -%endif - -%if (0%{?fedora} > 16 || 0%{?rhel} > 6) -%global _enable_eekboard --enable-eekboard -%endif - +%global require_ibus_version 1.4.0 Name: ibus-m17n Version: 1.3.4 -Release: 7%{?dist} +Release: 8%{?dist} Summary: The M17N engine for IBus platform License: GPLv2+ Group: System Environment/Libraries URL: http://code.google.com/p/ibus/ Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz -# Patch0: ibus-m17n-HEAD.patch +Patch0: ibus-m17n-HEAD.patch +# Fedora specific patches (not upstreamable): +# Enable lv3:ralt_switch option for some Indic engines in default.xml. Patch1: ibus-m17n-xkb-options.patch +# Don't make the status button clickable (maybe obsolete). Patch2: ibus-m17n-hide-title-status.patch -Patch3: ibus-m17n-blacklist-engines.patch -Patch4: ibus-m17n-virtkbd.patch -Patch5: ibus-m17n-fix-mtext-config.patch -Patch6: ibus-m17n-translit-layout.patch -Patch7: ibus-m17n-honor-user-cflags.patch -Patch8: ibus-m17n-desktop-file.patch # The following BR is for autogen and not necessary when packging # released tarballs. @@ -44,19 +23,12 @@ BuildRequires: libtool BuildRequires: pkgconfig BuildRequires: gnome-common BuildRequires: m17n-lib-devel -%if (0%{?fedora} > 14 || 0%{?rhel} > 6) BuildRequires: gtk3-devel -%else -BuildRequires: gtk2-devel -%endif BuildRequires: ibus-devel >= %{require_ibus_version} -BuildRequires: eekboard-devel >= %{require_eekboard_version} BuildRequires: desktop-file-utils Requires: ibus >= %{require_ibus_version} Requires: m17n-lib -Requires: eekboard-service >= %{require_eekboard_version} -Requires: iok %description M17N engine for IBus input platform. It allows input of many languages using @@ -65,20 +37,14 @@ the input table maps from m17n-db. %prep %setup -q -#patch0 -p1 -b .HEAD +%patch0 -p1 -b .HEAD %patch1 -p1 -b .xkb-options %patch2 -p1 -b .hide-title-status -%patch3 -p1 -b .blacklist-engines -%patch4 -p1 -b .virtkbd -%patch5 -p1 -b .fix-mtext-config -%patch6 -p1 -b .translit-layout -%patch7 -p1 -b .honor-user-cflags -%patch8 -p1 -b .desktop-file NOCONFIGURE=1 ./autogen.sh %build -%configure --disable-static %{?_with_gtk} %{?_with_hotkeys} %{?_enable_eekboard} +%configure --disable-static --with-gtk=3.0 # make -C po update-gmo make %{?_smp_mflags} @@ -98,6 +64,12 @@ desktop-file-validate ${RPM_BUILD_ROOT}%{_datadir}/applications/ibus-setup-m17n. %{_datadir}/applications/ibus-setup-m17n.desktop %changelog +* Fri Apr 26 2013 Daiki Ueno - 1.3.4-8 +- Update ibus-m17n-HEAD.patch to the latest upstream master +- Remove unnecessary and not upstreamable patches +- Use gtk3 always +- Fix bug 912592 - ibus-m17n should use default keyboard in most cases + * Thu Feb 14 2013 Fedora Release Engineering - 1.3.4-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild