public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Update to ibus-1.1.0.20090331
@ 2026-05-31 2:04 Peng Huang
0 siblings, 0 replies; only message in thread
From: Peng Huang @ 2026-05-31 2:04 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/ibus
Branch : autotool
Commit : 95e3c55ee4e8de3e088a6293352433a94fe73ad8
Author : Peng Huang <phuang@fedoraproject.org>
Date : 2009-03-31T03:55:08+00:00
Stats : +12/-5960 in 4 file(s)
URL : https://src.fedoraproject.org/rpms/ibus/c/95e3c55ee4e8de3e088a6293352433a94fe73ad8?branch=autotool
Log:
Update to ibus-1.1.0.20090331
---
diff --git a/.cvsignore b/.cvsignore
index 2edcfb9..c7a6516 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-ibus-1.1.0.20090311.tar.gz
+ibus-1.1.0.20090331.tar.gz
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index a8e5d3d..e69de29 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,5953 +0,0 @@
-diff --git a/autogen.sh b/autogen.sh
-index c34acab..addc0bd 100755
---- a/autogen.sh
-+++ b/autogen.sh
-@@ -2,13 +2,13 @@
- set -e
- set -x
-
--autopoint --force
--libtoolize --automake --copy --force
--gtkdocize --copy #--flavour=no-tmpl
--aclocal -I m4 --force
--autoheader --force
--automake --add-missing --copy --force
--autoconf --force
-+autopoint --force || exit 1
-+libtoolize --automake --copy --force || exit 1
-+gtkdocize --copy || exit 1 #--flavour=no-tmpl
-+aclocal -I m4 --force || exit 1
-+autoheader --force || exit 1
-+automake --add-missing --copy --force || exit 1
-+autoconf --force || exit 1
- export CFLAGS="-Wall -g -O0 -Wl,--no-undefined"
- export CXXFLAGS="$CFLAGS"
--./configure --enable-maintainer-mode $*
-+./configure --enable-maintainer-mode $* || exit 1
-diff --git a/bus/engineproxy.c b/bus/engineproxy.c
-index 647845b..e78fbcf 100644
---- a/bus/engineproxy.c
-+++ b/bus/engineproxy.c
-@@ -541,7 +541,11 @@ bus_engine_proxy_process_key_event_reply_cb (IBusPendingCall *pending,
-
- reply_message = dbus_pending_call_steal_reply (pending);
-
-- if ((error = ibus_error_new_from_message (reply_message)) != NULL) {
-+ if (reply_message == NULL) {
-+ call_data->func(FALSE, call_data->user_data);
-+ return;
-+ }
-+ else if ((error = ibus_error_new_from_message (reply_message)) != NULL) {
- g_warning ("%s: %s", error->name, error->message);
- ibus_message_unref (reply_message);
- ibus_error_free (error);
-diff --git a/bus/inputcontext.c b/bus/inputcontext.c
-index 4d66232..723f3af 100644
---- a/bus/inputcontext.c
-+++ b/bus/inputcontext.c
-@@ -1472,7 +1472,7 @@ bus_input_context_update_lookup_table (BusInputContext *context,
- if (priv->capabilities & IBUS_CAP_LOOKUP_TABLE) {
- bus_input_context_send_signal (context,
- "UpdateLookupTable",
-- IBUS_TYPE_TEXT, &(priv->lookup_table),
-+ IBUS_TYPE_LOOKUP_TABLE, &(priv->lookup_table),
- G_TYPE_BOOLEAN, &(priv->lookup_table_visible),
- G_TYPE_INVALID);
- }
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index 29e7753..f99e60a 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -26,14 +26,17 @@
- #include <ibus.h>
- #include "ibusimcontext.h"
-
--/* IBusIMContextPriv */
--struct _IBusIMContextPrivate {
-+struct _IBusIMContext {
-+ GtkIMContext parent;
-+
-+ /* instance members */
- GtkIMContext *slave;
- GdkWindow *client_window;
-+ GdkWindow *event_window;
-
- /* enabled */
- gboolean enable;
-- IBusInputContext *ibus_context;
-+ IBusInputContext *ibuscontext;
-
- /* preedit status */
- gchar *preedit_string;
-@@ -45,6 +48,12 @@ struct _IBusIMContextPrivate {
- gboolean has_focus;
-
- gint caps;
-+
-+};
-+
-+struct _IBusIMContextClass {
-+GtkIMContextClass parent;
-+ /* class members */
- };
-
- static guint _signal_commit_id = 0;
-@@ -53,17 +62,19 @@ static guint _signal_preedit_start_id = 0;
- static guint _signal_preedit_end_id = 0;
- static guint _signal_delete_surrounding_id = 0;
- static guint _signal_retrieve_surrounding_id = 0;
-+static GQuark _q_ibus_im_context = 0;
-+static gboolean _use_key_snooper = TRUE;
-
- /* functions prototype */
--static void ibus_im_context_class_init (IBusIMContextClass *klass);
--static void ibus_im_context_init (GObject *obj);
--static void ibus_im_context_finalize (GObject *obj);
--static void ibus_im_context_reset (GtkIMContext *context);
-+static void ibus_im_context_class_init (IBusIMContextClass *klass);
-+static void ibus_im_context_init (GObject *obj);
-+static void ibus_im_context_finalize (GObject *obj);
-+static void ibus_im_context_reset (GtkIMContext *context);
- static gboolean ibus_im_context_filter_keypress
- (GtkIMContext *context,
- GdkEventKey *key);
--static void ibus_im_context_focus_in (GtkIMContext *context);
--static void ibus_im_context_focus_out (GtkIMContext *context);
-+static void ibus_im_context_focus_in (GtkIMContext *context);
-+static void ibus_im_context_focus_out (GtkIMContext *context);
- static void ibus_im_context_get_preedit_string
- (GtkIMContext *context,
- gchar **str,
-@@ -72,6 +83,10 @@ static void ibus_im_context_get_preedit_string
- static void ibus_im_context_set_client_window
- (GtkIMContext *context,
- GdkWindow *client);
-+
-+static void ibus_im_context_set_event_window
-+ (IBusIMContext *ibusimcontext,
-+ GdkWindow *client);
- static void ibus_im_context_set_cursor_location
- (GtkIMContext *context,
- GdkRectangle *area);
-@@ -166,6 +181,30 @@ ibus_im_context_new (void)
- return obj;
- }
-
-+static gint
-+_key_snooper_cb (GtkWidget *widget,
-+ GdkEventKey *event,
-+ gpointer user_data)
-+{
-+ GdkWindow *gdkwindow;
-+ GtkIMContext *imcontext;
-+
-+ if (!_use_key_snooper)
-+ return 0;
-+
-+ gdkwindow = gtk_widget_get_window (widget);
-+
-+ if (gdkwindow == NULL)
-+ return 0;
-+
-+ imcontext = (GtkIMContext *) g_object_get_qdata ((GObject *) gdkwindow, _q_ibus_im_context);
-+
-+ if (imcontext == NULL)
-+ return 0;
-+
-+ return gtk_im_context_filter_keypress (imcontext, event);
-+}
-+
- static void
- ibus_im_context_class_init (IBusIMContextClass *klass)
- {
-@@ -174,8 +213,6 @@ ibus_im_context_class_init (IBusIMContextClass *klass)
-
- parent_class = (GtkIMContextClass *) g_type_class_peek_parent (klass);
-
-- g_type_class_add_private (klass, sizeof (IBusIMContextPrivate));
--
- im_context_class->reset = ibus_im_context_reset;
- im_context_class->focus_in = ibus_im_context_focus_in;
- im_context_class->focus_out = ibus_im_context_focus_out;
-@@ -210,71 +247,75 @@ ibus_im_context_class_init (IBusIMContextClass *klass)
- g_signal_lookup ("retrieve-surrounding", G_TYPE_FROM_CLASS (klass));
- g_assert (_signal_retrieve_surrounding_id != 0);
-
-+ _q_ibus_im_context = g_quark_from_static_string ("IBusIMContext");
-+
-+ if (_use_key_snooper) {
-+ gtk_key_snooper_install (_key_snooper_cb, NULL);
-+ }
- }
-
- static void
- ibus_im_context_init (GObject *obj)
- {
-
-- IBusIMContext *ibuscontext = IBUS_IM_CONTEXT (obj);
-- IBusIMContextPrivate *priv = ibuscontext->priv =
-- G_TYPE_INSTANCE_GET_PRIVATE (ibuscontext, IBUS_TYPE_IM_CONTEXT, IBusIMContextPrivate);
-+ IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj);
-
-- priv->client_window = NULL;
-+ ibusimcontext->client_window = NULL;
-+ ibusimcontext->event_window = NULL;
-
- // Init ibus status
-- priv->enable = FALSE;
-+ ibusimcontext->enable = FALSE;
-
- // Init preedit status
-- priv->preedit_string = NULL;
-- priv->preedit_attrs = NULL;
-- priv->preedit_cursor_pos = 0;
-- priv->preedit_visible = FALSE;
-+ ibusimcontext->preedit_string = NULL;
-+ ibusimcontext->preedit_attrs = NULL;
-+ ibusimcontext->preedit_cursor_pos = 0;
-+ ibusimcontext->preedit_visible = FALSE;
-
- // Init cursor area
-- priv->cursor_area.x = -1;
-- priv->cursor_area.y = -1;
-- priv->cursor_area.width = 0;
-- priv->cursor_area.height = 0;
-+ ibusimcontext->cursor_area.x = -1;
-+ ibusimcontext->cursor_area.y = -1;
-+ ibusimcontext->cursor_area.width = 0;
-+ ibusimcontext->cursor_area.height = 0;
-
-- priv->ibus_context = NULL;
-- priv->has_focus = FALSE;
-- priv->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS;
-+ ibusimcontext->ibuscontext = NULL;
-+ ibusimcontext->has_focus = FALSE;
-+ ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS;
-
-
- // Create slave im context
-- priv->slave = gtk_im_context_simple_new ();
-- g_signal_connect (priv->slave,
-+ ibusimcontext->slave = gtk_im_context_simple_new ();
-+ g_signal_connect (ibusimcontext->slave,
- "commit",
- G_CALLBACK (_slave_commit_cb),
-- ibuscontext);
-- g_signal_connect (priv->slave,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->slave,
- "preedit-start",
- G_CALLBACK (_slave_preedit_start_cb),
-- ibuscontext);
-- g_signal_connect (priv->slave,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->slave,
- "preedit-end",
- G_CALLBACK (_slave_preedit_end_cb),
-- ibuscontext);
-- g_signal_connect (priv->slave,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->slave,
- "preedit-changed",
- G_CALLBACK (_slave_preedit_changed_cb),
-- ibuscontext);
-- g_signal_connect (priv->slave,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->slave,
- "retrieve-surrounding",
- G_CALLBACK (_slave_retrieve_surrounding_cb),
-- ibuscontext);
-- g_signal_connect (priv->slave,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->slave,
- "delete-surrounding",
- G_CALLBACK (_slave_delete_surrounding_cb),
-- ibuscontext);
-+ ibusimcontext);
-
- /* init bus object */
- if (_bus == NULL)
- _bus = ibus_bus_new();
-
- if (ibus_bus_is_connected (_bus)) {
-- _create_input_context (ibuscontext);
-+ _create_input_context (ibusimcontext);
- }
-
- g_signal_connect (_bus, "connected", G_CALLBACK (_bus_connected_cb), obj);
-@@ -286,27 +327,28 @@ ibus_im_context_finalize (GObject *obj)
- g_return_if_fail (obj != NULL);
- g_return_if_fail (IBUS_IS_IM_CONTEXT (obj));
-
-- IBusIMContext *ibus = IBUS_IM_CONTEXT (obj);
-- IBusIMContextPrivate *priv = ibus->priv;
-+ IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj);
-
- g_signal_handlers_disconnect_by_func (_bus, G_CALLBACK (_bus_connected_cb), obj);
-
-- if (priv->ibus_context) {
-- ibus_object_destroy ((IBusObject *)priv->ibus_context);
-+ if (ibusimcontext->ibuscontext) {
-+ ibus_object_destroy ((IBusObject *)ibusimcontext->ibuscontext);
- }
-
-- g_object_unref (priv->slave);
-+ ibus_im_context_set_client_window ((GtkIMContext *)ibusimcontext, NULL);
-+ ibus_im_context_set_event_window (ibusimcontext, NULL);
-
-- if (priv->client_window) {
-- g_object_unref (priv->client_window);
-+ if (ibusimcontext->slave) {
-+ g_object_unref (ibusimcontext->slave);
-+ ibusimcontext->slave = NULL;
- }
-
- // release preedit
-- if (priv->preedit_string) {
-- g_free (priv->preedit_string);
-+ if (ibusimcontext->preedit_string) {
-+ g_free (ibusimcontext->preedit_string);
- }
-- if (priv->preedit_attrs) {
-- pango_attr_list_unref (priv->preedit_attrs);
-+ if (ibusimcontext->preedit_attrs) {
-+ pango_attr_list_unref (ibusimcontext->preedit_attrs);
- }
-
- G_OBJECT_CLASS(parent_class)->finalize (obj);
-@@ -314,27 +356,30 @@ ibus_im_context_finalize (GObject *obj)
-
- static gboolean
- ibus_im_context_filter_keypress (GtkIMContext *context,
-- GdkEventKey *event)
-+ GdkEventKey *event)
- {
- g_return_val_if_fail (context != NULL, FALSE);
- g_return_val_if_fail (IBUS_IS_IM_CONTEXT (context), FALSE);
-
-- IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
-- IBusIMContextPrivate *priv = ibus->priv;
-+ IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
-+
-+ if (event->window != ibusimcontext->client_window && event->window != ibusimcontext->event_window) {
-+ ibus_im_context_set_event_window (ibusimcontext, event->window);
-+ }
-
-- if (priv->ibus_context && priv->has_focus) {
-+ if (ibusimcontext->ibuscontext && ibusimcontext->has_focus) {
- /* If context does not have focus, ibus will process key event in sync mode.
- * It is a workaround for increase search in treeview.
- */
- gboolean retval;
- switch (event->type) {
- case GDK_KEY_RELEASE:
-- retval = ibus_input_context_process_key_event (priv->ibus_context,
-+ retval = ibus_input_context_process_key_event (ibusimcontext->ibuscontext,
- event->keyval,
- event->state | IBUS_RELEASE_MASK);
- break;
- case GDK_KEY_PRESS:
-- retval = ibus_input_context_process_key_event (priv->ibus_context,
-+ retval = ibus_input_context_process_key_event (ibusimcontext->ibuscontext,
- event->keyval,
- event->state);
- break;
-@@ -345,10 +390,10 @@ ibus_im_context_filter_keypress (GtkIMContext *context,
- if (retval) {
- return TRUE;
- }
-- return gtk_im_context_filter_keypress (priv->slave, event);
-+ return gtk_im_context_filter_keypress (ibusimcontext->slave, event);
- }
- else {
-- return gtk_im_context_filter_keypress (priv->slave, event);
-+ return gtk_im_context_filter_keypress (ibusimcontext->slave, event);
- }
- }
-
-@@ -357,18 +402,15 @@ ibus_im_context_focus_in (GtkIMContext *context)
- {
- g_assert (IBUS_IS_IM_CONTEXT (context));
-
-- IBusIMContext *ibuscontext;
-- IBusIMContextPrivate *priv;
-+ IBusIMContext *ibusimcontext;
-+ ibusimcontext = IBUS_IM_CONTEXT (context);
-
-- ibuscontext = IBUS_IM_CONTEXT (context);
-- priv = ibuscontext->priv;
--
-- priv->has_focus = TRUE;
-- if (priv->ibus_context) {
-- ibus_input_context_focus_in (priv->ibus_context);
-+ ibusimcontext->has_focus = TRUE;
-+ if (ibusimcontext->ibuscontext) {
-+ ibus_input_context_focus_in (ibusimcontext->ibuscontext);
- }
-
-- gtk_im_context_focus_in (priv->slave);
-+ gtk_im_context_focus_in (ibusimcontext->slave);
-
- _set_cursor_location_internal (context);
- }
-@@ -379,17 +421,14 @@ ibus_im_context_focus_out (GtkIMContext *context)
-
- g_assert (IBUS_IS_IM_CONTEXT (context));
-
-- IBusIMContext *ibuscontext;
-- IBusIMContextPrivate *priv;
--
-- ibuscontext = IBUS_IM_CONTEXT (context);
-- priv = ibuscontext->priv;
-+ IBusIMContext *ibusimcontext;
-+ ibusimcontext = IBUS_IM_CONTEXT (context);
-
-- priv->has_focus = FALSE;
-- if (priv->ibus_context) {
-- ibus_input_context_focus_out (priv->ibus_context);
-+ ibusimcontext->has_focus = FALSE;
-+ if (ibusimcontext->ibuscontext) {
-+ ibus_input_context_focus_out (ibusimcontext->ibuscontext);
- }
-- gtk_im_context_focus_out (priv->slave);
-+ gtk_im_context_focus_out (ibusimcontext->slave);
- }
-
- static void
-@@ -397,16 +436,13 @@ ibus_im_context_reset (GtkIMContext *context)
- {
- g_assert (IBUS_IS_IM_CONTEXT (context));
-
-- IBusIMContext *ibuscontext;
-- IBusIMContextPrivate *priv;
--
-- ibuscontext = IBUS_IM_CONTEXT (context);
-- priv = ibuscontext->priv;
-+ IBusIMContext *ibusimcontext;
-+ ibusimcontext = IBUS_IM_CONTEXT (context);
-
-- if (priv->ibus_context) {
-- ibus_input_context_reset (priv->ibus_context);
-+ if (ibusimcontext->ibuscontext) {
-+ ibus_input_context_reset (ibusimcontext->ibuscontext);
- }
-- gtk_im_context_reset (priv->slave);
-+ gtk_im_context_reset (ibusimcontext->slave);
- }
-
-
-@@ -418,26 +454,23 @@ ibus_im_context_get_preedit_string (GtkIMContext *context,
- {
- g_assert (IBUS_IS_IM_CONTEXT (context));
-
-- IBusIMContext *ibuscontext;
-- IBusIMContextPrivate *priv;
-+ IBusIMContext *ibusimcontext;
-+ ibusimcontext = IBUS_IM_CONTEXT (context);
-
-- ibuscontext = IBUS_IM_CONTEXT (context);
-- priv = ibuscontext->priv;
--
-- if (priv->enable) {
-- if (priv->preedit_visible) {
-+ if (ibusimcontext->enable) {
-+ if (ibusimcontext->preedit_visible) {
- if (str) {
-- *str = g_strdup (priv->preedit_string ? priv->preedit_string: "");
-+ *str = g_strdup (ibusimcontext->preedit_string ? ibusimcontext->preedit_string: "");
- }
-
- if (attrs) {
-- *attrs = priv->preedit_attrs ?
-- pango_attr_list_ref (priv->preedit_attrs):
-+ *attrs = ibusimcontext->preedit_attrs ?
-+ pango_attr_list_ref (ibusimcontext->preedit_attrs):
- pango_attr_list_new ();
- }
-
- if (cursor_pos) {
-- *cursor_pos = priv->preedit_cursor_pos;
-+ *cursor_pos = ibusimcontext->preedit_cursor_pos;
- }
- }
- else {
-@@ -453,56 +486,86 @@ ibus_im_context_get_preedit_string (GtkIMContext *context,
- }
- }
- else {
-- gtk_im_context_get_preedit_string (priv->slave, str, attrs, cursor_pos);
-+ gtk_im_context_get_preedit_string (ibusimcontext->slave, str, attrs, cursor_pos);
- }
- }
-
-
- static void
--ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client)
-+ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client)
- {
- g_return_if_fail (context != NULL);
- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-
-- IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
-- IBusIMContextPrivate *priv = ibus->priv;
-+ IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
-
-- if (priv->client_window) {
-- g_object_unref (priv->client_window);
-+ if (ibusimcontext->client_window) {
-+ if (g_object_get_qdata ((GObject *) ibusimcontext->client_window, _q_ibus_im_context) == ibusimcontext) {
-+ g_object_set_qdata ((GObject *) ibusimcontext->client_window, _q_ibus_im_context, NULL);
-+ }
-+ g_object_unref (ibusimcontext->client_window);
- }
-
-+ ibus_im_context_set_event_window (ibusimcontext, NULL);
-+
- if (client) {
- g_object_ref (client);
-+ g_object_ref (ibusimcontext);
-+ g_object_set_qdata_full ((GObject *) client, _q_ibus_im_context, context, g_object_unref);
- }
-
-- priv->client_window = client;
-- gtk_im_context_set_client_window (priv->slave, client);
-+ ibusimcontext->client_window = client;
-+
-+ if (ibusimcontext->slave)
-+ gtk_im_context_set_client_window (ibusimcontext->slave, client);
-+}
-+
-+static void
-+ibus_im_context_set_event_window (IBusIMContext *ibusimcontext, GdkWindow *window)
-+{
-+ if (ibusimcontext->event_window) {
-+ if (g_object_get_qdata ((GObject *) ibusimcontext->event_window, _q_ibus_im_context) == ibusimcontext) {
-+ g_object_set_qdata ((GObject *) ibusimcontext->event_window, _q_ibus_im_context, NULL);
-+ }
-+ g_object_unref (ibusimcontext->event_window);
-+ ibusimcontext->event_window = NULL;
-+ }
-+
-+ if (window == ibusimcontext->client_window)
-+ window = NULL;
-+
-+ if (window != NULL) {
-+ g_object_ref (window);
-+ g_object_ref (ibusimcontext);
-+ g_object_set_qdata_full ((GObject *) window, _q_ibus_im_context, ibusimcontext, g_object_unref);
-+ }
-+
-+ ibusimcontext->event_window = window;
- }
-
- static void
- _set_cursor_location_internal (GtkIMContext *context)
- {
-- IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
-- IBusIMContextPrivate *priv = ibus->priv;
-+ IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
- GdkRectangle area;
- gint x, y;
-
-- if(priv->client_window == NULL || priv->ibus_context == NULL) {
-+ if(ibusimcontext->client_window == NULL || ibusimcontext->ibuscontext == NULL) {
- return;
- }
-
-- area = priv->cursor_area;
-+ area = ibusimcontext->cursor_area;
- if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) {
- gint w, h;
-- gdk_drawable_get_size (priv->client_window, &w, &h);
-+ gdk_drawable_get_size (ibusimcontext->client_window, &w, &h);
- area.y += h;
- area.x = 0;
- }
-
-- gdk_window_get_origin (priv->client_window, &x, &y);
-+ gdk_window_get_origin (ibusimcontext->client_window, &x, &y);
- area.x += x;
- area.y += y;
-- ibus_input_context_set_cursor_location (priv->ibus_context,
-+ ibus_input_context_set_cursor_location (ibusimcontext->ibuscontext,
- area.x,
- area.y,
- area.width,
-@@ -515,12 +578,11 @@ ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area)
- g_return_if_fail (context != NULL);
- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-
-- IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
-- IBusIMContextPrivate *priv = ibus->priv;
-+ IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
-
-- priv->cursor_area = *area;
-+ ibusimcontext->cursor_area = *area;
- _set_cursor_location_internal (context);
-- gtk_im_context_set_cursor_location (priv->slave, area);
-+ gtk_im_context_set_cursor_location (ibusimcontext->slave, area);
- }
-
- static void
-@@ -529,60 +591,56 @@ ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit)
- g_return_if_fail (context != NULL);
- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-
-- IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
-- IBusIMContextPrivate *priv = ibus->priv;
-+ IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
-
-- if(priv->ibus_context) {
-+ if(ibusimcontext->ibuscontext) {
- if (use_preedit) {
-- priv->caps |= IBUS_CAP_PREEDIT_TEXT;
-+ ibusimcontext->caps |= IBUS_CAP_PREEDIT_TEXT;
- }
- else {
-- priv->caps &= ~IBUS_CAP_PREEDIT_TEXT;
-+ ibusimcontext->caps &= ~IBUS_CAP_PREEDIT_TEXT;
- }
-- ibus_input_context_set_capabilities (priv->ibus_context, priv->caps);
-+ ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps);
- }
-- gtk_im_context_set_use_preedit (priv->slave, use_preedit);
-+ gtk_im_context_set_use_preedit (ibusimcontext->slave, use_preedit);
- }
-
- static void
- _bus_connected_cb (IBusBus *bus,
-- IBusIMContext *context)
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-- g_assert (context->priv->ibus_context == NULL);
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-+ g_assert (ibusimcontext->ibuscontext == NULL);
-
-- _create_input_context (context);
-+ _create_input_context (ibusimcontext);
- }
-
- static void
--_ibus_context_commit_text_cb (IBusInputContext *ibus_context,
-+_ibus_context_commit_text_cb (IBusInputContext *ibuscontext,
- IBusText *text,
-- IBusIMContext *context)
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_INPUT_CONTEXT (ibus_context));
-+ g_assert (IBUS_IS_INPUT_CONTEXT (ibuscontext));
- g_assert (IBUS_IS_TEXT (text));
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- g_signal_emit (context, _signal_commit_id, 0, text->text);
-+ g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text);
- }
-
- static void
--_ibus_context_forward_key_event_cb (IBusInputContext *ibus_context,
-+_ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext,
- guint keyval,
-- gboolean is_press,
- guint state,
-- IBusIMContext *context)
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
- GdkEventKey *event;
-- IBusIMContextPrivate *priv;
-
-- priv = context->priv;
-- event = (GdkEventKey *)gdk_event_new (is_press ? GDK_KEY_PRESS : GDK_KEY_RELEASE);
-+ event = (GdkEventKey *)gdk_event_new (state & IBUS_RELEASE_MASK ? GDK_KEY_RELEASE : GDK_KEY_PRESS);
-
- event->time = GDK_CURRENT_TIME;
-- event->window = g_object_ref (priv->client_window);
-+ event->window = g_object_ref (ibusimcontext->client_window);
- event->send_event = FALSE;
- event->state = state;
- event->keyval = keyval;
-@@ -597,33 +655,31 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibus_context,
- }
-
- static void
--_ibus_context_update_preedit_text_cb (IBusInputContext *ibus_context,
-+_ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext,
- IBusText *text,
- gint cursor_pos,
- gboolean visible,
-- IBusIMContext *context)
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_INPUT_CONTEXT (ibus_context));
-+ g_assert (IBUS_IS_INPUT_CONTEXT (ibuscontext));
- g_assert (IBUS_IS_TEXT (text));
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- IBusIMContextPrivate *priv;
-- priv = context->priv;
- const gchar *str;
-
-- if (priv->preedit_string) {
-- g_free (priv->preedit_string);
-+ if (ibusimcontext->preedit_string) {
-+ g_free (ibusimcontext->preedit_string);
- }
-- if (priv->preedit_attrs) {
-- pango_attr_list_unref (priv->preedit_attrs);
-- priv->preedit_attrs = NULL;
-+ if (ibusimcontext->preedit_attrs) {
-+ pango_attr_list_unref (ibusimcontext->preedit_attrs);
-+ ibusimcontext->preedit_attrs = NULL;
- }
-
- str = text->text;
-- priv->preedit_string = g_strdup (str);
-+ ibusimcontext->preedit_string = g_strdup (str);
- if (text->attrs) {
- guint i;
-- priv->preedit_attrs = pango_attr_list_new ();
-+ ibusimcontext->preedit_attrs = pango_attr_list_new ();
- for (i = 0; ; i++) {
- IBusAttribute *attr = ibus_attr_list_get (text->attrs, i);
- if (attr == NULL) {
-@@ -652,249 +708,244 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibus_context,
- }
- pango_attr->start_index = g_utf8_offset_to_pointer (str, attr->start_index) - str;
- pango_attr->end_index = g_utf8_offset_to_pointer (str, attr->end_index) - str;
-- pango_attr_list_insert (priv->preedit_attrs, pango_attr);
-+ pango_attr_list_insert (ibusimcontext->preedit_attrs, pango_attr);
- }
- }
-- priv->preedit_cursor_pos = cursor_pos;
-- priv->preedit_visible = visible;
-- g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ ibusimcontext->preedit_cursor_pos = cursor_pos;
-+ ibusimcontext->preedit_visible = visible;
-+ if (ibusimcontext->preedit_visible) {
-+ g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+ }
-+ else {
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
-+ }
- }
-
- static void
--_ibus_context_show_preedit_text_cb (IBusInputContext *ibus_context,
-- IBusIMContext *context)
-+_ibus_context_show_preedit_text_cb (IBusInputContext *ibuscontext,
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-- IBusIMContextPrivate *priv = context->priv;
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- if (priv->preedit_visible == FALSE) {
-- priv->preedit_visible = TRUE;
-- g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ if (ibusimcontext->preedit_visible == FALSE) {
-+ ibusimcontext->preedit_visible = TRUE;
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
- }
- }
-
- static void
--_ibus_context_hide_preedit_text_cb (IBusInputContext *ibus_context,
-- IBusIMContext *context)
-+_ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext,
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-- IBusIMContextPrivate *priv = context->priv;
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- if (priv->preedit_visible == TRUE) {
-- priv->preedit_visible = FALSE;
-- g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ if (ibusimcontext->preedit_visible == TRUE) {
-+ ibusimcontext->preedit_visible = FALSE;
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
- }
- }
-
- static void
--_ibus_context_enabled_cb (IBusInputContext *ibus_context,
-- IBusIMContext *context)
-+_ibus_context_enabled_cb (IBusInputContext *ibuscontext,
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-- IBusIMContextPrivate *priv = context->priv;
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- priv->enable = TRUE;
-- // g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ ibusimcontext->enable = TRUE;
- }
-
- static void
--_ibus_context_disabled_cb (IBusInputContext *ibus_context,
-- IBusIMContext *context)
-+_ibus_context_disabled_cb (IBusInputContext *ibuscontext,
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-- IBusIMContextPrivate *priv = context->priv;
-+ ibusimcontext->enable = FALSE;
-
-- priv->enable = FALSE;
--
- /* clear preedit */
-- priv->preedit_visible = FALSE;
-- priv->preedit_cursor_pos = 0;
-- g_free (priv->preedit_string);
-- priv->preedit_string = NULL;
--
-- g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ ibusimcontext->preedit_visible = FALSE;
-+ ibusimcontext->preedit_cursor_pos = 0;
-+ g_free (ibusimcontext->preedit_string);
-+ ibusimcontext->preedit_string = NULL;
-+
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
-
- static void
--_ibus_context_destroy_cb (IBusInputContext *ibus_context,
-- IBusIMContext *context)
-+_ibus_context_destroy_cb (IBusInputContext *ibuscontext,
-+ IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-+ g_assert (ibusimcontext->ibuscontext == ibuscontext);
-+
-+ g_object_unref (ibusimcontext->ibuscontext);
-+ ibusimcontext->ibuscontext = NULL;
-
-- IBusIMContextPrivate *priv = context->priv;
-+ ibusimcontext->enable = FALSE;
-
-- g_assert (priv->ibus_context == ibus_context);
-+ /* clear preedit */
-+ ibusimcontext->preedit_visible = FALSE;
-+ ibusimcontext->preedit_cursor_pos = 0;
-+ g_free (ibusimcontext->preedit_string);
-+ ibusimcontext->preedit_string = NULL;
-
-- g_object_unref (priv->ibus_context);
-- priv->ibus_context = NULL;
-- priv->enable = FALSE;
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
-
- static void
--_create_input_context (IBusIMContext *context)
-+_create_input_context (IBusIMContext *ibusimcontext)
- {
-- g_assert (IBUS_IS_IM_CONTEXT (context));
-- g_assert (context->priv->ibus_context == NULL);
--
-- IBusIMContextPrivate *priv;
-- priv = context->priv;
-+ g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-+ g_assert (ibusimcontext->ibuscontext == NULL);
-
-- priv->ibus_context = ibus_bus_create_input_context (_bus, "test");
-+ ibusimcontext->ibuscontext = ibus_bus_create_input_context (_bus, "test");
-
-- g_signal_connect (priv->ibus_context,
-+ g_signal_connect (ibusimcontext->ibuscontext,
- "commit-text",
- G_CALLBACK (_ibus_context_commit_text_cb),
-- context);
-- g_signal_connect (priv->ibus_context,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->ibuscontext,
- "forward-key-event",
- G_CALLBACK (_ibus_context_forward_key_event_cb),
-- context);
-- g_signal_connect (priv->ibus_context,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->ibuscontext,
- "update-preedit-text",
- G_CALLBACK (_ibus_context_update_preedit_text_cb),
-- context);
-- g_signal_connect (priv->ibus_context,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->ibuscontext,
- "show-preedit-text",
- G_CALLBACK (_ibus_context_show_preedit_text_cb),
-- context);
-- g_signal_connect (priv->ibus_context,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->ibuscontext,
- "hide-preedit-text",
- G_CALLBACK (_ibus_context_hide_preedit_text_cb),
-- context);
-- g_signal_connect (priv->ibus_context,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->ibuscontext,
- "enabled",
- G_CALLBACK (_ibus_context_enabled_cb),
-- context);
-- g_signal_connect (priv->ibus_context,
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->ibuscontext,
- "disabled",
- G_CALLBACK (_ibus_context_disabled_cb),
-- context);
-- g_signal_connect (priv->ibus_context, "destroy",
-+ ibusimcontext);
-+ g_signal_connect (ibusimcontext->ibuscontext, "destroy",
- G_CALLBACK (_ibus_context_destroy_cb),
-- context);
-+ ibusimcontext);
-
-- ibus_input_context_set_capabilities (priv->ibus_context, priv->caps);
-+ ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps);
-
-- if (priv->has_focus) {
-- ibus_input_context_focus_in (priv->ibus_context);
-+ if (ibusimcontext->has_focus) {
-+ ibus_input_context_focus_in (ibusimcontext->ibuscontext);
- }
- }
-
- /* Callback functions for slave context */
- static void
--_slave_commit_cb (GtkIMContext *slave, gchar *string, IBusIMContext *context)
-+_slave_commit_cb (GtkIMContext *slave,
-+ gchar *string,
-+ IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- /* IBusIMContextPrivate *priv = context->priv; */
- #if 0
- if ((GtkIMContext *)context == CURRENT_CONTEXT && ibus_im_client_is_enabled (_client))
- return;
- #endif
-- g_signal_emit (context, _signal_commit_id, 0, string);
-+ g_signal_emit (ibusimcontext, _signal_commit_id, 0, string);
- }
-
- static void
--_slave_preedit_changed_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_preedit_changed_cb (GtkIMContext *slave,
-+ IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- IBusIMContextPrivate *priv = context->priv;
--
-- if (priv->enable && priv->ibus_context) {
-+ if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
- return;
- }
-
-- g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
- }
-
- static void
--_slave_preedit_start_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_preedit_start_cb (GtkIMContext *slave,
-+ IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- IBusIMContextPrivate *priv = context->priv;
--
-- if (priv->enable && priv->ibus_context) {
-+ if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
- return;
- }
-- g_signal_emit (context, _signal_preedit_start_id, 0);
-+
-+ g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0);
- }
-
- static void
--_slave_preedit_end_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_preedit_end_cb (GtkIMContext *slave,
-+ IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
--
-- IBusIMContextPrivate *priv = context->priv;
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- if (priv->enable && priv->ibus_context) {
-+ if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
- return;
- }
-- g_signal_emit (context, _signal_preedit_end_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
-
- static void
--_slave_retrieve_surrounding_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_retrieve_surrounding_cb (GtkIMContext *slave,
-+ IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- IBusIMContextPrivate *priv = context->priv;
--
-- if (priv->enable && priv->ibus_context) {
-+ if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
- return;
- }
-- g_signal_emit (context, _signal_retrieve_surrounding_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_retrieve_surrounding_id, 0);
- }
-
- static void
--_slave_delete_surrounding_cb (GtkIMContext *slave, gint a1, gint a2, IBusIMContext *context)
-+_slave_delete_surrounding_cb (GtkIMContext *slave,
-+ gint a1,
-+ gint a2,
-+ IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- IBusIMContextPrivate *priv = context->priv;
--
-- if (priv->enable && priv->ibus_context) {
-+ if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
- return;
- }
-- g_signal_emit (context, _signal_delete_surrounding_id, 0, a1, a2);
-+ g_signal_emit (ibusimcontext, _signal_delete_surrounding_id, 0, a1, a2);
- }
-
- void
--ibus_im_context_show_preedit (IBusIMContext *context)
-+ibus_im_context_show_preedit (IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- IBusIMContextPrivate *priv = context->priv;
-- if (priv->preedit_visible) {
-+ if (ibusimcontext->preedit_visible) {
- return;
- }
-
-- priv->preedit_visible = TRUE;
-+ ibusimcontext->preedit_visible = TRUE;
-
-- g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
- }
-
- void
--ibus_im_context_hide_preedit (IBusIMContext *context)
-+ibus_im_context_hide_preedit (IBusIMContext *ibusimcontext)
- {
-- g_return_if_fail (context != NULL);
-- g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
--
-- IBusIMContextPrivate *priv = context->priv;
-+ g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
-
-- if (!priv->preedit_visible) {
-+ if (!ibusimcontext->preedit_visible) {
- return;
- }
-
-- priv->preedit_visible = FALSE;
-+ ibusimcontext->preedit_visible = FALSE;
-
-- g_signal_emit (context, _signal_preedit_changed_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+ g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
-diff --git a/client/gtk2/ibusimcontext.h b/client/gtk2/ibusimcontext.h
-index 69d382d..eb8895b 100644
---- a/client/gtk2/ibusimcontext.h
-+++ b/client/gtk2/ibusimcontext.h
-@@ -43,16 +43,6 @@ typedef struct _IBusIMContext IBusIMContext;
- typedef struct _IBusIMContextClass IBusIMContextClass;
- typedef struct _IBusIMContextPrivate IBusIMContextPrivate;
-
--struct _IBusIMContext {
-- GtkIMContext parent;
-- /* instance members */
-- IBusIMContextPrivate *priv;
--};
--
--struct _IBusIMContextClass {
--GtkIMContextClass parent;
-- /* class members */
--};
-
- GType ibus_im_context_get_type (void);
- IBusIMContext
-diff --git a/configure.ac b/configure.ac
-index 2b6f0d8..263b83f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -49,6 +49,13 @@ AC_ISC_POSIX
- AC_HEADER_STDC
- AM_PROG_LIBTOOL
-
-+# For dislpay Date
-+m4_define(ibus_maybe_datedisplay,
-+ m4_esyscmd([if test x]ibus_released[ != x1; then date '+%a %b %d %Y' | tr -d '\n\r'; fi]))
-+m4_define([ibus_datedisplay], ibus_maybe_datedisplay)
-+DATE_DISPLAY="ibus_datedisplay"
-+AC_SUBST(DATE_DISPLAY)
-+
- # If only source code changed, lt_revision + 1
- # If any interface added, lt_age + 1
- # If any interfaces changed or removed, lt_current + 1
-diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am
-index c1991f1..310bdef 100644
---- a/docs/reference/ibus/Makefile.am
-+++ b/docs/reference/ibus/Makefile.am
-@@ -25,7 +25,8 @@ SCANGOBJ_OPTIONS=
-
- # Extra options to supply to gtkdoc-scan.
- # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
--SCAN_OPTIONS=--rebuild-sections
-+# SCAN_OPTIONS=--rebuild-sections
-+SCAN_OPTIONS=
-
- # Extra options to supply to gtkdoc-mkdb.
- # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-@@ -42,7 +43,7 @@ FIXXREF_OPTIONS=
- # Used for dependencies. The docs will be rebuilt if any of these change.
- # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
- # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
--HFILE_GLOB=
-+HFILE_GLOB=$(top_srcdir)/src/*.h
- CFILE_GLOB=
-
- # Header files to ignore when scanning.
-@@ -97,4 +98,10 @@ EXTRA_DIST +=
-
- # Comment this out if you want your docs-status tested during 'make check'
- #TESTS = $(GTKDOC_CHECK)
--# CLEANFILES += ibus*
-+
-+clean-local:
-+ rm -rf tmpl
-+
-+CLEANFILES+= *.stamp
-+
-+
-diff --git a/docs/reference/ibus/ibus-docs.sgml b/docs/reference/ibus/ibus-docs.sgml
-index 35d0bea..043890c 100644
---- a/docs/reference/ibus/ibus-docs.sgml
-+++ b/docs/reference/ibus/ibus-docs.sgml
-@@ -3,46 +3,76 @@
- "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
- <book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
- <bookinfo>
-- <title>IBus Reference Manual</title>
-+ <title>iBus Reference Manual</title>
- <releaseinfo>
-- for ibus 1.1.0
-+ iBus 1.1.0 reference manual.
- The latest version of this documentation can be found on-line at
- <ulink role="online-location" url="http://code.google.com/p/ibus">http://code.google.com/p/ibus</ulink>.
- </releaseinfo>
- </bookinfo>
-
- <chapter>
-- <title>API Reference</title>
-- <xi:include href="xml/ibusfactory.xml"/>
-- <xi:include href="xml/ibusattribute.xml"/>
-- <xi:include href="xml/ibusinputcontext.xml"/>
-- <xi:include href="xml/ibusobservedpath.xml"/>
-- <xi:include href="xml/ibusengine.xml"/>
-- <xi:include href="xml/ibusservice.xml"/>
-- <xi:include href="xml/ibuslookuptable.xml"/>
-- <xi:include href="xml/ibusproxy.xml"/>
-- <xi:include href="xml/ibusserver.xml"/>
-- <xi:include href="xml/ibuscomponent.xml"/>
-- <xi:include href="xml/ibusconnection.xml"/>
-- <xi:include href="xml/ibusproperty.xml"/>
-- <xi:include href="xml/ibustext.xml"/>
-- <xi:include href="xml/ibusserializable.xml"/>
-- <xi:include href="xml/ibushotkey.xml"/>
-- <xi:include href="xml/ibusbus.xml"/>
-- <xi:include href="xml/ibusenginedesc.xml"/>
-- <xi:include href="xml/ibusobject.xml"/>
-- <xi:include href="xml/ibusconfig.xml"/>
-- <xi:include href="xml/ibusmessage.xml"/>
-- <xi:include href="xml/ibusdebug.xml"/>
-- <xi:include href="xml/ibusmarshalers.xml"/>
-- <xi:include href="xml/keyname-table.xml"/>
-- <xi:include href="xml/ibustypes.xml"/>
-- <xi:include href="xml/ibuserror.xml"/>
-- <xi:include href="xml/ibuspendingcall.xml"/>
-- <xi:include href="xml/ibuskeysyms.xml"/>
-- <xi:include href="xml/ibusenumtypes.xml"/>
-- <xi:include href="xml/ibusxml.xml"/>
-- <xi:include href="xml/ibusshare.xml"/>
-- <xi:include href="xml/ibusinternal.xml"/>
-+ <title>API Overviews</title>
-+ <para>The iBus API consists 3 parts:
-+ <emphasis>User interfaces</emphasis> for objects and services which
-+ are relateed to iBus UI such as language bar;
-+ <emphasis>Input method engine</emphasis> for input method main logic and input/output handling;
-+ <emphasis>Configure</emphasis> for services for save, load and listening configures.
-+ </para>
-+ </chapter>
-+ <chapter>
-+ <title>User Interfaces</title>
-+ <para>These APIs directly related to User interfaces, such as
-+ pre-edit buffer, auxiliary text, language bar, button,
-+ radio boxes, and so on.
-+ </para>
-+ <xi:include href="xml/ibusattribute.xml"/>
-+ <xi:include href="xml/ibuslookuptable.xml"/>
-+ <xi:include href="xml/ibusproperty.xml"/>
-+ <xi:include href="xml/ibustext.xml"/>
-+ </chapter>
-+ <chapter>
-+ <title>Input method engine</title>
-+ <para>
-+ </para>
-+ <xi:include href="xml/ibusbus.xml"/>
-+ <xi:include href="xml/ibuscomponent.xml"/>
-+ <xi:include href="xml/ibusconnection.xml"/>
-+ <xi:include href="xml/ibusengine.xml"/>
-+ <xi:include href="xml/ibusenginedesc.xml"/>
-+ <xi:include href="xml/ibusfactory.xml"/>
-+ <xi:include href="xml/ibushotkey.xml"/>
-+ <xi:include href="xml/ibuskeysyms.xml"/>
-+ </chapter>
-+ <chapter>
-+ <title>Configure</title>
-+ <para>
-+ </para>
-+ <xi:include href="xml/ibusconfig.xml"/>
-+ <xi:include href="xml/ibusconfigservice.xml"/>
-+ <xi:include href="xml/ibusxml.xml"/>
-+ </chapter>
-+ <chapter>
-+ <title>Others</title>
-+ <para>
-+ </para>
-+ <xi:include href="xml/ibusdebug.xml"/>
-+ <xi:include href="xml/ibusenumtypes.xml"/>
-+ <xi:include href="xml/ibuserror.xml"/>
-+ <xi:include href="xml/ibusinputcontext.xml"/>
-+ <xi:include href="xml/ibusinternal.xml"/>
-+ <xi:include href="xml/ibusmarshalers.xml"/>
-+ <xi:include href="xml/ibusmessage.xml"/>
-+ <xi:include href="xml/ibusobject.xml"/>
-+ <xi:include href="xml/ibusobservedpath.xml"/>
-+ <xi:include href="xml/ibuspendingcall.xml"/>
-+ <xi:include href="xml/ibusproxy.xml"/>
-+ <xi:include href="xml/ibusserver.xml"/>
-+ <xi:include href="xml/ibusservice.xml"/>
-+ <xi:include href="xml/ibusserializable.xml"/>
-+ <xi:include href="xml/ibusshare.xml"/>
-+ <xi:include href="xml/ibustypes.xml"/>
-+ <xi:include href="xml/keyname-table.xml"/>
- </chapter>
- </book>
-+
-diff --git a/docs/reference/ibus/ibus-sections.txt b/docs/reference/ibus/ibus-sections.txt
-new file mode 100644
-index 0000000..201a536
---- /dev/null
-+++ b/docs/reference/ibus/ibus-sections.txt
-@@ -0,0 +1,2710 @@
-+<SECTION>
-+<FILE>ibusproperty</FILE>
-+IBUS_TYPE_PROP_LIST
-+IBUS_PROP_LIST
-+IBUS_PROP_LIST_CLASS
-+IBUS_IS_PROP_LIST
-+IBUS_IS_PROP_LIST_CLASS
-+IBUS_PROP_LIST_GET_CLASS
-+IBusPropType
-+IBusPropState
-+<TITLE>IBusProperty</TITLE>
-+IBusProperty
-+<TITLE>IBusPropList</TITLE>
-+IBusPropList
-+ibus_property_new
-+ibus_property_set_label
-+ibus_property_set_visible
-+ibus_property_set_sub_props
-+ibus_property_update
-+ibus_prop_list_get_type
-+ibus_prop_list_new
-+ibus_prop_list_append
-+ibus_prop_list_get
-+ibus_prop_list_update_property
-+<SUBSECTION Standard>
-+IBUS_PROPERTY
-+IBUS_IS_PROPERTY
-+IBUS_TYPE_PROPERTY
-+ibus_property_get_type
-+IBUS_PROPERTY_CLASS
-+IBUS_IS_PROPERTY_CLASS
-+IBUS_PROPERTY_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusproxy</FILE>
-+<TITLE>IBusProxy</TITLE>
-+IBusProxy
-+ibus_proxy_new
-+ibus_proxy_send
-+ibus_proxy_call
-+ibus_proxy_call_with_reply
-+ibus_proxy_call_with_reply_and_block
-+ibus_proxy_send_with_reply
-+ibus_proxy_send_with_reply_and_block
-+ibus_proxy_handle_signal
-+ibus_proxy_get_name
-+ibus_proxy_get_unique_name
-+ibus_proxy_get_path
-+ibus_proxy_get_interface
-+ibus_proxy_get_connection
-+<SUBSECTION Standard>
-+IBUS_PROXY
-+IBUS_IS_PROXY
-+IBUS_TYPE_PROXY
-+ibus_proxy_get_type
-+IBUS_PROXY_CLASS
-+IBUS_IS_PROXY_CLASS
-+IBUS_PROXY_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconfig</FILE>
-+<TITLE>IBusConfig</TITLE>
-+IBusConfig
-+ibus_config_new
-+ibus_config_get_value
-+ibus_config_set_value
-+<SUBSECTION Standard>
-+IBUS_CONFIG
-+IBUS_IS_CONFIG
-+IBUS_TYPE_CONFIG
-+ibus_config_get_type
-+IBUS_CONFIG_CLASS
-+IBUS_IS_CONFIG_CLASS
-+IBUS_CONFIG_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibushotkey</FILE>
-+<TITLE>IBusHotkeyProfile</TITLE>
-+IBusHotkeyProfile
-+ibus_hotkey_profile_add_hotkey
-+ibus_hotkey_profile_add_hotkey_from_string
-+ibus_hotkey_profile_remove_hotkey
-+ibus_hotkey_profile_remove_hotkey_by_event
-+ibus_hotkey_profile_filter_key_event
-+<SUBSECTION Standard>
-+IBUS_HOTKEY_PROFILE
-+IBUS_IS_HOTKEY_PROFILE
-+IBUS_TYPE_HOTKEY_PROFILE
-+ibus_hotkey_profile_get_type
-+IBUS_HOTKEY_PROFILE_CLASS
-+IBUS_IS_HOTKEY_PROFILE_CLASS
-+IBUS_HOTKEY_PROFILE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusenginedesc</FILE>
-+BusComponent
-+<TITLE>IBusEngineDesc</TITLE>
-+IBusEngineDesc
-+ibus_engine_desc_new
-+ibus_engine_desc_new_from_xml_node
-+ibus_engine_desc_output
-+<SUBSECTION Standard>
-+IBUS_ENGINE_DESC
-+IBUS_IS_ENGINE_DESC
-+IBUS_TYPE_ENGINE_DESC
-+ibus_engine_desc_get_type
-+IBUS_ENGINE_DESC_CLASS
-+IBUS_IS_ENGINE_DESC_CLASS
-+IBUS_ENGINE_DESC_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusfactory</FILE>
-+IBUS_TYPE_FACTORY_INFO
-+IBUS_FACTORY_INFO
-+IBUS_FACTORY_INFO_CLASS
-+IBUS_IS_FACTORY_INFO
-+IBUS_IS_FACTORY_INFO_CLASS
-+IBUS_FACTORY_INFO_GET_CLASS
-+<TITLE>IBusFactory</TITLE>
-+IBusFactory
-+<TITLE>IBusFactoryInfo</TITLE>
-+IBusFactoryInfo
-+ibus_factory_new
-+ibus_factory_add_engine
-+ibus_factory_get_info
-+ibus_factory_info_get_type
-+ibus_factory_info_new
-+<SUBSECTION Standard>
-+IBUS_FACTORY
-+IBUS_IS_FACTORY
-+IBUS_TYPE_FACTORY
-+ibus_factory_get_type
-+IBUS_FACTORY_CLASS
-+IBUS_IS_FACTORY_CLASS
-+IBUS_FACTORY_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusobject</FILE>
-+IBusObjectFlags
-+IBUS_OBJECT_FLAGS
-+IBUS_OBJECT_SET_FLAGS
-+IBUS_OBJECT_UNSET_FLAGS
-+IBUS_OBJECT_DESTROYED
-+<TITLE>IBusObject</TITLE>
-+IBusObject
-+ibus_object_new
-+ibus_object_destroy
-+<SUBSECTION Standard>
-+IBUS_OBJECT
-+IBUS_IS_OBJECT
-+IBUS_TYPE_OBJECT
-+ibus_object_get_type
-+IBUS_OBJECT_CLASS
-+IBUS_IS_OBJECT_CLASS
-+IBUS_OBJECT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusbus</FILE>
-+<TITLE>IBusBus</TITLE>
-+IBusBus
-+ibus_bus_new
-+ibus_bus_is_connected
-+ibus_bus_hello
-+ibus_bus_request_name
-+ibus_bus_release_name
-+ibus_bus_name_has_owner
-+ibus_bus_list_names
-+ibus_bus_add_match
-+ibus_bus_remove_match
-+ibus_bus_get_name_owner
-+ibus_bus_exit
-+ibus_bus_register_component
-+ibus_bus_list_engines
-+ibus_bus_list_active_engines
-+ibus_bus_get_config
-+<SUBSECTION Standard>
-+IBUS_BUS
-+IBUS_IS_BUS
-+IBUS_TYPE_BUS
-+ibus_bus_get_type
-+IBUS_BUS_CLASS
-+IBUS_IS_BUS_CLASS
-+IBUS_BUS_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusattribute</FILE>
-+IBUS_TYPE_ATTR_LIST
-+IBUS_ATTR_LIST
-+IBUS_ATTR_LIST_CLASS
-+IBUS_IS_ATTR_LIST
-+IBUS_IS_ATTR_LIST_CLASS
-+IBUS_ATTR_LIST_GET_CLASS
-+IBusAttrType
-+IBusAttrUnderline
-+<TITLE>IBusAttribute</TITLE>
-+IBusAttribute
-+<TITLE>IBusAttrList</TITLE>
-+IBusAttrList
-+ibus_attribute_new
-+ibus_attr_underline_new
-+ibus_attr_foreground_new
-+ibus_attr_background_new
-+ibus_attr_list_get_type
-+ibus_attr_list_new
-+ibus_attr_list_append
-+ibus_attr_list_get
-+<SUBSECTION Standard>
-+IBUS_ATTRIBUTE
-+IBUS_IS_ATTRIBUTE
-+IBUS_TYPE_ATTRIBUTE
-+ibus_attribute_get_type
-+IBUS_ATTRIBUTE_CLASS
-+IBUS_IS_ATTRIBUTE_CLASS
-+IBUS_ATTRIBUTE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusservice</FILE>
-+ServiceIBusMessageFunc
-+ServiceIBusSignalFunc
-+<TITLE>IBusService</TITLE>
-+IBusService
-+ibus_service_new
-+ibus_service_get_path
-+ibus_service_handle_message
-+ibus_service_add_to_connection
-+ibus_service_get_connections
-+ibus_service_remove_from_connection
-+ibus_service_remove_from_all_connections
-+ibus_service_send_signal
-+<SUBSECTION Standard>
-+IBUS_SERVICE
-+IBUS_IS_SERVICE
-+IBUS_TYPE_SERVICE
-+ibus_service_get_type
-+IBUS_SERVICE_CLASS
-+IBUS_IS_SERVICE_CLASS
-+IBUS_SERVICE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusserializable</FILE>
-+ibus_serializable_set_attachment
-+ibus_serializable_get_attachment
-+ibus_serializable_remove_attachment
-+IBusSerializableSerializeFunc
-+IBusSerializableDeserializeFunc
-+IBusSerializableCopyFunc
-+<TITLE>IBusSerializable</TITLE>
-+IBusSerializable
-+ibus_serializable_new
-+ibus_serializable_set_qattachment
-+ibus_serializable_get_qattachment
-+ibus_serializable_remove_qattachment
-+ibus_serializable_copy
-+ibus_serializable_serialize
-+ibus_serializable_deserialize
-+<SUBSECTION Standard>
-+IBUS_SERIALIZABLE
-+IBUS_IS_SERIALIZABLE
-+IBUS_TYPE_SERIALIZABLE
-+ibus_serializable_get_type
-+IBUS_SERIALIZABLE_CLASS
-+IBUS_IS_SERIALIZABLE_CLASS
-+IBUS_SERIALIZABLE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuslookuptable</FILE>
-+<TITLE>IBusLookupTable</TITLE>
-+IBusLookupTable
-+ibus_lookup_table_new
-+ibus_lookup_table_append_candidate
-+ibus_lookup_table_get_candidate
-+ibus_lookup_table_set_cursor_pos
-+ibus_lookup_table_get_cursor_pos
-+ibus_lookup_table_set_cursor_visible
-+ibus_lookup_table_is_cursor_visible
-+ibus_lookup_table_get_cursor_in_page
-+ibus_lookup_table_set_page_size
-+ibus_lookup_table_get_page_size
-+ibus_lookup_table_clear
-+ibus_lookup_table_page_up
-+ibus_lookup_table_page_down
-+ibus_lookup_table_cursor_up
-+ibus_lookup_table_cursor_down
-+<SUBSECTION Standard>
-+IBUS_LOOKUP_TABLE
-+IBUS_IS_LOOKUP_TABLE
-+IBUS_TYPE_LOOKUP_TABLE
-+ibus_lookup_table_get_type
-+IBUS_LOOKUP_TABLE_CLASS
-+IBUS_IS_LOOKUP_TABLE_CLASS
-+IBUS_LOOKUP_TABLE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibustext</FILE>
-+<TITLE>IBusText</TITLE>
-+IBusText
-+ibus_text_new_from_string
-+ibus_text_new_from_ucs4
-+ibus_text_new_from_static_string
-+ibus_text_new_from_printf
-+ibus_text_new_from_unichar
-+ibus_text_append_attribute
-+ibus_text_get_length
-+<SUBSECTION Standard>
-+IBUS_TEXT
-+IBUS_IS_TEXT
-+IBUS_TYPE_TEXT
-+ibus_text_get_type
-+IBUS_TEXT_CLASS
-+IBUS_IS_TEXT_CLASS
-+IBUS_TEXT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconnection</FILE>
-+IBusIBusMessageFunc
-+IBusIBusSignalFunc
-+IBusMessageFunc
-+<TITLE>IBusConnection</TITLE>
-+IBusConnection
-+ibus_connection_new
-+ibus_connection_set_connection
-+ibus_connection_open
-+ibus_connection_open_private
-+ibus_connection_close
-+ibus_connection_is_connected
-+ibus_connection_get_connection
-+ibus_connection_read_write_dispatch
-+ibus_connection_send
-+ibus_connection_send_signal
-+ibus_connection_send_signal_valist
-+ibus_connection_send_valist
-+ibus_connection_send_with_reply
-+ibus_connection_send_with_reply_and_block
-+ibus_connection_call
-+ibus_connection_flush
-+ibus_connection_register_object_path
-+ibus_connection_unregister_object_path
-+<SUBSECTION Standard>
-+IBUS_CONNECTION
-+IBUS_IS_CONNECTION
-+IBUS_TYPE_CONNECTION
-+ibus_connection_get_type
-+IBUS_CONNECTION_CLASS
-+IBUS_IS_CONNECTION_CLASS
-+IBUS_CONNECTION_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuscomponent</FILE>
-+<TITLE>IBusComponent</TITLE>
-+IBusComponent
-+ibus_component_new
-+ibus_component_new_from_xml_node
-+ibus_component_new_from_file
-+ibus_component_add_observed_path
-+ibus_component_add_engine
-+ibus_component_get_engines
-+ibus_component_output
-+ibus_component_output_engines
-+ibus_component_check_modification
-+ibus_component_start
-+ibus_component_stop
-+ibus_component_is_running
-+ibus_component_get_from_engine
-+<SUBSECTION Standard>
-+IBUS_COMPONENT
-+IBUS_IS_COMPONENT
-+IBUS_TYPE_COMPONENT
-+ibus_component_get_type
-+IBUS_COMPONENT_CLASS
-+IBUS_IS_COMPONENT_CLASS
-+IBUS_COMPONENT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusobservedpath</FILE>
-+<TITLE>IBusObservedPath</TITLE>
-+IBusObservedPath
-+ibus_observed_path_new_from_xml_node
-+ibus_observed_path_new
-+ibus_observed_path_traverse
-+ibus_observed_path_check_modification
-+ibus_observed_path_output
-+<SUBSECTION Standard>
-+IBUS_OBSERVED_PATH
-+IBUS_IS_OBSERVED_PATH
-+IBUS_TYPE_OBSERVED_PATH
-+ibus_observed_path_get_type
-+IBUS_OBSERVED_PATH_CLASS
-+IBUS_IS_OBSERVED_PATH_CLASS
-+IBUS_OBSERVED_PATH_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusserver</FILE>
-+IBusNewConnectionFunc
-+<TITLE>IBusServer</TITLE>
-+IBusServer
-+ibus_server_new
-+ibus_server_listen
-+ibus_server_disconnect
-+ibus_server_get_address
-+ibus_server_get_id
-+ibus_server_is_connected
-+<SUBSECTION Standard>
-+IBUS_SERVER
-+IBUS_IS_SERVER
-+IBUS_TYPE_SERVER
-+ibus_server_get_type
-+IBUS_SERVER_CLASS
-+IBUS_IS_SERVER_CLASS
-+IBUS_SERVER_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusengine</FILE>
-+<TITLE>IBusEngine</TITLE>
-+IBusEngine
-+ibus_engine_new
-+ibus_engine_commit_text
-+ibus_engine_update_preedit_text
-+ibus_engine_show_preedit_text
-+ibus_engine_hide_preedit_text
-+ibus_engine_update_auxiliary_text
-+ibus_engine_show_auxiliary_text
-+ibus_engine_hide_auxiliary_text
-+ibus_engine_update_lookup_table
-+ibus_engine_update_lookup_table_fast
-+ibus_engine_show_lookup_table
-+ibus_engine_hide_lookup_table
-+ibus_engine_forward_key_event
-+ibus_engine_register_properties
-+ibus_engine_update_property
-+ibus_engine_get_name
-+<SUBSECTION Standard>
-+IBUS_ENGINE
-+IBUS_IS_ENGINE
-+IBUS_TYPE_ENGINE
-+ibus_engine_get_type
-+IBUS_ENGINE_CLASS
-+IBUS_IS_ENGINE_CLASS
-+IBUS_ENGINE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconfigservice</FILE>
-+<TITLE>IBusConfigService</TITLE>
-+IBusConfigService
-+ibus_config_service_new
-+ibus_config_service_value_changed
-+<SUBSECTION Standard>
-+IBUS_CONFIG_SERVICE
-+IBUS_IS_CONFIG_SERVICE
-+IBUS_TYPE_CONFIG_SERVICE
-+ibus_config_service_get_type
-+IBUS_CONFIG_SERVICE_CLASS
-+IBUS_IS_CONFIG_SERVICE_CLASS
-+IBUS_CONFIG_SERVICE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusinputcontext</FILE>
-+<TITLE>IBusInputContext</TITLE>
-+IBusInputContext
-+ibus_input_context_process_key_event
-+ibus_input_context_set_cursor_location
-+ibus_input_context_set_capabilities
-+ibus_input_context_focus_in
-+ibus_input_context_focus_out
-+ibus_input_context_reset
-+ibus_input_context_enable
-+ibus_input_context_disable
-+<SUBSECTION Standard>
-+IBUS_INPUT_CONTEXT
-+IBUS_IS_INPUT_CONTEXT
-+IBUS_TYPE_INPUT_CONTEXT
-+ibus_input_context_get_type
-+IBUS_INPUT_CONTEXT_CLASS
-+IBUS_IS_INPUT_CONTEXT_CLASS
-+IBUS_INPUT_CONTEXT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuspendingcall</FILE>
-+IBusPendingCall
-+IBusPendingCallNotifyFunction
-+ibus_pending_call_ref
-+ibus_pending_call_unref
-+ibus_pending_call_set_notify
-+ibus_pending_call_cancel
-+ibus_pending_call_get_completed
-+ibus_pending_call_steal_reply
-+ibus_pending_call_block
-+ibus_pending_call_wait
-+ibus_pending_call_allocate_data_slot
-+ibus_pending_call_free_data_slot
-+ibus_pending_call_set_data
-+ibus_pending_call_get_data
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusxml</FILE>
-+XMLNode
-+ibus_xml_parse_file
-+ibus_xml_parse_buffer
-+ibus_xml_free
-+ibus_xml_output
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibustypes</FILE>
-+IBusModifierType
-+IBusCapabilite
-+IBusRectangle
-+IBusFreeFunc
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusmessage</FILE>
-+IBUS_TYPE_OBJECT_PATH
-+IBUS_TYPE_ARRAY
-+IBUS_TYPE_STRUCT
-+IBUS_TYPE_DICT_ENTRY
-+IBUS_TYPE_VARIANT
-+IBusMessage
-+IBusMessageIter
-+ibus_type_get_object_path
-+ibus_type_get_array
-+ibus_type_get_struct
-+ibus_type_get_dict_entry
-+ibus_type_get_variant
-+ibus_message_new
-+ibus_message_ref
-+ibus_message_unref
-+ibus_message_new_method_call
-+ibus_message_new_method_return
-+ibus_message_new_error
-+ibus_message_new_error_printf
-+ibus_message_new_signal
-+ibus_message_is_method_call
-+ibus_message_is_error
-+ibus_message_is_signal
-+ibus_message_set_destination
-+ibus_message_set_sender
-+ibus_message_set_error_name
-+ibus_message_set_interface
-+ibus_message_set_member
-+ibus_message_set_path
-+ibus_message_set_no_reply
-+ibus_message_set_reply_serial
-+ibus_message_get_type
-+ibus_message_get_destination
-+ibus_message_get_sender
-+ibus_message_get_error_name
-+ibus_message_get_error_message
-+ibus_message_get_interface
-+ibus_message_get_member
-+ibus_message_get_path
-+ibus_message_get_no_reply
-+ibus_message_get_reply_serial
-+ibus_message_get_serial
-+ibus_message_append_args
-+ibus_message_append_args_valist
-+ibus_message_get_args
-+ibus_message_get_args_valist
-+ibus_message_iter_init_append
-+ibus_message_iter_append
-+ibus_message_iter_init
-+ibus_message_iter_peek
-+ibus_message_iter_get_basic
-+ibus_message_iter_get
-+ibus_message_iter_next
-+ibus_message_iter_has_next
-+ibus_message_iter_open_container
-+ibus_message_iter_close_container
-+ibus_message_iter_recurse
-+ibus_message_iter_get_arg_type
-+ibus_message_iter_get_element_type
-+ibus_message_to_string
-+</SECTION>
-+
-+<SECTION>
-+<FILE>stamp-ibusenumtypes</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuserror</FILE>
-+IBusError
-+ibus_error_new
-+ibus_error_new_from_text
-+ibus_error_new_from_printf
-+ibus_error_new_from_message
-+ibus_error_free
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusenumtypes</FILE>
-+ibus_object_flags_get_type
-+IBUS_TYPE_OBJECT_FLAGS
-+ibus_attr_type_get_type
-+IBUS_TYPE_ATTR_TYPE
-+ibus_attr_underline_get_type
-+IBUS_TYPE_ATTR_UNDERLINE
-+ibus_prop_type_get_type
-+IBUS_TYPE_PROP_TYPE
-+ibus_prop_state_get_type
-+IBUS_TYPE_PROP_STATE
-+ibus_modifier_type_get_type
-+IBUS_TYPE_MODIFIER_TYPE
-+ibus_capabilite_get_type
-+IBUS_TYPE_CAPABILITE
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusshare</FILE>
-+IBUS_SERVICE_IBUS
-+IBUS_SERVICE_PANEL
-+IBUS_SERVICE_CONFIG
-+IBUS_SERVICE_NOTIFICATIONS
-+IBUS_PATH_IBUS
-+IBUS_PATH_FACTORY
-+IBUS_PATH_PANEL
-+IBUS_PATH_CONFIG
-+IBUS_PATH_NOTIFICATIONS
-+IBUS_PATH_INPUT_CONTEXT
-+IBUS_INTERFACE_IBUS
-+IBUS_INTERFACE_INPUT_CONTEXT
-+IBUS_INTERFACE_FACTORY
-+IBUS_INTERFACE_ENGINE
-+IBUS_INTERFACE_PANEL
-+IBUS_INTERFACE_CONFIG
-+IBUS_INTERFACE_NOTIFICATIONS
-+ibus_get_address
-+ibus_get_user_name
-+ibus_get_socket_path
-+ibus_keyval_name
-+ibus_keyval_from_name
-+ibus_free_strv
-+ibus_key_event_to_string
-+ibus_key_event_from_string
-+ibus_init
-+ibus_main
-+ibus_quit
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconfigprivate</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>stamp-ibusmarshalers</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>keyname-table</FILE>
-+gdk_key
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusmarshalers</FILE>
-+ibus_marshal_VOID__VOID
-+ibus_marshal_VOID__NONE
-+ibus_marshal_VOID__OBJECT
-+ibus_marshal_VOID__POINTER
-+ibus_marshal_VOID__STRING
-+ibus_marshal_VOID__STRING_INT
-+ibus_marshal_VOID__STRING_UINT
-+ibus_marshal_BOOLEAN__POINTER
-+ibus_marshal_BOOL__POINTER
-+ibus_marshal_BOOLEAN__POINTER_POINTER
-+ibus_marshal_BOOL__POINTER_POINTER
-+ibus_marshal_BOOLEAN__UINT_UINT
-+ibus_marshal_BOOL__UINT_UINT
-+ibus_marshal_VOID__INT_INT_INT_INT
-+ibus_marshal_VOID__UINT_UINT
-+ibus_marshal_VOID__OBJECT_UINT_BOOLEAN
-+ibus_marshal_VOID__OBJECT_UINT_BOOL
-+ibus_marshal_VOID__OBJECT_BOOLEAN
-+ibus_marshal_VOID__OBJECT_BOOL
-+ibus_marshal_VOID__BOXED_BOOLEAN
-+ibus_marshal_VOID__BOXED_BOOL
-+ibus_marshal_VOID__BOXED
-+ibus_marshal_VOID__STRING_STRING_BOXED
-+ibus_marshal_VOID__STRING_STRING_STRING
-+ibus_marshal_VOID__UINT
-+ibus_marshal_VOID__UINT_POINTER
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibus</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuskeysyms</FILE>
-+IBUS_VoidSymbol
-+IBUS_BackSpace
-+IBUS_Tab
-+IBUS_Linefeed
-+IBUS_Clear
-+IBUS_Return
-+IBUS_Pause
-+IBUS_Scroll_Lock
-+IBUS_Sys_Req
-+IBUS_Escape
-+IBUS_Delete
-+IBUS_Multi_key
-+IBUS_Codeinput
-+IBUS_SingleCandidate
-+IBUS_MultipleCandidate
-+IBUS_PreviousCandidate
-+IBUS_Kanji
-+IBUS_Muhenkan
-+IBUS_Henkan_Mode
-+IBUS_Henkan
-+IBUS_Romaji
-+IBUS_Hiragana
-+IBUS_Katakana
-+IBUS_Hiragana_Katakana
-+IBUS_Zenkaku
-+IBUS_Hankaku
-+IBUS_Zenkaku_Hankaku
-+IBUS_Touroku
-+IBUS_Massyo
-+IBUS_Kana_Lock
-+IBUS_Kana_Shift
-+IBUS_Eisu_Shift
-+IBUS_Eisu_toggle
-+IBUS_Kanji_Bangou
-+IBUS_Zen_Koho
-+IBUS_Mae_Koho
-+IBUS_Home
-+IBUS_Left
-+IBUS_Up
-+IBUS_Right
-+IBUS_Down
-+IBUS_Prior
-+IBUS_Page_Up
-+IBUS_Next
-+IBUS_Page_Down
-+IBUS_End
-+IBUS_Begin
-+IBUS_Select
-+IBUS_Print
-+IBUS_Execute
-+IBUS_Insert
-+IBUS_Undo
-+IBUS_Redo
-+IBUS_Menu
-+IBUS_Find
-+IBUS_Cancel
-+IBUS_Help
-+IBUS_Break
-+IBUS_Mode_switch
-+IBUS_script_switch
-+IBUS_Num_Lock
-+IBUS_KP_Space
-+IBUS_KP_Tab
-+IBUS_KP_Enter
-+IBUS_KP_F1
-+IBUS_KP_F2
-+IBUS_KP_F3
-+IBUS_KP_F4
-+IBUS_KP_Home
-+IBUS_KP_Left
-+IBUS_KP_Up
-+IBUS_KP_Right
-+IBUS_KP_Down
-+IBUS_KP_Prior
-+IBUS_KP_Page_Up
-+IBUS_KP_Next
-+IBUS_KP_Page_Down
-+IBUS_KP_End
-+IBUS_KP_Begin
-+IBUS_KP_Insert
-+IBUS_KP_Delete
-+IBUS_KP_Equal
-+IBUS_KP_Multiply
-+IBUS_KP_Add
-+IBUS_KP_Separator
-+IBUS_KP_Subtract
-+IBUS_KP_Decimal
-+IBUS_KP_Divide
-+IBUS_KP_0
-+IBUS_KP_1
-+IBUS_KP_2
-+IBUS_KP_3
-+IBUS_KP_4
-+IBUS_KP_5
-+IBUS_KP_6
-+IBUS_KP_7
-+IBUS_KP_8
-+IBUS_KP_9
-+IBUS_F1
-+IBUS_F2
-+IBUS_F3
-+IBUS_F4
-+IBUS_F5
-+IBUS_F6
-+IBUS_F7
-+IBUS_F8
-+IBUS_F9
-+IBUS_F10
-+IBUS_F11
-+IBUS_L1
-+IBUS_F12
-+IBUS_L2
-+IBUS_F13
-+IBUS_L3
-+IBUS_F14
-+IBUS_L4
-+IBUS_F15
-+IBUS_L5
-+IBUS_F16
-+IBUS_L6
-+IBUS_F17
-+IBUS_L7
-+IBUS_F18
-+IBUS_L8
-+IBUS_F19
-+IBUS_L9
-+IBUS_F20
-+IBUS_L10
-+IBUS_F21
-+IBUS_R1
-+IBUS_F22
-+IBUS_R2
-+IBUS_F23
-+IBUS_R3
-+IBUS_F24
-+IBUS_R4
-+IBUS_F25
-+IBUS_R5
-+IBUS_F26
-+IBUS_R6
-+IBUS_F27
-+IBUS_R7
-+IBUS_F28
-+IBUS_R8
-+IBUS_F29
-+IBUS_R9
-+IBUS_F30
-+IBUS_R10
-+IBUS_F31
-+IBUS_R11
-+IBUS_F32
-+IBUS_R12
-+IBUS_F33
-+IBUS_R13
-+IBUS_F34
-+IBUS_R14
-+IBUS_F35
-+IBUS_R15
-+IBUS_Shift_L
-+IBUS_Shift_R
-+IBUS_Control_L
-+IBUS_Control_R
-+IBUS_Caps_Lock
-+IBUS_Shift_Lock
-+IBUS_Meta_L
-+IBUS_Meta_R
-+IBUS_Alt_L
-+IBUS_Alt_R
-+IBUS_Super_L
-+IBUS_Super_R
-+IBUS_Hyper_L
-+IBUS_Hyper_R
-+IBUS_ISO_Lock
-+IBUS_ISO_Level2_Latch
-+IBUS_ISO_Level3_Shift
-+IBUS_ISO_Level3_Latch
-+IBUS_ISO_Level3_Lock
-+IBUS_ISO_Level5_Shift
-+IBUS_ISO_Level5_Latch
-+IBUS_ISO_Level5_Lock
-+IBUS_ISO_Group_Shift
-+IBUS_ISO_Group_Latch
-+IBUS_ISO_Group_Lock
-+IBUS_ISO_Next_Group
-+IBUS_ISO_Next_Group_Lock
-+IBUS_ISO_Prev_Group
-+IBUS_ISO_Prev_Group_Lock
-+IBUS_ISO_First_Group
-+IBUS_ISO_First_Group_Lock
-+IBUS_ISO_Last_Group
-+IBUS_ISO_Last_Group_Lock
-+IBUS_ISO_Left_Tab
-+IBUS_ISO_Move_Line_Up
-+IBUS_ISO_Move_Line_Down
-+IBUS_ISO_Partial_Line_Up
-+IBUS_ISO_Partial_Line_Down
-+IBUS_ISO_Partial_Space_Left
-+IBUS_ISO_Partial_Space_Right
-+IBUS_ISO_Set_Margin_Left
-+IBUS_ISO_Set_Margin_Right
-+IBUS_ISO_Release_Margin_Left
-+IBUS_ISO_Release_Margin_Right
-+IBUS_ISO_Release_Both_Margins
-+IBUS_ISO_Fast_Cursor_Left
-+IBUS_ISO_Fast_Cursor_Right
-+IBUS_ISO_Fast_Cursor_Up
-+IBUS_ISO_Fast_Cursor_Down
-+IBUS_ISO_Continuous_Underline
-+IBUS_ISO_Discontinuous_Underline
-+IBUS_ISO_Emphasize
-+IBUS_ISO_Center_Object
-+IBUS_ISO_Enter
-+IBUS_dead_grave
-+IBUS_dead_acute
-+IBUS_dead_circumflex
-+IBUS_dead_tilde
-+IBUS_dead_perispomeni
-+IBUS_dead_macron
-+IBUS_dead_breve
-+IBUS_dead_abovedot
-+IBUS_dead_diaeresis
-+IBUS_dead_abovering
-+IBUS_dead_doubleacute
-+IBUS_dead_caron
-+IBUS_dead_cedilla
-+IBUS_dead_ogonek
-+IBUS_dead_iota
-+IBUS_dead_voiced_sound
-+IBUS_dead_semivoiced_sound
-+IBUS_dead_belowdot
-+IBUS_dead_hook
-+IBUS_dead_horn
-+IBUS_dead_stroke
-+IBUS_dead_abovecomma
-+IBUS_dead_psili
-+IBUS_dead_abovereversedcomma
-+IBUS_dead_dasia
-+IBUS_dead_belowring
-+IBUS_dead_belowmacron
-+IBUS_dead_belowcircumflex
-+IBUS_dead_belowtilde
-+IBUS_dead_belowbreve
-+IBUS_dead_belowdiaeresis
-+IBUS_First_Virtual_Screen
-+IBUS_Prev_Virtual_Screen
-+IBUS_Next_Virtual_Screen
-+IBUS_Last_Virtual_Screen
-+IBUS_Terminate_Server
-+IBUS_AccessX_Enable
-+IBUS_AccessX_Feedback_Enable
-+IBUS_RepeatKeys_Enable
-+IBUS_SlowKeys_Enable
-+IBUS_BounceKeys_Enable
-+IBUS_StickyKeys_Enable
-+IBUS_MouseKeys_Enable
-+IBUS_MouseKeys_Accel_Enable
-+IBUS_Overlay1_Enable
-+IBUS_Overlay2_Enable
-+IBUS_AudibleBell_Enable
-+IBUS_Pointer_Left
-+IBUS_Pointer_Right
-+IBUS_Pointer_Up
-+IBUS_Pointer_Down
-+IBUS_Pointer_UpLeft
-+IBUS_Pointer_UpRight
-+IBUS_Pointer_DownLeft
-+IBUS_Pointer_DownRight
-+IBUS_Pointer_Button_Dflt
-+IBUS_Pointer_Button1
-+IBUS_Pointer_Button2
-+IBUS_Pointer_Button3
-+IBUS_Pointer_Button4
-+IBUS_Pointer_Button5
-+IBUS_Pointer_DblClick_Dflt
-+IBUS_Pointer_DblClick1
-+IBUS_Pointer_DblClick2
-+IBUS_Pointer_DblClick3
-+IBUS_Pointer_DblClick4
-+IBUS_Pointer_DblClick5
-+IBUS_Pointer_Drag_Dflt
-+IBUS_Pointer_Drag1
-+IBUS_Pointer_Drag2
-+IBUS_Pointer_Drag3
-+IBUS_Pointer_Drag4
-+IBUS_Pointer_Drag5
-+IBUS_Pointer_EnableKeys
-+IBUS_Pointer_Accelerate
-+IBUS_Pointer_DfltBtnNext
-+IBUS_Pointer_DfltBtnPrev
-+IBUS_3270_Duplicate
-+IBUS_3270_FieldMark
-+IBUS_3270_Right2
-+IBUS_3270_Left2
-+IBUS_3270_BackTab
-+IBUS_3270_EraseEOF
-+IBUS_3270_EraseInput
-+IBUS_3270_Reset
-+IBUS_3270_Quit
-+IBUS_3270_PA1
-+IBUS_3270_PA2
-+IBUS_3270_PA3
-+IBUS_3270_Test
-+IBUS_3270_Attn
-+IBUS_3270_CursorBlink
-+IBUS_3270_AltCursor
-+IBUS_3270_KeyClick
-+IBUS_3270_Jump
-+IBUS_3270_Ident
-+IBUS_3270_Rule
-+IBUS_3270_Copy
-+IBUS_3270_Play
-+IBUS_3270_Setup
-+IBUS_3270_Record
-+IBUS_3270_ChangeScreen
-+IBUS_3270_DeleteWord
-+IBUS_3270_ExSelect
-+IBUS_3270_CursorSelect
-+IBUS_3270_PrintScreen
-+IBUS_3270_Enter
-+IBUS_space
-+IBUS_exclam
-+IBUS_quotedbl
-+IBUS_numbersign
-+IBUS_dollar
-+IBUS_percent
-+IBUS_ampersand
-+IBUS_apostrophe
-+IBUS_quoteright
-+IBUS_parenleft
-+IBUS_parenright
-+IBUS_asterisk
-+IBUS_plus
-+IBUS_comma
-+IBUS_minus
-+IBUS_period
-+IBUS_slash
-+IBUS_0
-+IBUS_1
-+IBUS_2
-+IBUS_3
-+IBUS_4
-+IBUS_5
-+IBUS_6
-+IBUS_7
-+IBUS_8
-+IBUS_9
-+IBUS_colon
-+IBUS_semicolon
-+IBUS_less
-+IBUS_equal
-+IBUS_greater
-+IBUS_question
-+IBUS_at
-+IBUS_A
-+IBUS_B
-+IBUS_C
-+IBUS_D
-+IBUS_E
-+IBUS_F
-+IBUS_G
-+IBUS_H
-+IBUS_I
-+IBUS_J
-+IBUS_K
-+IBUS_L
-+IBUS_M
-+IBUS_N
-+IBUS_O
-+IBUS_P
-+IBUS_Q
-+IBUS_R
-+IBUS_S
-+IBUS_T
-+IBUS_U
-+IBUS_V
-+IBUS_W
-+IBUS_X
-+IBUS_Y
-+IBUS_Z
-+IBUS_bracketleft
-+IBUS_backslash
-+IBUS_bracketright
-+IBUS_asciicircum
-+IBUS_underscore
-+IBUS_grave
-+IBUS_quoteleft
-+IBUS_a
-+IBUS_b
-+IBUS_c
-+IBUS_d
-+IBUS_e
-+IBUS_f
-+IBUS_g
-+IBUS_h
-+IBUS_i
-+IBUS_j
-+IBUS_k
-+IBUS_l
-+IBUS_m
-+IBUS_n
-+IBUS_o
-+IBUS_p
-+IBUS_q
-+IBUS_r
-+IBUS_s
-+IBUS_t
-+IBUS_u
-+IBUS_v
-+IBUS_w
-+IBUS_x
-+IBUS_y
-+IBUS_z
-+IBUS_braceleft
-+IBUS_bar
-+IBUS_braceright
-+IBUS_asciitilde
-+IBUS_nobreakspace
-+IBUS_exclamdown
-+IBUS_cent
-+IBUS_sterling
-+IBUS_currency
-+IBUS_yen
-+IBUS_brokenbar
-+IBUS_section
-+IBUS_diaeresis
-+IBUS_copyright
-+IBUS_ordfeminine
-+IBUS_guillemotleft
-+IBUS_notsign
-+IBUS_hyphen
-+IBUS_registered
-+IBUS_macron
-+IBUS_degree
-+IBUS_plusminus
-+IBUS_twosuperior
-+IBUS_threesuperior
-+IBUS_acute
-+IBUS_mu
-+IBUS_paragraph
-+IBUS_periodcentered
-+IBUS_cedilla
-+IBUS_onesuperior
-+IBUS_masculine
-+IBUS_guillemotright
-+IBUS_onequarter
-+IBUS_onehalf
-+IBUS_threequarters
-+IBUS_questiondown
-+IBUS_Agrave
-+IBUS_Aacute
-+IBUS_Acircumflex
-+IBUS_Atilde
-+IBUS_Adiaeresis
-+IBUS_Aring
-+IBUS_AE
-+IBUS_Ccedilla
-+IBUS_Egrave
-+IBUS_Eacute
-+IBUS_Ecircumflex
-+IBUS_Ediaeresis
-+IBUS_Igrave
-+IBUS_Iacute
-+IBUS_Icircumflex
-+IBUS_Idiaeresis
-+IBUS_ETH
-+IBUS_Eth
-+IBUS_Ntilde
-+IBUS_Ograve
-+IBUS_Oacute
-+IBUS_Ocircumflex
-+IBUS_Otilde
-+IBUS_Odiaeresis
-+IBUS_multiply
-+IBUS_Oslash
-+IBUS_Ooblique
-+IBUS_Ugrave
-+IBUS_Uacute
-+IBUS_Ucircumflex
-+IBUS_Udiaeresis
-+IBUS_Yacute
-+IBUS_THORN
-+IBUS_Thorn
-+IBUS_ssharp
-+IBUS_agrave
-+IBUS_aacute
-+IBUS_acircumflex
-+IBUS_atilde
-+IBUS_adiaeresis
-+IBUS_aring
-+IBUS_ae
-+IBUS_ccedilla
-+IBUS_egrave
-+IBUS_eacute
-+IBUS_ecircumflex
-+IBUS_ediaeresis
-+IBUS_igrave
-+IBUS_iacute
-+IBUS_icircumflex
-+IBUS_idiaeresis
-+IBUS_eth
-+IBUS_ntilde
-+IBUS_ograve
-+IBUS_oacute
-+IBUS_ocircumflex
-+IBUS_otilde
-+IBUS_odiaeresis
-+IBUS_division
-+IBUS_oslash
-+IBUS_ooblique
-+IBUS_ugrave
-+IBUS_uacute
-+IBUS_ucircumflex
-+IBUS_udiaeresis
-+IBUS_yacute
-+IBUS_thorn
-+IBUS_ydiaeresis
-+IBUS_Aogonek
-+IBUS_breve
-+IBUS_Lstroke
-+IBUS_Lcaron
-+IBUS_Sacute
-+IBUS_Scaron
-+IBUS_Scedilla
-+IBUS_Tcaron
-+IBUS_Zacute
-+IBUS_Zcaron
-+IBUS_Zabovedot
-+IBUS_aogonek
-+IBUS_ogonek
-+IBUS_lstroke
-+IBUS_lcaron
-+IBUS_sacute
-+IBUS_caron
-+IBUS_scaron
-+IBUS_scedilla
-+IBUS_tcaron
-+IBUS_zacute
-+IBUS_doubleacute
-+IBUS_zcaron
-+IBUS_zabovedot
-+IBUS_Racute
-+IBUS_Abreve
-+IBUS_Lacute
-+IBUS_Cacute
-+IBUS_Ccaron
-+IBUS_Eogonek
-+IBUS_Ecaron
-+IBUS_Dcaron
-+IBUS_Dstroke
-+IBUS_Nacute
-+IBUS_Ncaron
-+IBUS_Odoubleacute
-+IBUS_Rcaron
-+IBUS_Uring
-+IBUS_Udoubleacute
-+IBUS_Tcedilla
-+IBUS_racute
-+IBUS_abreve
-+IBUS_lacute
-+IBUS_cacute
-+IBUS_ccaron
-+IBUS_eogonek
-+IBUS_ecaron
-+IBUS_dcaron
-+IBUS_dstroke
-+IBUS_nacute
-+IBUS_ncaron
-+IBUS_odoubleacute
-+IBUS_udoubleacute
-+IBUS_rcaron
-+IBUS_uring
-+IBUS_tcedilla
-+IBUS_abovedot
-+IBUS_Hstroke
-+IBUS_Hcircumflex
-+IBUS_Iabovedot
-+IBUS_Gbreve
-+IBUS_Jcircumflex
-+IBUS_hstroke
-+IBUS_hcircumflex
-+IBUS_idotless
-+IBUS_gbreve
-+IBUS_jcircumflex
-+IBUS_Cabovedot
-+IBUS_Ccircumflex
-+IBUS_Gabovedot
-+IBUS_Gcircumflex
-+IBUS_Ubreve
-+IBUS_Scircumflex
-+IBUS_cabovedot
-+IBUS_ccircumflex
-+IBUS_gabovedot
-+IBUS_gcircumflex
-+IBUS_ubreve
-+IBUS_scircumflex
-+IBUS_kra
-+IBUS_kappa
-+IBUS_Rcedilla
-+IBUS_Itilde
-+IBUS_Lcedilla
-+IBUS_Emacron
-+IBUS_Gcedilla
-+IBUS_Tslash
-+IBUS_rcedilla
-+IBUS_itilde
-+IBUS_lcedilla
-+IBUS_emacron
-+IBUS_gcedilla
-+IBUS_tslash
-+IBUS_ENG
-+IBUS_eng
-+IBUS_Amacron
-+IBUS_Iogonek
-+IBUS_Eabovedot
-+IBUS_Imacron
-+IBUS_Ncedilla
-+IBUS_Omacron
-+IBUS_Kcedilla
-+IBUS_Uogonek
-+IBUS_Utilde
-+IBUS_Umacron
-+IBUS_amacron
-+IBUS_iogonek
-+IBUS_eabovedot
-+IBUS_imacron
-+IBUS_ncedilla
-+IBUS_omacron
-+IBUS_kcedilla
-+IBUS_uogonek
-+IBUS_utilde
-+IBUS_umacron
-+IBUS_Babovedot
-+IBUS_babovedot
-+IBUS_Dabovedot
-+IBUS_Wgrave
-+IBUS_Wacute
-+IBUS_dabovedot
-+IBUS_Ygrave
-+IBUS_Fabovedot
-+IBUS_fabovedot
-+IBUS_Mabovedot
-+IBUS_mabovedot
-+IBUS_Pabovedot
-+IBUS_wgrave
-+IBUS_pabovedot
-+IBUS_wacute
-+IBUS_Sabovedot
-+IBUS_ygrave
-+IBUS_Wdiaeresis
-+IBUS_wdiaeresis
-+IBUS_sabovedot
-+IBUS_Wcircumflex
-+IBUS_Tabovedot
-+IBUS_Ycircumflex
-+IBUS_wcircumflex
-+IBUS_tabovedot
-+IBUS_ycircumflex
-+IBUS_OE
-+IBUS_oe
-+IBUS_Ydiaeresis
-+IBUS_overline
-+IBUS_kana_fullstop
-+IBUS_kana_openingbracket
-+IBUS_kana_closingbracket
-+IBUS_kana_comma
-+IBUS_kana_conjunctive
-+IBUS_kana_middledot
-+IBUS_kana_WO
-+IBUS_kana_a
-+IBUS_kana_i
-+IBUS_kana_u
-+IBUS_kana_e
-+IBUS_kana_o
-+IBUS_kana_ya
-+IBUS_kana_yu
-+IBUS_kana_yo
-+IBUS_kana_tsu
-+IBUS_kana_tu
-+IBUS_prolongedsound
-+IBUS_kana_A
-+IBUS_kana_I
-+IBUS_kana_U
-+IBUS_kana_E
-+IBUS_kana_O
-+IBUS_kana_KA
-+IBUS_kana_KI
-+IBUS_kana_KU
-+IBUS_kana_KE
-+IBUS_kana_KO
-+IBUS_kana_SA
-+IBUS_kana_SHI
-+IBUS_kana_SU
-+IBUS_kana_SE
-+IBUS_kana_SO
-+IBUS_kana_TA
-+IBUS_kana_CHI
-+IBUS_kana_TI
-+IBUS_kana_TSU
-+IBUS_kana_TU
-+IBUS_kana_TE
-+IBUS_kana_TO
-+IBUS_kana_NA
-+IBUS_kana_NI
-+IBUS_kana_NU
-+IBUS_kana_NE
-+IBUS_kana_NO
-+IBUS_kana_HA
-+IBUS_kana_HI
-+IBUS_kana_FU
-+IBUS_kana_HU
-+IBUS_kana_HE
-+IBUS_kana_HO
-+IBUS_kana_MA
-+IBUS_kana_MI
-+IBUS_kana_MU
-+IBUS_kana_ME
-+IBUS_kana_MO
-+IBUS_kana_YA
-+IBUS_kana_YU
-+IBUS_kana_YO
-+IBUS_kana_RA
-+IBUS_kana_RI
-+IBUS_kana_RU
-+IBUS_kana_RE
-+IBUS_kana_RO
-+IBUS_kana_WA
-+IBUS_kana_N
-+IBUS_voicedsound
-+IBUS_semivoicedsound
-+IBUS_kana_switch
-+IBUS_Farsi_0
-+IBUS_Farsi_1
-+IBUS_Farsi_2
-+IBUS_Farsi_3
-+IBUS_Farsi_4
-+IBUS_Farsi_5
-+IBUS_Farsi_6
-+IBUS_Farsi_7
-+IBUS_Farsi_8
-+IBUS_Farsi_9
-+IBUS_Arabic_percent
-+IBUS_Arabic_superscript_alef
-+IBUS_Arabic_tteh
-+IBUS_Arabic_peh
-+IBUS_Arabic_tcheh
-+IBUS_Arabic_ddal
-+IBUS_Arabic_rreh
-+IBUS_Arabic_comma
-+IBUS_Arabic_fullstop
-+IBUS_Arabic_0
-+IBUS_Arabic_1
-+IBUS_Arabic_2
-+IBUS_Arabic_3
-+IBUS_Arabic_4
-+IBUS_Arabic_5
-+IBUS_Arabic_6
-+IBUS_Arabic_7
-+IBUS_Arabic_8
-+IBUS_Arabic_9
-+IBUS_Arabic_semicolon
-+IBUS_Arabic_question_mark
-+IBUS_Arabic_hamza
-+IBUS_Arabic_maddaonalef
-+IBUS_Arabic_hamzaonalef
-+IBUS_Arabic_hamzaonwaw
-+IBUS_Arabic_hamzaunderalef
-+IBUS_Arabic_hamzaonyeh
-+IBUS_Arabic_alef
-+IBUS_Arabic_beh
-+IBUS_Arabic_tehmarbuta
-+IBUS_Arabic_teh
-+IBUS_Arabic_theh
-+IBUS_Arabic_jeem
-+IBUS_Arabic_hah
-+IBUS_Arabic_khah
-+IBUS_Arabic_dal
-+IBUS_Arabic_thal
-+IBUS_Arabic_ra
-+IBUS_Arabic_zain
-+IBUS_Arabic_seen
-+IBUS_Arabic_sheen
-+IBUS_Arabic_sad
-+IBUS_Arabic_dad
-+IBUS_Arabic_tah
-+IBUS_Arabic_zah
-+IBUS_Arabic_ain
-+IBUS_Arabic_ghain
-+IBUS_Arabic_tatweel
-+IBUS_Arabic_feh
-+IBUS_Arabic_qaf
-+IBUS_Arabic_kaf
-+IBUS_Arabic_lam
-+IBUS_Arabic_meem
-+IBUS_Arabic_noon
-+IBUS_Arabic_ha
-+IBUS_Arabic_heh
-+IBUS_Arabic_waw
-+IBUS_Arabic_alefmaksura
-+IBUS_Arabic_yeh
-+IBUS_Arabic_fathatan
-+IBUS_Arabic_dammatan
-+IBUS_Arabic_kasratan
-+IBUS_Arabic_fatha
-+IBUS_Arabic_damma
-+IBUS_Arabic_kasra
-+IBUS_Arabic_shadda
-+IBUS_Arabic_sukun
-+IBUS_Arabic_madda_above
-+IBUS_Arabic_hamza_above
-+IBUS_Arabic_hamza_below
-+IBUS_Arabic_jeh
-+IBUS_Arabic_veh
-+IBUS_Arabic_keheh
-+IBUS_Arabic_gaf
-+IBUS_Arabic_noon_ghunna
-+IBUS_Arabic_heh_doachashmee
-+IBUS_Farsi_yeh
-+IBUS_Arabic_farsi_yeh
-+IBUS_Arabic_yeh_baree
-+IBUS_Arabic_heh_goal
-+IBUS_Arabic_switch
-+IBUS_Cyrillic_GHE_bar
-+IBUS_Cyrillic_ghe_bar
-+IBUS_Cyrillic_ZHE_descender
-+IBUS_Cyrillic_zhe_descender
-+IBUS_Cyrillic_KA_descender
-+IBUS_Cyrillic_ka_descender
-+IBUS_Cyrillic_KA_vertstroke
-+IBUS_Cyrillic_ka_vertstroke
-+IBUS_Cyrillic_EN_descender
-+IBUS_Cyrillic_en_descender
-+IBUS_Cyrillic_U_straight
-+IBUS_Cyrillic_u_straight
-+IBUS_Cyrillic_U_straight_bar
-+IBUS_Cyrillic_u_straight_bar
-+IBUS_Cyrillic_HA_descender
-+IBUS_Cyrillic_ha_descender
-+IBUS_Cyrillic_CHE_descender
-+IBUS_Cyrillic_che_descender
-+IBUS_Cyrillic_CHE_vertstroke
-+IBUS_Cyrillic_che_vertstroke
-+IBUS_Cyrillic_SHHA
-+IBUS_Cyrillic_shha
-+IBUS_Cyrillic_SCHWA
-+IBUS_Cyrillic_schwa
-+IBUS_Cyrillic_I_macron
-+IBUS_Cyrillic_i_macron
-+IBUS_Cyrillic_O_bar
-+IBUS_Cyrillic_o_bar
-+IBUS_Cyrillic_U_macron
-+IBUS_Cyrillic_u_macron
-+IBUS_Serbian_dje
-+IBUS_Macedonia_gje
-+IBUS_Cyrillic_io
-+IBUS_Ukrainian_ie
-+IBUS_Ukranian_je
-+IBUS_Macedonia_dse
-+IBUS_Ukrainian_i
-+IBUS_Ukranian_i
-+IBUS_Ukrainian_yi
-+IBUS_Ukranian_yi
-+IBUS_Cyrillic_je
-+IBUS_Serbian_je
-+IBUS_Cyrillic_lje
-+IBUS_Serbian_lje
-+IBUS_Cyrillic_nje
-+IBUS_Serbian_nje
-+IBUS_Serbian_tshe
-+IBUS_Macedonia_kje
-+IBUS_Ukrainian_ghe_with_upturn
-+IBUS_Byelorussian_shortu
-+IBUS_Cyrillic_dzhe
-+IBUS_Serbian_dze
-+IBUS_numerosign
-+IBUS_Serbian_DJE
-+IBUS_Macedonia_GJE
-+IBUS_Cyrillic_IO
-+IBUS_Ukrainian_IE
-+IBUS_Ukranian_JE
-+IBUS_Macedonia_DSE
-+IBUS_Ukrainian_I
-+IBUS_Ukranian_I
-+IBUS_Ukrainian_YI
-+IBUS_Ukranian_YI
-+IBUS_Cyrillic_JE
-+IBUS_Serbian_JE
-+IBUS_Cyrillic_LJE
-+IBUS_Serbian_LJE
-+IBUS_Cyrillic_NJE
-+IBUS_Serbian_NJE
-+IBUS_Serbian_TSHE
-+IBUS_Macedonia_KJE
-+IBUS_Ukrainian_GHE_WITH_UPTURN
-+IBUS_Byelorussian_SHORTU
-+IBUS_Cyrillic_DZHE
-+IBUS_Serbian_DZE
-+IBUS_Cyrillic_yu
-+IBUS_Cyrillic_a
-+IBUS_Cyrillic_be
-+IBUS_Cyrillic_tse
-+IBUS_Cyrillic_de
-+IBUS_Cyrillic_ie
-+IBUS_Cyrillic_ef
-+IBUS_Cyrillic_ghe
-+IBUS_Cyrillic_ha
-+IBUS_Cyrillic_i
-+IBUS_Cyrillic_shorti
-+IBUS_Cyrillic_ka
-+IBUS_Cyrillic_el
-+IBUS_Cyrillic_em
-+IBUS_Cyrillic_en
-+IBUS_Cyrillic_o
-+IBUS_Cyrillic_pe
-+IBUS_Cyrillic_ya
-+IBUS_Cyrillic_er
-+IBUS_Cyrillic_es
-+IBUS_Cyrillic_te
-+IBUS_Cyrillic_u
-+IBUS_Cyrillic_zhe
-+IBUS_Cyrillic_ve
-+IBUS_Cyrillic_softsign
-+IBUS_Cyrillic_yeru
-+IBUS_Cyrillic_ze
-+IBUS_Cyrillic_sha
-+IBUS_Cyrillic_e
-+IBUS_Cyrillic_shcha
-+IBUS_Cyrillic_che
-+IBUS_Cyrillic_hardsign
-+IBUS_Cyrillic_YU
-+IBUS_Cyrillic_A
-+IBUS_Cyrillic_BE
-+IBUS_Cyrillic_TSE
-+IBUS_Cyrillic_DE
-+IBUS_Cyrillic_IE
-+IBUS_Cyrillic_EF
-+IBUS_Cyrillic_GHE
-+IBUS_Cyrillic_HA
-+IBUS_Cyrillic_I
-+IBUS_Cyrillic_SHORTI
-+IBUS_Cyrillic_KA
-+IBUS_Cyrillic_EL
-+IBUS_Cyrillic_EM
-+IBUS_Cyrillic_EN
-+IBUS_Cyrillic_O
-+IBUS_Cyrillic_PE
-+IBUS_Cyrillic_YA
-+IBUS_Cyrillic_ER
-+IBUS_Cyrillic_ES
-+IBUS_Cyrillic_TE
-+IBUS_Cyrillic_U
-+IBUS_Cyrillic_ZHE
-+IBUS_Cyrillic_VE
-+IBUS_Cyrillic_SOFTSIGN
-+IBUS_Cyrillic_YERU
-+IBUS_Cyrillic_ZE
-+IBUS_Cyrillic_SHA
-+IBUS_Cyrillic_E
-+IBUS_Cyrillic_SHCHA
-+IBUS_Cyrillic_CHE
-+IBUS_Cyrillic_HARDSIGN
-+IBUS_Greek_ALPHAaccent
-+IBUS_Greek_EPSILONaccent
-+IBUS_Greek_ETAaccent
-+IBUS_Greek_IOTAaccent
-+IBUS_Greek_IOTAdieresis
-+IBUS_Greek_IOTAdiaeresis
-+IBUS_Greek_OMICRONaccent
-+IBUS_Greek_UPSILONaccent
-+IBUS_Greek_UPSILONdieresis
-+IBUS_Greek_OMEGAaccent
-+IBUS_Greek_accentdieresis
-+IBUS_Greek_horizbar
-+IBUS_Greek_alphaaccent
-+IBUS_Greek_epsilonaccent
-+IBUS_Greek_etaaccent
-+IBUS_Greek_iotaaccent
-+IBUS_Greek_iotadieresis
-+IBUS_Greek_iotaaccentdieresis
-+IBUS_Greek_omicronaccent
-+IBUS_Greek_upsilonaccent
-+IBUS_Greek_upsilondieresis
-+IBUS_Greek_upsilonaccentdieresis
-+IBUS_Greek_omegaaccent
-+IBUS_Greek_ALPHA
-+IBUS_Greek_BETA
-+IBUS_Greek_GAMMA
-+IBUS_Greek_DELTA
-+IBUS_Greek_EPSILON
-+IBUS_Greek_ZETA
-+IBUS_Greek_ETA
-+IBUS_Greek_THETA
-+IBUS_Greek_IOTA
-+IBUS_Greek_KAPPA
-+IBUS_Greek_LAMDA
-+IBUS_Greek_LAMBDA
-+IBUS_Greek_MU
-+IBUS_Greek_NU
-+IBUS_Greek_XI
-+IBUS_Greek_OMICRON
-+IBUS_Greek_PI
-+IBUS_Greek_RHO
-+IBUS_Greek_SIGMA
-+IBUS_Greek_TAU
-+IBUS_Greek_UPSILON
-+IBUS_Greek_PHI
-+IBUS_Greek_CHI
-+IBUS_Greek_PSI
-+IBUS_Greek_OMEGA
-+IBUS_Greek_alpha
-+IBUS_Greek_beta
-+IBUS_Greek_gamma
-+IBUS_Greek_delta
-+IBUS_Greek_epsilon
-+IBUS_Greek_zeta
-+IBUS_Greek_eta
-+IBUS_Greek_theta
-+IBUS_Greek_iota
-+IBUS_Greek_kappa
-+IBUS_Greek_lamda
-+IBUS_Greek_lambda
-+IBUS_Greek_mu
-+IBUS_Greek_nu
-+IBUS_Greek_xi
-+IBUS_Greek_omicron
-+IBUS_Greek_pi
-+IBUS_Greek_rho
-+IBUS_Greek_sigma
-+IBUS_Greek_finalsmallsigma
-+IBUS_Greek_tau
-+IBUS_Greek_upsilon
-+IBUS_Greek_phi
-+IBUS_Greek_chi
-+IBUS_Greek_psi
-+IBUS_Greek_omega
-+IBUS_Greek_switch
-+IBUS_leftradical
-+IBUS_topleftradical
-+IBUS_horizconnector
-+IBUS_topintegral
-+IBUS_botintegral
-+IBUS_vertconnector
-+IBUS_topleftsqbracket
-+IBUS_botleftsqbracket
-+IBUS_toprightsqbracket
-+IBUS_botrightsqbracket
-+IBUS_topleftparens
-+IBUS_botleftparens
-+IBUS_toprightparens
-+IBUS_botrightparens
-+IBUS_leftmiddlecurlybrace
-+IBUS_rightmiddlecurlybrace
-+IBUS_topleftsummation
-+IBUS_botleftsummation
-+IBUS_topvertsummationconnector
-+IBUS_botvertsummationconnector
-+IBUS_toprightsummation
-+IBUS_botrightsummation
-+IBUS_rightmiddlesummation
-+IBUS_lessthanequal
-+IBUS_notequal
-+IBUS_greaterthanequal
-+IBUS_integral
-+IBUS_therefore
-+IBUS_variation
-+IBUS_infinity
-+IBUS_nabla
-+IBUS_approximate
-+IBUS_similarequal
-+IBUS_ifonlyif
-+IBUS_implies
-+IBUS_identical
-+IBUS_radical
-+IBUS_includedin
-+IBUS_includes
-+IBUS_intersection
-+IBUS_union
-+IBUS_logicaland
-+IBUS_logicalor
-+IBUS_partialderivative
-+IBUS_function
-+IBUS_leftarrow
-+IBUS_uparrow
-+IBUS_rightarrow
-+IBUS_downarrow
-+IBUS_blank
-+IBUS_soliddiamond
-+IBUS_checkerboard
-+IBUS_ht
-+IBUS_ff
-+IBUS_cr
-+IBUS_lf
-+IBUS_nl
-+IBUS_vt
-+IBUS_lowrightcorner
-+IBUS_uprightcorner
-+IBUS_upleftcorner
-+IBUS_lowleftcorner
-+IBUS_crossinglines
-+IBUS_horizlinescan1
-+IBUS_horizlinescan3
-+IBUS_horizlinescan5
-+IBUS_horizlinescan7
-+IBUS_horizlinescan9
-+IBUS_leftt
-+IBUS_rightt
-+IBUS_bott
-+IBUS_topt
-+IBUS_vertbar
-+IBUS_emspace
-+IBUS_enspace
-+IBUS_em3space
-+IBUS_em4space
-+IBUS_digitspace
-+IBUS_punctspace
-+IBUS_thinspace
-+IBUS_hairspace
-+IBUS_emdash
-+IBUS_endash
-+IBUS_signifblank
-+IBUS_ellipsis
-+IBUS_doubbaselinedot
-+IBUS_onethird
-+IBUS_twothirds
-+IBUS_onefifth
-+IBUS_twofifths
-+IBUS_threefifths
-+IBUS_fourfifths
-+IBUS_onesixth
-+IBUS_fivesixths
-+IBUS_careof
-+IBUS_figdash
-+IBUS_leftanglebracket
-+IBUS_decimalpoint
-+IBUS_rightanglebracket
-+IBUS_marker
-+IBUS_oneeighth
-+IBUS_threeeighths
-+IBUS_fiveeighths
-+IBUS_seveneighths
-+IBUS_trademark
-+IBUS_signaturemark
-+IBUS_trademarkincircle
-+IBUS_leftopentriangle
-+IBUS_rightopentriangle
-+IBUS_emopencircle
-+IBUS_emopenrectangle
-+IBUS_leftsinglequotemark
-+IBUS_rightsinglequotemark
-+IBUS_leftdoublequotemark
-+IBUS_rightdoublequotemark
-+IBUS_prescription
-+IBUS_minutes
-+IBUS_seconds
-+IBUS_latincross
-+IBUS_hexagram
-+IBUS_filledrectbullet
-+IBUS_filledlefttribullet
-+IBUS_filledrighttribullet
-+IBUS_emfilledcircle
-+IBUS_emfilledrect
-+IBUS_enopencircbullet
-+IBUS_enopensquarebullet
-+IBUS_openrectbullet
-+IBUS_opentribulletup
-+IBUS_opentribulletdown
-+IBUS_openstar
-+IBUS_enfilledcircbullet
-+IBUS_enfilledsqbullet
-+IBUS_filledtribulletup
-+IBUS_filledtribulletdown
-+IBUS_leftpointer
-+IBUS_rightpointer
-+IBUS_club
-+IBUS_diamond
-+IBUS_heart
-+IBUS_maltesecross
-+IBUS_dagger
-+IBUS_doubledagger
-+IBUS_checkmark
-+IBUS_ballotcross
-+IBUS_musicalsharp
-+IBUS_musicalflat
-+IBUS_malesymbol
-+IBUS_femalesymbol
-+IBUS_telephone
-+IBUS_telephonerecorder
-+IBUS_phonographcopyright
-+IBUS_caret
-+IBUS_singlelowquotemark
-+IBUS_doublelowquotemark
-+IBUS_cursor
-+IBUS_leftcaret
-+IBUS_rightcaret
-+IBUS_downcaret
-+IBUS_upcaret
-+IBUS_overbar
-+IBUS_downtack
-+IBUS_upshoe
-+IBUS_downstile
-+IBUS_underbar
-+IBUS_jot
-+IBUS_quad
-+IBUS_uptack
-+IBUS_circle
-+IBUS_upstile
-+IBUS_downshoe
-+IBUS_rightshoe
-+IBUS_leftshoe
-+IBUS_lefttack
-+IBUS_righttack
-+IBUS_hebrew_doublelowline
-+IBUS_hebrew_aleph
-+IBUS_hebrew_bet
-+IBUS_hebrew_beth
-+IBUS_hebrew_gimel
-+IBUS_hebrew_gimmel
-+IBUS_hebrew_dalet
-+IBUS_hebrew_daleth
-+IBUS_hebrew_he
-+IBUS_hebrew_waw
-+IBUS_hebrew_zain
-+IBUS_hebrew_zayin
-+IBUS_hebrew_chet
-+IBUS_hebrew_het
-+IBUS_hebrew_tet
-+IBUS_hebrew_teth
-+IBUS_hebrew_yod
-+IBUS_hebrew_finalkaph
-+IBUS_hebrew_kaph
-+IBUS_hebrew_lamed
-+IBUS_hebrew_finalmem
-+IBUS_hebrew_mem
-+IBUS_hebrew_finalnun
-+IBUS_hebrew_nun
-+IBUS_hebrew_samech
-+IBUS_hebrew_samekh
-+IBUS_hebrew_ayin
-+IBUS_hebrew_finalpe
-+IBUS_hebrew_pe
-+IBUS_hebrew_finalzade
-+IBUS_hebrew_finalzadi
-+IBUS_hebrew_zade
-+IBUS_hebrew_zadi
-+IBUS_hebrew_qoph
-+IBUS_hebrew_kuf
-+IBUS_hebrew_resh
-+IBUS_hebrew_shin
-+IBUS_hebrew_taw
-+IBUS_hebrew_taf
-+IBUS_Hebrew_switch
-+IBUS_Thai_kokai
-+IBUS_Thai_khokhai
-+IBUS_Thai_khokhuat
-+IBUS_Thai_khokhwai
-+IBUS_Thai_khokhon
-+IBUS_Thai_khorakhang
-+IBUS_Thai_ngongu
-+IBUS_Thai_chochan
-+IBUS_Thai_choching
-+IBUS_Thai_chochang
-+IBUS_Thai_soso
-+IBUS_Thai_chochoe
-+IBUS_Thai_yoying
-+IBUS_Thai_dochada
-+IBUS_Thai_topatak
-+IBUS_Thai_thothan
-+IBUS_Thai_thonangmontho
-+IBUS_Thai_thophuthao
-+IBUS_Thai_nonen
-+IBUS_Thai_dodek
-+IBUS_Thai_totao
-+IBUS_Thai_thothung
-+IBUS_Thai_thothahan
-+IBUS_Thai_thothong
-+IBUS_Thai_nonu
-+IBUS_Thai_bobaimai
-+IBUS_Thai_popla
-+IBUS_Thai_phophung
-+IBUS_Thai_fofa
-+IBUS_Thai_phophan
-+IBUS_Thai_fofan
-+IBUS_Thai_phosamphao
-+IBUS_Thai_moma
-+IBUS_Thai_yoyak
-+IBUS_Thai_rorua
-+IBUS_Thai_ru
-+IBUS_Thai_loling
-+IBUS_Thai_lu
-+IBUS_Thai_wowaen
-+IBUS_Thai_sosala
-+IBUS_Thai_sorusi
-+IBUS_Thai_sosua
-+IBUS_Thai_hohip
-+IBUS_Thai_lochula
-+IBUS_Thai_oang
-+IBUS_Thai_honokhuk
-+IBUS_Thai_paiyannoi
-+IBUS_Thai_saraa
-+IBUS_Thai_maihanakat
-+IBUS_Thai_saraaa
-+IBUS_Thai_saraam
-+IBUS_Thai_sarai
-+IBUS_Thai_saraii
-+IBUS_Thai_saraue
-+IBUS_Thai_sarauee
-+IBUS_Thai_sarau
-+IBUS_Thai_sarauu
-+IBUS_Thai_phinthu
-+IBUS_Thai_maihanakat_maitho
-+IBUS_Thai_baht
-+IBUS_Thai_sarae
-+IBUS_Thai_saraae
-+IBUS_Thai_sarao
-+IBUS_Thai_saraaimaimuan
-+IBUS_Thai_saraaimaimalai
-+IBUS_Thai_lakkhangyao
-+IBUS_Thai_maiyamok
-+IBUS_Thai_maitaikhu
-+IBUS_Thai_maiek
-+IBUS_Thai_maitho
-+IBUS_Thai_maitri
-+IBUS_Thai_maichattawa
-+IBUS_Thai_thanthakhat
-+IBUS_Thai_nikhahit
-+IBUS_Thai_leksun
-+IBUS_Thai_leknung
-+IBUS_Thai_leksong
-+IBUS_Thai_leksam
-+IBUS_Thai_leksi
-+IBUS_Thai_lekha
-+IBUS_Thai_lekhok
-+IBUS_Thai_lekchet
-+IBUS_Thai_lekpaet
-+IBUS_Thai_lekkao
-+IBUS_Hangul
-+IBUS_Hangul_Start
-+IBUS_Hangul_End
-+IBUS_Hangul_Hanja
-+IBUS_Hangul_Jamo
-+IBUS_Hangul_Romaja
-+IBUS_Hangul_Codeinput
-+IBUS_Hangul_Jeonja
-+IBUS_Hangul_Banja
-+IBUS_Hangul_PreHanja
-+IBUS_Hangul_PostHanja
-+IBUS_Hangul_SingleCandidate
-+IBUS_Hangul_MultipleCandidate
-+IBUS_Hangul_PreviousCandidate
-+IBUS_Hangul_Special
-+IBUS_Hangul_switch
-+IBUS_Hangul_Kiyeog
-+IBUS_Hangul_SsangKiyeog
-+IBUS_Hangul_KiyeogSios
-+IBUS_Hangul_Nieun
-+IBUS_Hangul_NieunJieuj
-+IBUS_Hangul_NieunHieuh
-+IBUS_Hangul_Dikeud
-+IBUS_Hangul_SsangDikeud
-+IBUS_Hangul_Rieul
-+IBUS_Hangul_RieulKiyeog
-+IBUS_Hangul_RieulMieum
-+IBUS_Hangul_RieulPieub
-+IBUS_Hangul_RieulSios
-+IBUS_Hangul_RieulTieut
-+IBUS_Hangul_RieulPhieuf
-+IBUS_Hangul_RieulHieuh
-+IBUS_Hangul_Mieum
-+IBUS_Hangul_Pieub
-+IBUS_Hangul_SsangPieub
-+IBUS_Hangul_PieubSios
-+IBUS_Hangul_Sios
-+IBUS_Hangul_SsangSios
-+IBUS_Hangul_Ieung
-+IBUS_Hangul_Jieuj
-+IBUS_Hangul_SsangJieuj
-+IBUS_Hangul_Cieuc
-+IBUS_Hangul_Khieuq
-+IBUS_Hangul_Tieut
-+IBUS_Hangul_Phieuf
-+IBUS_Hangul_Hieuh
-+IBUS_Hangul_A
-+IBUS_Hangul_AE
-+IBUS_Hangul_YA
-+IBUS_Hangul_YAE
-+IBUS_Hangul_EO
-+IBUS_Hangul_E
-+IBUS_Hangul_YEO
-+IBUS_Hangul_YE
-+IBUS_Hangul_O
-+IBUS_Hangul_WA
-+IBUS_Hangul_WAE
-+IBUS_Hangul_OE
-+IBUS_Hangul_YO
-+IBUS_Hangul_U
-+IBUS_Hangul_WEO
-+IBUS_Hangul_WE
-+IBUS_Hangul_WI
-+IBUS_Hangul_YU
-+IBUS_Hangul_EU
-+IBUS_Hangul_YI
-+IBUS_Hangul_I
-+IBUS_Hangul_J_Kiyeog
-+IBUS_Hangul_J_SsangKiyeog
-+IBUS_Hangul_J_KiyeogSios
-+IBUS_Hangul_J_Nieun
-+IBUS_Hangul_J_NieunJieuj
-+IBUS_Hangul_J_NieunHieuh
-+IBUS_Hangul_J_Dikeud
-+IBUS_Hangul_J_Rieul
-+IBUS_Hangul_J_RieulKiyeog
-+IBUS_Hangul_J_RieulMieum
-+IBUS_Hangul_J_RieulPieub
-+IBUS_Hangul_J_RieulSios
-+IBUS_Hangul_J_RieulTieut
-+IBUS_Hangul_J_RieulPhieuf
-+IBUS_Hangul_J_RieulHieuh
-+IBUS_Hangul_J_Mieum
-+IBUS_Hangul_J_Pieub
-+IBUS_Hangul_J_PieubSios
-+IBUS_Hangul_J_Sios
-+IBUS_Hangul_J_SsangSios
-+IBUS_Hangul_J_Ieung
-+IBUS_Hangul_J_Jieuj
-+IBUS_Hangul_J_Cieuc
-+IBUS_Hangul_J_Khieuq
-+IBUS_Hangul_J_Tieut
-+IBUS_Hangul_J_Phieuf
-+IBUS_Hangul_J_Hieuh
-+IBUS_Hangul_RieulYeorinHieuh
-+IBUS_Hangul_SunkyeongeumMieum
-+IBUS_Hangul_SunkyeongeumPieub
-+IBUS_Hangul_PanSios
-+IBUS_Hangul_KkogjiDalrinIeung
-+IBUS_Hangul_SunkyeongeumPhieuf
-+IBUS_Hangul_YeorinHieuh
-+IBUS_Hangul_AraeA
-+IBUS_Hangul_AraeAE
-+IBUS_Hangul_J_PanSios
-+IBUS_Hangul_J_KkogjiDalrinIeung
-+IBUS_Hangul_J_YeorinHieuh
-+IBUS_Korean_Won
-+IBUS_Armenian_ligature_ew
-+IBUS_Armenian_full_stop
-+IBUS_Armenian_verjaket
-+IBUS_Armenian_separation_mark
-+IBUS_Armenian_but
-+IBUS_Armenian_hyphen
-+IBUS_Armenian_yentamna
-+IBUS_Armenian_exclam
-+IBUS_Armenian_amanak
-+IBUS_Armenian_accent
-+IBUS_Armenian_shesht
-+IBUS_Armenian_question
-+IBUS_Armenian_paruyk
-+IBUS_Armenian_AYB
-+IBUS_Armenian_ayb
-+IBUS_Armenian_BEN
-+IBUS_Armenian_ben
-+IBUS_Armenian_GIM
-+IBUS_Armenian_gim
-+IBUS_Armenian_DA
-+IBUS_Armenian_da
-+IBUS_Armenian_YECH
-+IBUS_Armenian_yech
-+IBUS_Armenian_ZA
-+IBUS_Armenian_za
-+IBUS_Armenian_E
-+IBUS_Armenian_e
-+IBUS_Armenian_AT
-+IBUS_Armenian_at
-+IBUS_Armenian_TO
-+IBUS_Armenian_to
-+IBUS_Armenian_ZHE
-+IBUS_Armenian_zhe
-+IBUS_Armenian_INI
-+IBUS_Armenian_ini
-+IBUS_Armenian_LYUN
-+IBUS_Armenian_lyun
-+IBUS_Armenian_KHE
-+IBUS_Armenian_khe
-+IBUS_Armenian_TSA
-+IBUS_Armenian_tsa
-+IBUS_Armenian_KEN
-+IBUS_Armenian_ken
-+IBUS_Armenian_HO
-+IBUS_Armenian_ho
-+IBUS_Armenian_DZA
-+IBUS_Armenian_dza
-+IBUS_Armenian_GHAT
-+IBUS_Armenian_ghat
-+IBUS_Armenian_TCHE
-+IBUS_Armenian_tche
-+IBUS_Armenian_MEN
-+IBUS_Armenian_men
-+IBUS_Armenian_HI
-+IBUS_Armenian_hi
-+IBUS_Armenian_NU
-+IBUS_Armenian_nu
-+IBUS_Armenian_SHA
-+IBUS_Armenian_sha
-+IBUS_Armenian_VO
-+IBUS_Armenian_vo
-+IBUS_Armenian_CHA
-+IBUS_Armenian_cha
-+IBUS_Armenian_PE
-+IBUS_Armenian_pe
-+IBUS_Armenian_JE
-+IBUS_Armenian_je
-+IBUS_Armenian_RA
-+IBUS_Armenian_ra
-+IBUS_Armenian_SE
-+IBUS_Armenian_se
-+IBUS_Armenian_VEV
-+IBUS_Armenian_vev
-+IBUS_Armenian_TYUN
-+IBUS_Armenian_tyun
-+IBUS_Armenian_RE
-+IBUS_Armenian_re
-+IBUS_Armenian_TSO
-+IBUS_Armenian_tso
-+IBUS_Armenian_VYUN
-+IBUS_Armenian_vyun
-+IBUS_Armenian_PYUR
-+IBUS_Armenian_pyur
-+IBUS_Armenian_KE
-+IBUS_Armenian_ke
-+IBUS_Armenian_O
-+IBUS_Armenian_o
-+IBUS_Armenian_FE
-+IBUS_Armenian_fe
-+IBUS_Armenian_apostrophe
-+IBUS_Georgian_an
-+IBUS_Georgian_ban
-+IBUS_Georgian_gan
-+IBUS_Georgian_don
-+IBUS_Georgian_en
-+IBUS_Georgian_vin
-+IBUS_Georgian_zen
-+IBUS_Georgian_tan
-+IBUS_Georgian_in
-+IBUS_Georgian_kan
-+IBUS_Georgian_las
-+IBUS_Georgian_man
-+IBUS_Georgian_nar
-+IBUS_Georgian_on
-+IBUS_Georgian_par
-+IBUS_Georgian_zhar
-+IBUS_Georgian_rae
-+IBUS_Georgian_san
-+IBUS_Georgian_tar
-+IBUS_Georgian_un
-+IBUS_Georgian_phar
-+IBUS_Georgian_khar
-+IBUS_Georgian_ghan
-+IBUS_Georgian_qar
-+IBUS_Georgian_shin
-+IBUS_Georgian_chin
-+IBUS_Georgian_can
-+IBUS_Georgian_jil
-+IBUS_Georgian_cil
-+IBUS_Georgian_char
-+IBUS_Georgian_xan
-+IBUS_Georgian_jhan
-+IBUS_Georgian_hae
-+IBUS_Georgian_he
-+IBUS_Georgian_hie
-+IBUS_Georgian_we
-+IBUS_Georgian_har
-+IBUS_Georgian_hoe
-+IBUS_Georgian_fi
-+IBUS_Xabovedot
-+IBUS_Ibreve
-+IBUS_Zstroke
-+IBUS_Gcaron
-+IBUS_Ocaron
-+IBUS_Obarred
-+IBUS_xabovedot
-+IBUS_ibreve
-+IBUS_zstroke
-+IBUS_gcaron
-+IBUS_ocaron
-+IBUS_obarred
-+IBUS_SCHWA
-+IBUS_schwa
-+IBUS_Lbelowdot
-+IBUS_lbelowdot
-+IBUS_Abelowdot
-+IBUS_abelowdot
-+IBUS_Ahook
-+IBUS_ahook
-+IBUS_Acircumflexacute
-+IBUS_acircumflexacute
-+IBUS_Acircumflexgrave
-+IBUS_acircumflexgrave
-+IBUS_Acircumflexhook
-+IBUS_acircumflexhook
-+IBUS_Acircumflextilde
-+IBUS_acircumflextilde
-+IBUS_Acircumflexbelowdot
-+IBUS_acircumflexbelowdot
-+IBUS_Abreveacute
-+IBUS_abreveacute
-+IBUS_Abrevegrave
-+IBUS_abrevegrave
-+IBUS_Abrevehook
-+IBUS_abrevehook
-+IBUS_Abrevetilde
-+IBUS_abrevetilde
-+IBUS_Abrevebelowdot
-+IBUS_abrevebelowdot
-+IBUS_Ebelowdot
-+IBUS_ebelowdot
-+IBUS_Ehook
-+IBUS_ehook
-+IBUS_Etilde
-+IBUS_etilde
-+IBUS_Ecircumflexacute
-+IBUS_ecircumflexacute
-+IBUS_Ecircumflexgrave
-+IBUS_ecircumflexgrave
-+IBUS_Ecircumflexhook
-+IBUS_ecircumflexhook
-+IBUS_Ecircumflextilde
-+IBUS_ecircumflextilde
-+IBUS_Ecircumflexbelowdot
-+IBUS_ecircumflexbelowdot
-+IBUS_Ihook
-+IBUS_ihook
-+IBUS_Ibelowdot
-+IBUS_ibelowdot
-+IBUS_Obelowdot
-+IBUS_obelowdot
-+IBUS_Ohook
-+IBUS_ohook
-+IBUS_Ocircumflexacute
-+IBUS_ocircumflexacute
-+IBUS_Ocircumflexgrave
-+IBUS_ocircumflexgrave
-+IBUS_Ocircumflexhook
-+IBUS_ocircumflexhook
-+IBUS_Ocircumflextilde
-+IBUS_ocircumflextilde
-+IBUS_Ocircumflexbelowdot
-+IBUS_ocircumflexbelowdot
-+IBUS_Ohornacute
-+IBUS_ohornacute
-+IBUS_Ohorngrave
-+IBUS_ohorngrave
-+IBUS_Ohornhook
-+IBUS_ohornhook
-+IBUS_Ohorntilde
-+IBUS_ohorntilde
-+IBUS_Ohornbelowdot
-+IBUS_ohornbelowdot
-+IBUS_Ubelowdot
-+IBUS_ubelowdot
-+IBUS_Uhook
-+IBUS_uhook
-+IBUS_Uhornacute
-+IBUS_uhornacute
-+IBUS_Uhorngrave
-+IBUS_uhorngrave
-+IBUS_Uhornhook
-+IBUS_uhornhook
-+IBUS_Uhorntilde
-+IBUS_uhorntilde
-+IBUS_Uhornbelowdot
-+IBUS_uhornbelowdot
-+IBUS_Ybelowdot
-+IBUS_ybelowdot
-+IBUS_Yhook
-+IBUS_yhook
-+IBUS_Ytilde
-+IBUS_ytilde
-+IBUS_Ohorn
-+IBUS_ohorn
-+IBUS_Uhorn
-+IBUS_uhorn
-+IBUS_EcuSign
-+IBUS_ColonSign
-+IBUS_CruzeiroSign
-+IBUS_FFrancSign
-+IBUS_LiraSign
-+IBUS_MillSign
-+IBUS_NairaSign
-+IBUS_PesetaSign
-+IBUS_RupeeSign
-+IBUS_WonSign
-+IBUS_NewSheqelSign
-+IBUS_DongSign
-+IBUS_EuroSign
-+IBUS_zerosuperior
-+IBUS_foursuperior
-+IBUS_fivesuperior
-+IBUS_sixsuperior
-+IBUS_sevensuperior
-+IBUS_eightsuperior
-+IBUS_ninesuperior
-+IBUS_zerosubscript
-+IBUS_onesubscript
-+IBUS_twosubscript
-+IBUS_threesubscript
-+IBUS_foursubscript
-+IBUS_fivesubscript
-+IBUS_sixsubscript
-+IBUS_sevensubscript
-+IBUS_eightsubscript
-+IBUS_ninesubscript
-+IBUS_partdifferential
-+IBUS_emptyset
-+IBUS_elementof
-+IBUS_notelementof
-+IBUS_containsas
-+IBUS_squareroot
-+IBUS_cuberoot
-+IBUS_fourthroot
-+IBUS_dintegral
-+IBUS_tintegral
-+IBUS_because
-+IBUS_approxeq
-+IBUS_notapproxeq
-+IBUS_notidentical
-+IBUS_stricteq
-+IBUS_braille_dot_1
-+IBUS_braille_dot_2
-+IBUS_braille_dot_3
-+IBUS_braille_dot_4
-+IBUS_braille_dot_5
-+IBUS_braille_dot_6
-+IBUS_braille_dot_7
-+IBUS_braille_dot_8
-+IBUS_braille_dot_9
-+IBUS_braille_dot_10
-+IBUS_braille_blank
-+IBUS_braille_dots_1
-+IBUS_braille_dots_2
-+IBUS_braille_dots_12
-+IBUS_braille_dots_3
-+IBUS_braille_dots_13
-+IBUS_braille_dots_23
-+IBUS_braille_dots_123
-+IBUS_braille_dots_4
-+IBUS_braille_dots_14
-+IBUS_braille_dots_24
-+IBUS_braille_dots_124
-+IBUS_braille_dots_34
-+IBUS_braille_dots_134
-+IBUS_braille_dots_234
-+IBUS_braille_dots_1234
-+IBUS_braille_dots_5
-+IBUS_braille_dots_15
-+IBUS_braille_dots_25
-+IBUS_braille_dots_125
-+IBUS_braille_dots_35
-+IBUS_braille_dots_135
-+IBUS_braille_dots_235
-+IBUS_braille_dots_1235
-+IBUS_braille_dots_45
-+IBUS_braille_dots_145
-+IBUS_braille_dots_245
-+IBUS_braille_dots_1245
-+IBUS_braille_dots_345
-+IBUS_braille_dots_1345
-+IBUS_braille_dots_2345
-+IBUS_braille_dots_12345
-+IBUS_braille_dots_6
-+IBUS_braille_dots_16
-+IBUS_braille_dots_26
-+IBUS_braille_dots_126
-+IBUS_braille_dots_36
-+IBUS_braille_dots_136
-+IBUS_braille_dots_236
-+IBUS_braille_dots_1236
-+IBUS_braille_dots_46
-+IBUS_braille_dots_146
-+IBUS_braille_dots_246
-+IBUS_braille_dots_1246
-+IBUS_braille_dots_346
-+IBUS_braille_dots_1346
-+IBUS_braille_dots_2346
-+IBUS_braille_dots_12346
-+IBUS_braille_dots_56
-+IBUS_braille_dots_156
-+IBUS_braille_dots_256
-+IBUS_braille_dots_1256
-+IBUS_braille_dots_356
-+IBUS_braille_dots_1356
-+IBUS_braille_dots_2356
-+IBUS_braille_dots_12356
-+IBUS_braille_dots_456
-+IBUS_braille_dots_1456
-+IBUS_braille_dots_2456
-+IBUS_braille_dots_12456
-+IBUS_braille_dots_3456
-+IBUS_braille_dots_13456
-+IBUS_braille_dots_23456
-+IBUS_braille_dots_123456
-+IBUS_braille_dots_7
-+IBUS_braille_dots_17
-+IBUS_braille_dots_27
-+IBUS_braille_dots_127
-+IBUS_braille_dots_37
-+IBUS_braille_dots_137
-+IBUS_braille_dots_237
-+IBUS_braille_dots_1237
-+IBUS_braille_dots_47
-+IBUS_braille_dots_147
-+IBUS_braille_dots_247
-+IBUS_braille_dots_1247
-+IBUS_braille_dots_347
-+IBUS_braille_dots_1347
-+IBUS_braille_dots_2347
-+IBUS_braille_dots_12347
-+IBUS_braille_dots_57
-+IBUS_braille_dots_157
-+IBUS_braille_dots_257
-+IBUS_braille_dots_1257
-+IBUS_braille_dots_357
-+IBUS_braille_dots_1357
-+IBUS_braille_dots_2357
-+IBUS_braille_dots_12357
-+IBUS_braille_dots_457
-+IBUS_braille_dots_1457
-+IBUS_braille_dots_2457
-+IBUS_braille_dots_12457
-+IBUS_braille_dots_3457
-+IBUS_braille_dots_13457
-+IBUS_braille_dots_23457
-+IBUS_braille_dots_123457
-+IBUS_braille_dots_67
-+IBUS_braille_dots_167
-+IBUS_braille_dots_267
-+IBUS_braille_dots_1267
-+IBUS_braille_dots_367
-+IBUS_braille_dots_1367
-+IBUS_braille_dots_2367
-+IBUS_braille_dots_12367
-+IBUS_braille_dots_467
-+IBUS_braille_dots_1467
-+IBUS_braille_dots_2467
-+IBUS_braille_dots_12467
-+IBUS_braille_dots_3467
-+IBUS_braille_dots_13467
-+IBUS_braille_dots_23467
-+IBUS_braille_dots_123467
-+IBUS_braille_dots_567
-+IBUS_braille_dots_1567
-+IBUS_braille_dots_2567
-+IBUS_braille_dots_12567
-+IBUS_braille_dots_3567
-+IBUS_braille_dots_13567
-+IBUS_braille_dots_23567
-+IBUS_braille_dots_123567
-+IBUS_braille_dots_4567
-+IBUS_braille_dots_14567
-+IBUS_braille_dots_24567
-+IBUS_braille_dots_124567
-+IBUS_braille_dots_34567
-+IBUS_braille_dots_134567
-+IBUS_braille_dots_234567
-+IBUS_braille_dots_1234567
-+IBUS_braille_dots_8
-+IBUS_braille_dots_18
-+IBUS_braille_dots_28
-+IBUS_braille_dots_128
-+IBUS_braille_dots_38
-+IBUS_braille_dots_138
-+IBUS_braille_dots_238
-+IBUS_braille_dots_1238
-+IBUS_braille_dots_48
-+IBUS_braille_dots_148
-+IBUS_braille_dots_248
-+IBUS_braille_dots_1248
-+IBUS_braille_dots_348
-+IBUS_braille_dots_1348
-+IBUS_braille_dots_2348
-+IBUS_braille_dots_12348
-+IBUS_braille_dots_58
-+IBUS_braille_dots_158
-+IBUS_braille_dots_258
-+IBUS_braille_dots_1258
-+IBUS_braille_dots_358
-+IBUS_braille_dots_1358
-+IBUS_braille_dots_2358
-+IBUS_braille_dots_12358
-+IBUS_braille_dots_458
-+IBUS_braille_dots_1458
-+IBUS_braille_dots_2458
-+IBUS_braille_dots_12458
-+IBUS_braille_dots_3458
-+IBUS_braille_dots_13458
-+IBUS_braille_dots_23458
-+IBUS_braille_dots_123458
-+IBUS_braille_dots_68
-+IBUS_braille_dots_168
-+IBUS_braille_dots_268
-+IBUS_braille_dots_1268
-+IBUS_braille_dots_368
-+IBUS_braille_dots_1368
-+IBUS_braille_dots_2368
-+IBUS_braille_dots_12368
-+IBUS_braille_dots_468
-+IBUS_braille_dots_1468
-+IBUS_braille_dots_2468
-+IBUS_braille_dots_12468
-+IBUS_braille_dots_3468
-+IBUS_braille_dots_13468
-+IBUS_braille_dots_23468
-+IBUS_braille_dots_123468
-+IBUS_braille_dots_568
-+IBUS_braille_dots_1568
-+IBUS_braille_dots_2568
-+IBUS_braille_dots_12568
-+IBUS_braille_dots_3568
-+IBUS_braille_dots_13568
-+IBUS_braille_dots_23568
-+IBUS_braille_dots_123568
-+IBUS_braille_dots_4568
-+IBUS_braille_dots_14568
-+IBUS_braille_dots_24568
-+IBUS_braille_dots_124568
-+IBUS_braille_dots_34568
-+IBUS_braille_dots_134568
-+IBUS_braille_dots_234568
-+IBUS_braille_dots_1234568
-+IBUS_braille_dots_78
-+IBUS_braille_dots_178
-+IBUS_braille_dots_278
-+IBUS_braille_dots_1278
-+IBUS_braille_dots_378
-+IBUS_braille_dots_1378
-+IBUS_braille_dots_2378
-+IBUS_braille_dots_12378
-+IBUS_braille_dots_478
-+IBUS_braille_dots_1478
-+IBUS_braille_dots_2478
-+IBUS_braille_dots_12478
-+IBUS_braille_dots_3478
-+IBUS_braille_dots_13478
-+IBUS_braille_dots_23478
-+IBUS_braille_dots_123478
-+IBUS_braille_dots_578
-+IBUS_braille_dots_1578
-+IBUS_braille_dots_2578
-+IBUS_braille_dots_12578
-+IBUS_braille_dots_3578
-+IBUS_braille_dots_13578
-+IBUS_braille_dots_23578
-+IBUS_braille_dots_123578
-+IBUS_braille_dots_4578
-+IBUS_braille_dots_14578
-+IBUS_braille_dots_24578
-+IBUS_braille_dots_124578
-+IBUS_braille_dots_34578
-+IBUS_braille_dots_134578
-+IBUS_braille_dots_234578
-+IBUS_braille_dots_1234578
-+IBUS_braille_dots_678
-+IBUS_braille_dots_1678
-+IBUS_braille_dots_2678
-+IBUS_braille_dots_12678
-+IBUS_braille_dots_3678
-+IBUS_braille_dots_13678
-+IBUS_braille_dots_23678
-+IBUS_braille_dots_123678
-+IBUS_braille_dots_4678
-+IBUS_braille_dots_14678
-+IBUS_braille_dots_24678
-+IBUS_braille_dots_124678
-+IBUS_braille_dots_34678
-+IBUS_braille_dots_134678
-+IBUS_braille_dots_234678
-+IBUS_braille_dots_1234678
-+IBUS_braille_dots_5678
-+IBUS_braille_dots_15678
-+IBUS_braille_dots_25678
-+IBUS_braille_dots_125678
-+IBUS_braille_dots_35678
-+IBUS_braille_dots_135678
-+IBUS_braille_dots_235678
-+IBUS_braille_dots_1235678
-+IBUS_braille_dots_45678
-+IBUS_braille_dots_145678
-+IBUS_braille_dots_245678
-+IBUS_braille_dots_1245678
-+IBUS_braille_dots_345678
-+IBUS_braille_dots_1345678
-+IBUS_braille_dots_2345678
-+IBUS_braille_dots_12345678
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusdebug</FILE>
-+ibus_warning
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusinternal</FILE>
-+I_
-+dbus_server_setup
-+dbus_connection_setup
-+</SECTION>
-+
-diff --git a/ibus.spec.in b/ibus.spec.in
-index 908ddbd..641ec86 100644
---- a/ibus.spec.in
-+++ b/ibus.spec.in
-@@ -1,6 +1,8 @@
- %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
- %{!?gtk_binary_version: %define gtk_binary_version %(pkg-config --variable=gtk_binary_version gtk+-2.0)}
- %define mod_path ibus-@PACKAGE_VERSION_MAJOR@.@PACKAGE_VERSION_MINOR@
-+%define host_vendor %(if [[ "%{_host_vendor}" == "unknown" ]]; then echo redhat; else echo %{_host_vendor}; fi)
-+%define host %{_host_cpu}-%{host_vendor}-%{_host_os}
- Name: ibus
- Version: @PACKAGE_VERSION@
- Release: 1%{?dist}
-@@ -108,13 +110,32 @@ desktop-file-install --delete-original \
- %clean
- rm -rf $RPM_BUILD_ROOT
-
-+%pre
-+if [ "$1" -gt 1 ] ; then
-+export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-+gconftool-2 --makefile-uninstall-rule \
-+%{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || :
-+fi
-+
-+%post
-+export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-+gconftool-2 --makefile-install-rule \
-+%{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
-+
-+%preun
-+if [ "$1" -eq 0 ] ; then
-+export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-+gconftool-2 --makefile-uninstall-rule \
-+%{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
-+fi
-+
- %post libs
- /sbin/ldconfig
- update-desktop-database -q
- %{_sbindir}/alternatives --install %{_sysconfdir}/X11/xinit/xinputrc xinputrc %{_xinputconf} 83 || :
-
- %post gtk
--%{_bindir}/update-gtk-immodules %{_host} || :
-+%{_bindir}/update-gtk-immodules %{host} || :
-
- %postun libs
- /sbin/ldconfig
-@@ -126,7 +147,7 @@ if [ "$1" = "0" ]; then
- fi
-
- %postun gtk
--%{_bindir}/update-gtk-immodules %{_host} || :
-+%{_bindir}/update-gtk-immodules %{host} || :
-
- %files -f %{name}.lang
- %defattr(-,root,root,-)
-@@ -140,8 +161,9 @@ fi
- %{_libexecdir}/ibus-gconf
- %{_libexecdir}/ibus-ui-gtk
- %{_libexecdir}/ibus-x11
--%config %{_xinputconf}
--
-+%config(noreplace) %{_xinputconf}
-+%config(noreplace) %{_sysconfdir}/gconf/schemas/%{name}.schemas
-+%config(noreplace) %{_sysconfdir}/xdg/autostart/ibus.desktop
-
- %files libs
- %defattr(-,root,root,-)
-@@ -163,5 +185,9 @@ fi
- %{_libdir}/pkgconfig/*
-
- %changelog
--* Thu Aug 07 2008 Huang Peng <shawn.p.huang@gmail.com> - @VERSION@-1
-+* @DATE_DISPLAY@ Huang Peng <shawn.p.huang@gmail.com> - @VERSION@-1
-+- Current version.
-+
-+* Thu Aug 07 2008 Huang Peng <shawn.p.huang@gmail.com> - 0.1.0.20080810-1
- - The first version.
-+
-diff --git a/po/fr.po b/po/fr.po
-index 4b1850c..3f5e188 100644
---- a/po/fr.po
-+++ b/po/fr.po
-@@ -8,8 +8,8 @@ msgid ""
- msgstr ""
- "Project-Id-Version: ibus VERSION\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
--"PO-Revision-Date: 2009-02-06 01:55+0100\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
-+"PO-Revision-Date: 2009-03-11 17:30+0100\n"
- "Last-Translator: Julroy67 <julroy67@gmail.com>\n"
- "Language-Team: French <julroy67@gmail.com>\n"
- "MIME-Version: 1.0\n"
-@@ -25,15 +25,15 @@ msgstr "Autre"
-
- #: ui/gtk/panel.py:97
- msgid "IBus input method framework"
--msgstr ""
-+msgstr "Framework de méthode d'entrée IBus"
-
- #: ui/gtk/panel.py:282
- msgid "Restart"
--msgstr ""
-+msgstr "Redémarrer"
-
- #: ui/gtk/panel.py:337
- msgid "No input method"
--msgstr ""
-+msgstr "Aucune méthode d'entrée"
-
- #: ui/gtk/panel.py:383
- msgid "IBus is an intelligent input bus for Linux/Unix."
-@@ -92,7 +92,6 @@ msgid "Key code:"
- msgstr "Code touche :"
-
- #: setup/keyboardshortcut.py:76
--#, fuzzy
- msgid "Modifiers:"
- msgstr "Modificateurs :"
-
-@@ -110,35 +109,33 @@ msgstr "Veuillez presser une touche (ou une combinaison de touches)"
-
- #: setup/enginecombobox.py:99
- msgid "Select an input method"
--msgstr ""
-+msgstr "Sélectionnez une méthode d'entrée"
-
- #: setup/setup.glade:7
- msgid "IBus Preferences"
--msgstr ""
--
--#: setup/setup.glade:51
--msgid "Enable or disable:"
--msgstr ""
-+msgstr "Préférences d'IBus"
-
--#: setup/setup.glade:62
--#, fuzzy
--msgid "Next input method:"
--msgstr "Moteur suivant :"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr "…"
-
--#: setup/setup.glade:76
-+#: setup/setup.glade:148
- msgid "previous input method:"
--msgstr ""
-+msgstr "méthode d'entrée précédente :"
-
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr "…"
-+#: setup/setup.glade:161
-+msgid "Next input method:"
-+msgstr "Méthode d'entrée suivante :"
-+
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
-+msgstr "Activer ou désactiver :"
-
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
- msgstr "<b>Raccourcis claviers</b>"
-
- #: setup/setup.glade:222
--#, fuzzy
- msgid "Candidates orientation:"
- msgstr "Orientation de la table :"
-
-@@ -152,27 +149,29 @@ msgstr ""
-
- #: setup/setup.glade:249
- msgid "Show language panel:"
--msgstr ""
-+msgstr "Afficher la barre de langue :"
-
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
-+"Jamais\n"
-+"Dynamiquement\n"
-+"Toujours"
-
- #: setup/setup.glade:276
- msgid "Use custom font"
- msgstr "Utiliser une police personnalisée"
-
- #: setup/setup.glade:292
--#, fuzzy
- msgid "Custom font:"
--msgstr "Utiliser une police personnalisée"
-+msgstr "Police personnalisée :"
-
- #: setup/setup.glade:317
- msgid "<b>Font and Style</b>"
--msgstr ""
-+msgstr "<b>Police et Style</b>"
-
- #: setup/setup.glade:337
- msgid "General"
-@@ -180,7 +179,7 @@ msgstr "Général"
-
- #: setup/setup.glade:465
- msgid "Input Methods"
--msgstr ""
-+msgstr "Méthodes d'entrées"
-
- #: setup/setup.glade:482
- msgid ""
-@@ -199,50 +198,13 @@ msgstr ""
- "\n"
-
- #: setup/setup.glade:510
--#, fuzzy
- msgid "Start ibus on login"
--msgstr "Démarrer automatiquement IBus lors de la connexion"
-+msgstr "Démarrer IBus lors de la connexion"
-
- #: setup/setup.glade:521
--#, fuzzy
- msgid "<b>Startup</b>"
--msgstr "<b>Interface Utilisateur</b>"
-+msgstr "<b>Démarrage</b>"
-
- #: setup/setup.glade:543
- msgid "About"
- msgstr "À propos"
--
--#~ msgid "Trigger:"
--#~ msgstr "Déclencheur :"
--
--#, fuzzy
--#~ msgid "Previous IME:"
--#~ msgstr "Moteur précédent :"
--
--#~ msgid "gtk-add"
--#~ msgstr "gtk-add"
--
--#~ msgid "gtk-remove"
--#~ msgstr "gtk-remove"
--
--#~ msgid "gtk-go-up"
--#~ msgstr "gtk-go-up"
--
--#~ msgid "gtk-go-down"
--#~ msgstr "gtk-go-down"
--
--#~ msgid "gtk-close"
--#~ msgstr "gtk-close"
--
--#~ msgid "Auto hide language bar"
--#~ msgstr "Cacher automatiquement la barre de langue"
--
--#, fuzzy
--#~ msgid "IBus - Running"
--#~ msgstr "IBus - Démarré"
--
--#~ msgid "IBus - Setup"
--#~ msgstr "IBus - Configuration"
--
--#~ msgid "Engine"
--#~ msgstr "Moteur"
-diff --git a/po/ja.po b/po/ja.po
-index 185f58e..eeb2117 100644
---- a/po/ja.po
-+++ b/po/ja.po
-@@ -8,9 +8,9 @@ msgid ""
- msgstr ""
- "Project-Id-Version: ibus VERSION\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
--"PO-Revision-Date: 2008-08-28 17:31+0900\n"
--"Last-Translator: UTUMI Hirosi <utuhiro78@yahoo.co.jp>\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
-+"PO-Revision-Date: 2009-03-19 16:12+0900\n"
-+"Last-Translator: IWAI, Masaharu <iwai@alib.jp>\n"
- "Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
-@@ -19,31 +19,33 @@ msgstr ""
- #: ibus/lang.py:40 ui/gtk/panel.py:307 ui/gtk/panel.py:308 ui/gtk/panel.py:309
- #: ui/gtk/panel.py:310
- msgid "Other"
--msgstr ""
-+msgstr "その他"
-
- #: ui/gtk/panel.py:97
- msgid "IBus input method framework"
--msgstr ""
-+msgstr "IBus インプットメソッドフレームワーク"
-
- #: ui/gtk/panel.py:282
- msgid "Restart"
--msgstr ""
-+msgstr "再起動"
-
- #: ui/gtk/panel.py:337
- msgid "No input method"
--msgstr ""
-+msgstr "インプットメソッドがありません"
-
- #: ui/gtk/panel.py:383
- msgid "IBus is an intelligent input bus for Linux/Unix."
--msgstr ""
-+msgstr "IBus は、Linux/Unix のためのインテリジェントなインプットバスです。"
-
- #: ui/gtk/panel.py:387
- msgid "translator-credits"
--msgstr "UTUMI Hirosi <utuhiro78@yahoo.co.jp>"
-+msgstr ""
-+"UTUMI Hirosi <utuhiro78@yahoo.co.jp>\n"
-+"IWAI, Masaharu <iwai@alib.jp>"
-
- #: ui/gtk/languagebar.py:84
- msgid "Switch engine"
--msgstr ""
-+msgstr "エンジンの変更"
-
- #: setup/main.py:103
- msgid "trigger"
-@@ -106,35 +108,33 @@ msgstr "キーもしくはキーの組み合わせを入力してください"
-
- #: setup/enginecombobox.py:99
- msgid "Select an input method"
--msgstr ""
-+msgstr "インプットメソッドの選択"
-
- #: setup/setup.glade:7
- msgid "IBus Preferences"
--msgstr ""
--
--#: setup/setup.glade:51
--msgid "Enable or disable:"
--msgstr ""
-+msgstr "IBus の設定"
-
--#: setup/setup.glade:62
--#, fuzzy
--msgid "Next input method:"
--msgstr "次のエンジン:"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr "..."
-
--#: setup/setup.glade:76
-+#: setup/setup.glade:148
- msgid "previous input method:"
--msgstr ""
-+msgstr "ひとつ前のインプットメソッド:"
-
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr "..."
-+#: setup/setup.glade:161
-+msgid "Next input method:"
-+msgstr "次のインプットメソッド:"
-+
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
-+msgstr "切り替え"
-
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
- msgstr "<b>キーボードショートカット</b>"
-
- #: setup/setup.glade:222
--#, fuzzy
- msgid "Candidates orientation:"
- msgstr "候補ウィンドウの向き:"
-
-@@ -148,27 +148,29 @@ msgstr ""
-
- #: setup/setup.glade:249
- msgid "Show language panel:"
--msgstr ""
-+msgstr "言語パネルの表示:"
-
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
-+"表示しない\n"
-+"有効なときだけ表示する\n"
-+"常に表示する"
-
- #: setup/setup.glade:276
- msgid "Use custom font"
- msgstr "カスタムフォントを使う"
-
- #: setup/setup.glade:292
--#, fuzzy
- msgid "Custom font:"
--msgstr "カスタムフォントを使う"
-+msgstr "カスタムフォント:"
-
- #: setup/setup.glade:317
- msgid "<b>Font and Style</b>"
--msgstr ""
-+msgstr "<b>フォントとスタイル</b>"
-
- #: setup/setup.glade:337
- msgid "General"
-@@ -176,7 +178,7 @@ msgstr "一般"
-
- #: setup/setup.glade:465
- msgid "Input Methods"
--msgstr ""
-+msgstr "インプットメソッド"
-
- #: setup/setup.glade:482
- msgid ""
-@@ -187,48 +189,21 @@ msgid ""
- "\n"
- "\n"
- msgstr ""
-+"<big><b>IBus</b></big>\n"
-+"<small>インテリジェントなインプットバス</small>\n"
-+"ホームページ: http://code.google.com/p/ibus\n"
-+"\n"
-+"\n"
-+"\n"
-
- #: setup/setup.glade:510
--#, fuzzy
- msgid "Start ibus on login"
--msgstr "セッションログイン時に IBus を自動的に起動"
-+msgstr "ログイン時に IBus を起動"
-
- #: setup/setup.glade:521
- msgid "<b>Startup</b>"
--msgstr ""
-+msgstr "<b>スタートアップ</b>"
-
- #: setup/setup.glade:543
- msgid "About"
- msgstr "About"
--
--#~ msgid "Trigger:"
--#~ msgstr "トリガー:"
--
--#, fuzzy
--#~ msgid "Previous IME:"
--#~ msgstr "前のエンジン:"
--
--#, fuzzy
--#~ msgid "gtk-remove"
--#~ msgstr "gtk-close"
--
--#~ msgid "gtk-close"
--#~ msgstr "gtk-close"
--
--#~ msgid "Auto hide language bar"
--#~ msgstr "言語バーを自動で隠す"
--
--#~ msgid "IBus - Running"
--#~ msgstr "IBus - 実行中"
--
--#~ msgid "IBus - Setup"
--#~ msgstr "IBus - セットアップ"
--
--#~ msgid "Engine"
--#~ msgstr "エンジン"
--
--#~ msgid "Started"
--#~ msgstr "開始"
--
--#~ msgid "Preload"
--#~ msgstr "プリロード"
-diff --git a/po/pa.po b/po/pa.po
-index 425a788..0bb12ce 100644
---- a/po/pa.po
-+++ b/po/pa.po
-@@ -6,7 +6,7 @@ msgid ""
- msgstr ""
- "Project-Id-Version: ibus\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
- "PO-Revision-Date: 2008-10-17 14:15+0530\n"
- "Last-Translator: Amanpreet Singh <aalam@users.sf.net>\n"
- "Language-Team: Punjabi/Panjabi <punjabi-l10n@lists.sf.net>\n"
-@@ -111,23 +111,23 @@ msgstr ""
- msgid "IBus Preferences"
- msgstr ""
-
--#: setup/setup.glade:51
--msgid "Enable or disable:"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr "..."
-+
-+#: setup/setup.glade:148
-+msgid "previous input method:"
- msgstr ""
-
--#: setup/setup.glade:62
-+#: setup/setup.glade:161
- #, fuzzy
- msgid "Next input method:"
- msgstr "ਅਗਲਾ ਇੰਜਣ:"
-
--#: setup/setup.glade:76
--msgid "previous input method:"
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
- msgstr ""
-
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr "..."
--
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
- msgstr "<b>ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ</b>"
-@@ -152,7 +152,7 @@ msgstr ""
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
-
-diff --git a/po/zh_CN.po b/po/zh_CN.po
-index eb95e2f..6713459 100644
---- a/po/zh_CN.po
-+++ b/po/zh_CN.po
-@@ -7,7 +7,7 @@ msgid ""
- msgstr ""
- "Project-Id-Version: 0.1.1.20080813\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
- "PO-Revision-Date: 2008-08-13 21:59+0800\n"
- "Last-Translator: Huang Peng <shawn.p.huang@gmail.com>\n"
- "Language-Team: Huang Peng <shawn.p.huang@gmail.com>\n"
-@@ -111,21 +111,21 @@ msgstr "选择输入法"
- msgid "IBus Preferences"
- msgstr "IBus设置"
-
--#: setup/setup.glade:51
--msgid "Enable or disable:"
--msgstr "开关"
--
--#: setup/setup.glade:62
--msgid "Next input method:"
--msgstr "下一入法"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr ""
-
--#: setup/setup.glade:76
-+#: setup/setup.glade:148
- msgid "previous input method:"
- msgstr "前一入法"
-
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr ""
-+#: setup/setup.glade:161
-+msgid "Next input method:"
-+msgstr "下一入法"
-+
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
-+msgstr "开关"
-
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
-@@ -150,11 +150,11 @@ msgstr "显示语言栏:"
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
- "从不\n"
--"动态\n"
-+"活动时\n"
- "总是"
-
- #: setup/setup.glade:276
-diff --git a/setup/main.py b/setup/main.py
-index 42c3233..3ba6495 100644
---- a/setup/main.py
-+++ b/setup/main.py
-@@ -244,7 +244,7 @@ class Setup(object):
- dialog.destroy()
- if id != gtk.RESPONSE_OK:
- return
-- self.__config.set_value(section, _name, shortcuts)
-+ self.__config.set_list(section, _name, shortcuts, "s")
- entry.set_text("; ".join(shortcuts))
-
-
-diff --git a/setup/setup.glade b/setup/setup.glade
-index a50efd1..ab7b061 100644
---- a/setup/setup.glade
-+++ b/setup/setup.glade
-@@ -45,57 +45,21 @@
- <property name="column_spacing">12</property>
- <property name="row_spacing">6</property>
- <child>
-- <widget class="GtkLabel" id="label7">
-- <property name="visible">True</property>
-- <property name="xalign">0</property>
-- <property name="label" translatable="yes">Enable or disable:</property>
-- </widget>
-- <packing>
-- <property name="x_options">GTK_FILL</property>
-- <property name="y_options">GTK_FILL</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkLabel" id="label8">
-- <property name="visible">True</property>
-- <property name="xalign">0</property>
-- <property name="label" translatable="yes">Next input method:</property>
-- </widget>
-- <packing>
-- <property name="top_attach">1</property>
-- <property name="bottom_attach">2</property>
-- <property name="x_options">GTK_FILL</property>
-- <property name="y_options">GTK_FILL</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkLabel" id="label9">
-- <property name="visible">True</property>
-- <property name="sensitive">False</property>
-- <property name="xalign">0</property>
-- <property name="label" translatable="yes">previous input method:</property>
-- </widget>
-- <packing>
-- <property name="top_attach">2</property>
-- <property name="bottom_attach">3</property>
-- <property name="x_options">GTK_FILL</property>
-- <property name="y_options">GTK_FILL</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkHBox" id="hbox4">
-+ <widget class="GtkHBox" id="hbox6">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
-- <widget class="GtkEntry" id="entry_trigger">
-+ <widget class="GtkEntry" id="entry_prev_engine">
- <property name="visible">True</property>
-+ <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- </widget>
- </child>
- <child>
-- <widget class="GtkButton" id="button_trigger">
-+ <widget class="GtkButton" id="button_prev_engine">
- <property name="visible">True</property>
-+ <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">...</property>
- <property name="use_underline">True</property>
-@@ -110,6 +74,8 @@
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
-+ <property name="top_attach">2</property>
-+ <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
-@@ -145,21 +111,19 @@
- </packing>
- </child>
- <child>
-- <widget class="GtkHBox" id="hbox6">
-+ <widget class="GtkHBox" id="hbox4">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
-- <widget class="GtkEntry" id="entry_prev_engine">
-+ <widget class="GtkEntry" id="entry_trigger">
- <property name="visible">True</property>
-- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- </widget>
- </child>
- <child>
-- <widget class="GtkButton" id="button_prev_engine">
-+ <widget class="GtkButton" id="button_trigger">
- <property name="visible">True</property>
-- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">...</property>
- <property name="use_underline">True</property>
-@@ -174,8 +138,44 @@
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label9">
-+ <property name="visible">True</property>
-+ <property name="sensitive">False</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">previous input method:</property>
-+ </widget>
-+ <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
-+ <property name="x_options">GTK_FILL</property>
-+ <property name="y_options">GTK_FILL</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label8">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Next input method:</property>
-+ </widget>
-+ <packing>
-+ <property name="top_attach">1</property>
-+ <property name="bottom_attach">2</property>
-+ <property name="x_options">GTK_FILL</property>
-+ <property name="y_options">GTK_FILL</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label7">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Enable or disable:</property>
-+ </widget>
-+ <packing>
-+ <property name="x_options">GTK_FILL</property>
-+ <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- </widget>
-@@ -257,7 +257,7 @@ Vertical</property>
- <widget class="GtkComboBox" id="combobox_panel_show">
- <property name="visible">True</property>
- <property name="items" translatable="yes">Never
--Dynamically
-+When active
- Always</property>
- </widget>
- <packing>
-diff --git a/src/ibusattribute.h b/src/ibusattribute.h
-index 3a0ff7f..a3907c7 100644
---- a/src/ibusattribute.h
-+++ b/src/ibusattribute.h
-@@ -17,11 +17,19 @@
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-+/**
-+ * SECTION: ibusattribute
-+ * @short_description: Attributes of IBusText.
-+ * @stability: Stable
-+ * @see_also: #IBusText
-+ *
-+ * An IBusAttribute represents an attribute that associate to IBusText.
-+ * It decorates preedit buffer and auxiliary text with underline, foreground and background colors.
-+ */
- #ifndef __IBUS_ATTRIBUTE_H_
- #define __IBUS_ATTRIBUTE_H_
-
- #include "ibusserializable.h"
--
- /*
- * Type macros.
- */
-@@ -53,12 +61,29 @@
- #define IBUS_ATTR_LIST_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrListClass))
-
-+/**
-+ * IBusAttrType:
-+ * @IBUS_ATTR_TYPE_UNDERLINE: Decorate with underline.
-+ * @IBUS_ATTR_TYPE_FOREGROUND: Foreground color.
-+ * @IBUS_ATTR_TYPE_BACKGROUND: Background color.
-+ *
-+ * Type of IBusText attribute.
-+ */
- typedef enum {
- IBUS_ATTR_TYPE_UNDERLINE = 1,
- IBUS_ATTR_TYPE_FOREGROUND = 2,
- IBUS_ATTR_TYPE_BACKGROUND = 3,
- } IBusAttrType;
-
-+/**
-+ * IBusAttrUnderline:
-+ * @IBUS_ATTR_UNDERLINE_NONE: No underline.
-+ * @IBUS_ATTR_UNDERLINE_SINGLE: Single underline.
-+ * @IBUS_ATTR_UNDERLINE_DOUBLE: Double underline.
-+ * @IBUS_ATTR_UNDERLINE_LOW: Low underline ? %FIXME
-+ *
-+ * Type of IBusText attribute.
-+ */
- typedef enum {
- IBUS_ATTR_UNDERLINE_NONE = 0,
- IBUS_ATTR_UNDERLINE_SINGLE = 1,
-@@ -73,10 +98,21 @@ typedef struct _IBusAttributeClass IBusAttributeClass;
- typedef struct _IBusAttrList IBusAttrList;
- typedef struct _IBusAttrListClass IBusAttrListClass;
-
-+
-+/**
-+ * IBusAttribute:
-+ * @type: IBusAttributeType
-+ * @value: Value for the type.
-+ * @start_index: The starting index, inclusive.
-+ * @end_index: The ending index, exclusive.
-+ *
-+ * Signify the type, value and scope of the attribute.
-+ * The scope starts from @start_index till the @end_index-1.
-+ */
- struct _IBusAttribute {
- IBusSerializable parent;
-
-- /* members */
-+ /*< public >*/
- guint type;
- guint value;
- guint start_index;
-@@ -87,10 +123,16 @@ struct _IBusAttributeClass {
- IBusSerializableClass parent;
- };
-
-+/**
-+ * IBusAttrList:
-+ * @attributes: GArray that holds #IBusAttribute.
-+ *
-+ * Array of IBusAttribute.
-+ */
- struct _IBusAttrList {
- IBusSerializable parent;
-
-- /* members */
-+ /*< public >*/
- GArray *attributes;
- };
-
-@@ -98,26 +140,99 @@ struct _IBusAttrListClass {
- IBusSerializableClass parent;
- };
-
-+/**
-+ * ibus_attribute_get_type:
-+ * @returns: GType of IBusAttribute.
-+ *
-+ * Returns GType of IBusAttribute.
-+ */
- GType ibus_attribute_get_type ();
-+
-+/**
-+ * ibus_attribute_new:
-+ * @type: Type of the attribute.
-+ * @value: Value of the attribute.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an IBusAttribute.
-+ */
- IBusAttribute *ibus_attribute_new (guint type,
- guint value,
- guint start_index,
- guint end_index);
-+/**
-+ * ibus_attr_underline_new:
-+ * @underline_type: Type of underline.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an underline IBusAttribute.
-+ */
- IBusAttribute *ibus_attr_underline_new (guint underline_type,
- guint start_index,
- guint end_index);
-+/**
-+ * ibus_attr_foreground_new:
-+ * @color: Color in RGB.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an foreground IBusAttribute.
-+ */
- IBusAttribute *ibus_attr_foreground_new (guint color,
- guint start_index,
- guint end_index);
-+/**
-+ * ibus_attr_background_new:
-+ * @color: Color in RGB.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an background IBusAttribute.
-+ */
- IBusAttribute *ibus_attr_background_new (guint color,
- guint start_index,
- guint end_index);
-
-
-+/**
-+ * ibus_attr_list_get_type:
-+ * @returns: GType of IBusAttrList.
-+ *
-+ * Returns GType of IBusAttrList.
-+ */
- GType ibus_attr_list_get_type ();
-+
-+/**
-+ * ibus_attr_list_new:
-+ * @returns: A newly allocated IBusAttrList.
-+ *
-+ * New an IBusAttrList.
-+ */
- IBusAttrList *ibus_attr_list_new ();
-+
-+/**
-+ * ibus_attr_list_append:
-+ * @attr_list: An IBusAttrList instance.
-+ * @attr: The IBusAttribute instance to be appended.
-+ *
-+ * Append an IBusAttribute to IBusAttrList.
-+ */
- void ibus_attr_list_append (IBusAttrList *attr_list,
- IBusAttribute *attr);
-+/**
-+ * ibus_attr_list_get:
-+ * @attr_list: An IBusAttrList instance.
-+ * @index: Index of the @attr_list.
-+ * @returns: IBusAttribute at given index, NULL if no such IBusAttribute.
-+ *
-+ * Returns IBusAttribute at given index.
-+ */
- IBusAttribute *ibus_attr_list_get (IBusAttrList *attr_list,
- guint index);
-
-diff --git a/src/ibusconnection.h b/src/ibusconnection.h
-index 5a8e099..7ebf6e6 100644
---- a/src/ibusconnection.h
-+++ b/src/ibusconnection.h
-@@ -17,6 +17,15 @@
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-+/**
-+ * SECTION: ibusconnection
-+ * @short_description: DBusConnection wrapper.
-+ * @see_also: <ulink url="http://dbus.freedesktop.org/doc/api/html/structDBusConnection.html">DBusConnection</ulink>
-+ *
-+ * An IBusConnection provides DBusConnection wrapper.
-+ * It can be used to connect to either dBus or iBus daemon.
-+ */
-+
- #ifndef __IBUS_CONNECTION_H_
- #define __IBUS_CONNECTION_H_
-
-diff --git a/src/ibusengine.c b/src/ibusengine.c
-index d924e25..13ec52e 100644
---- a/src/ibusengine.c
-+++ b/src/ibusengine.c
-@@ -190,6 +190,11 @@ ibus_engine_class_init (IBusEngineClass *klass)
-
-
- /* install properties */
-+ /**
-+ * IBusEngine:name:
-+ *
-+ * Name of this IBusEngine.
-+ */
- g_object_class_install_property (gobject_class,
- PROP_NAME,
- g_param_spec_string ("name",
-@@ -198,7 +203,11 @@ ibus_engine_class_init (IBusEngineClass *klass)
- "noname",
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
--
-+ /**
-+ * IBusEngine:connection:
-+ *
-+ * Connection for this IBusEngine.
-+ */
- g_object_class_install_property (gobject_class,
- PROP_CONNECTION,
- g_param_spec_object ("connection",
-@@ -208,6 +217,15 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
- /* install signals */
-+ /**
-+ * IBusEngine::process-key-event:
-+ * @engine: An IBusEngine.
-+ * @keyval: KeySym of the key press.
-+ * @state: Key modifier flags
-+ *
-+ * This signal is emitted whenever a key event is received.
-+ * Implement process_key_event() in extend class to receive this signal.
-+ */
- engine_signals[PROCESS_KEY_EVENT] =
- g_signal_new (I_("process-key-event"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -220,6 +238,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_UINT,
- G_TYPE_UINT);
-
-+ /**
-+ * IBusEngine::focus-in:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the client application get the focus.
-+ * Implement focus_in() in extend class to receive this signal.
-+ */
- engine_signals[FOCUS_IN] =
- g_signal_new (I_("focus-in"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -230,6 +255,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::focus-out:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the client application lost the focus.
-+ * Implement focus_out() in extend class to receive this signal.
-+ */
- engine_signals[FOCUS_OUT] =
- g_signal_new (I_("focus-out"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -240,6 +272,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::reset:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the IME is reset.
-+ * Implement reset() in extend class to receive this signal.
-+ */
- engine_signals[RESET] =
- g_signal_new (I_("reset"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -250,6 +289,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::enable:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the IME is enabled.
-+ * Implement enable() in extend class to receive this signal.
-+ */
- engine_signals[ENABLE] =
- g_signal_new (I_("enable"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -260,6 +306,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::disable:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the IME is disabled.
-+ * Implement disable() in extend class to receive this signal.
-+ */
- engine_signals[DISABLE] =
- g_signal_new (I_("disable"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -270,6 +323,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::set-cursor-location:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the location of IME is set.
-+ * Implement set_cursor_location() in extend class to receive this signal.
-+ */
- engine_signals[SET_CURSOR_LOCATION] =
- g_signal_new (I_("set-cursor-location"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -284,6 +344,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_INT,
- G_TYPE_INT);
-
-+ /**
-+ * IBusEngine::set-capabilities:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the client application capabilities is set.
-+ * Implement set_cursor_location() in extend class to receive this signal.
-+ */
- engine_signals[SET_CAPABILITIES] =
- g_signal_new (I_("set-capabilities"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -295,6 +362,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- 1,
- G_TYPE_UINT);
-
-+ /**
-+ * IBusEngine::page-up:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the page-up key is pressed.
-+ * Implement page_up() in extend class to receive this signal.
-+ */
- engine_signals[PAGE_UP] =
- g_signal_new (I_("page-up"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -305,6 +379,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::page-down:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the page-down key is pressed.
-+ * Implement page_down() in extend class to receive this signal.
-+ */
- engine_signals[PAGE_DOWN] =
- g_signal_new (I_("page-down"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -315,6 +396,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::cursor-up:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the up cursor key is pressed.
-+ * Implement cursor_up() in extend class to receive this signal.
-+ */
- engine_signals[CURSOR_UP] =
- g_signal_new (I_("cursor-up"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -325,6 +413,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::cursor-down:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever the down cursor key is pressed.
-+ * Implement cursor_down() in extend class to receive this signal.
-+ */
- engine_signals[CURSOR_DOWN] =
- g_signal_new (I_("cursor-down"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -335,6 +430,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_NONE,
- 0);
-
-+ /**
-+ * IBusEngine::property-activate:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever a property is activated or change changed.
-+ * Implement property_activate() in extend class to receive this signal.
-+ */
- engine_signals[PROPERTY_ACTIVATE] =
- g_signal_new (I_("property-activate"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -347,6 +449,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- G_TYPE_STRING,
- G_TYPE_UINT);
-
-+ /**
-+ * IBusEngine::property-show:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever a property is shown.
-+ * Implement property_show() in extend class to receive this signal.
-+ */
- engine_signals[PROPERTY_SHOW] =
- g_signal_new (I_("property-show"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -358,6 +467,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
- 1,
- G_TYPE_STRING);
-
-+ /**
-+ * IBusEngine::property-hide:
-+ * @engine: An IBusEngine.
-+ *
-+ * This signal is emitted whenever a property is hidden.
-+ * Implement property_hide() in extend class to receive this signal.
-+ */
- engine_signals[PROPERTY_HIDE] =
- g_signal_new (I_("property-hide"),
- G_TYPE_FROM_CLASS (gobject_class),
-@@ -915,9 +1031,10 @@ ibus_engine_hide_auxiliary_text (IBusEngine *engine)
- G_TYPE_INVALID);
- }
-
--void ibus_engine_update_lookup_table (IBusEngine *engine,
-- IBusLookupTable *table,
-- gboolean visible)
-+void
-+ibus_engine_update_lookup_table (IBusEngine *engine,
-+ IBusLookupTable *table,
-+ gboolean visible)
- {
- _send_signal (engine,
- "UpdateLookupTable",
-@@ -926,6 +1043,35 @@ void ibus_engine_update_lookup_table (IBusEngine *engine,
- G_TYPE_INVALID);
- }
-
-+void
-+ibus_engine_update_lookup_table_fast (IBusEngine *engine,
-+ IBusLookupTable *table,
-+ gboolean visible)
-+{
-+ IBusLookupTable *new_table;
-+ gint page_begin;
-+ gint i;
-+
-+ if (table->candidates->len < table->page_size << 2) {
-+ ibus_engine_update_lookup_table (engine, table, visible);
-+ return;
-+ }
-+
-+ page_begin = (table->cursor_pos / table->page_size) * table->page_size;
-+
-+ new_table = ibus_lookup_table_new (table->page_size, 0, table->cursor_visible, table->round);
-+
-+ for (i = page_begin; i < page_begin + table->page_size && i < table->candidates->len; i++) {
-+ ibus_lookup_table_append_candidate (new_table, ibus_lookup_table_get_candidate (table, i));
-+ }
-+
-+ ibus_lookup_table_set_cursor_pos (new_table, ibus_lookup_table_get_cursor_in_page (table));
-+
-+ ibus_engine_update_lookup_table (engine, new_table, visible);
-+
-+ g_object_unref (new_table);
-+}
-+
- void ibus_engine_show_lookup_table (IBusEngine *engine)
- {
- _send_signal (engine,
-@@ -942,13 +1088,11 @@ void ibus_engine_hide_lookup_table (IBusEngine *engine)
-
- void ibus_engine_forward_key_event (IBusEngine *engine,
- guint keyval,
-- gboolean is_press,
- guint state)
- {
- _send_signal (engine,
-- "HideLookupTable",
-+ "ForwardKeyEvent",
- G_TYPE_UINT, &keyval,
-- G_TYPE_BOOLEAN, &is_press,
- G_TYPE_UINT, &state,
- G_TYPE_INVALID);
- }
-diff --git a/src/ibusengine.h b/src/ibusengine.h
-index 1a35c06..4fe12dc 100644
---- a/src/ibusengine.h
-+++ b/src/ibusengine.h
-@@ -129,6 +129,10 @@ void ibus_engine_update_lookup_table
- (IBusEngine *engine,
- IBusLookupTable *lookup_table,
- gboolean visible);
-+void ibus_engine_update_lookup_table_fast
-+ (IBusEngine *engine,
-+ IBusLookupTable *lookup_table,
-+ gboolean visible);
- void ibus_engine_show_lookup_table
- (IBusEngine *engine);
- void ibus_engine_hide_lookup_table
-@@ -137,7 +141,6 @@ void ibus_engine_hide_lookup_table
- void ibus_engine_forward_key_event
- (IBusEngine *engine,
- guint keyval,
-- gboolean is_press,
- guint state);
-
- void ibus_engine_register_properties
-diff --git a/src/ibusenginedesc.c b/src/ibusenginedesc.c
-index 39062b3..f9173e7 100644
---- a/src/ibusenginedesc.c
-+++ b/src/ibusenginedesc.c
-@@ -264,7 +264,7 @@ ibus_engine_desc_output (IBusEngineDesc *desc,
- OUTPUT_ENTRY_1(icon);
- OUTPUT_ENTRY_1(layout);
- g_string_append_indent (output, indent + 1);
-- g_string_append_printf (output, "<rank>%u</rank>", desc->rank);
-+ g_string_append_printf (output, "<rank>%u</rank>\n", desc->rank);
- #undef OUTPUT_ENTRY
- #undef OUTPUT_ENTRY_1
- g_string_append_indent (output, indent);
-diff --git a/src/ibusenginedesc.h b/src/ibusenginedesc.h
-index 1ba9153..ad83f1f 100644
---- a/src/ibusenginedesc.h
-+++ b/src/ibusenginedesc.h
-@@ -17,6 +17,22 @@
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-+/**
-+ * SECTION: ibusenginedesc
-+ * @short_description: Input method engine description data.
-+ * @stability: Stable
-+ * @see_also: #IBusComponent, #IBusEngine
-+ *
-+ * An IBusEngineDesc stores description data of IBusEngine.
-+ * The description data can either be passed to ibus_engine_desc_new(),
-+ * or loaded from an XML node through ibus_engine_desc_new_from_xml_node()
-+ * to construct IBusEngineDesc.
-+ *
-+ * However, the recommended way to load engine description data is
-+ * using ibus_component_new_from_file() to load a component file,
-+ * which also includes engine description data.
-+ */
-+
- #ifndef __ENGINE_DESC_H_
- #define __ENGINE_DESC_H_
-
-@@ -47,10 +63,26 @@ typedef struct _IBusEngineDesc IBusEngineDesc;
- typedef struct _IBusEngineDescClass IBusEngineDescClass;
- typedef struct _BusComponent BusComponent;
-
-+/**
-+ * IBusEngineDesc:
-+ * @name: Name of the engine.
-+ * @longname: Long name of the input method engine.
-+ * @description: Input method engine description.
-+ * @language: Language (e.g. zh, jp) supported by this input method engine.
-+ * @license: License of the input method engine.
-+ * @author: Author of the input method engine.
-+ * @icon: Icon file of this engine.
-+ * @layout: Keyboard layout
-+ * @rank: Preference rank among engines, the highest ranked IME will put in
-+ * the front.
-+ *
-+ * Input method engine description data.
-+ */
- struct _IBusEngineDesc {
- IBusSerializable parent;
- /* instance members */
-
-+ /*< public >*/
- gchar *name;
- gchar *longname;
- gchar *description;
-@@ -64,11 +96,25 @@ struct _IBusEngineDesc {
-
- struct _IBusEngineDescClass {
- IBusSerializableClass parent;
--
- /* class members */
- };
-
- GType ibus_engine_desc_get_type (void);
-+
-+/**
-+ * ibus_engine_desc_new:
-+ * @name: Name of the engine.
-+ * @longname: Long name of the input method engine.
-+ * @description: Input method engine description.
-+ * @language: Language (e.g. zh, jp) supported by this input method engine.
-+ * @license: License of the input method engine.
-+ * @author: Author of the input method engine.
-+ * @icon: Icon file of this engine.
-+ * @layout: Keyboard layout
-+ * @returns: A newly allocated IBusEngineDesc.
-+ *
-+ * New a IBusEngineDesc.
-+ */
- IBusEngineDesc *ibus_engine_desc_new (const gchar *name,
- const gchar *longname,
- const gchar *description,
-@@ -77,8 +123,28 @@ IBusEngineDesc *ibus_engine_desc_new (const gchar *name,
- const gchar *author,
- const gchar *icon,
- const gchar *layout);
-+/**
-+ * ibus_engine_desc_new_from_xml_node:
-+ * @node: An XML node
-+ * @returns: A newly allocated IBusEngineDesc that contains description from
-+ * @node.
-+ *
-+ * New a IBusEngineDesc from an XML node.
-+ * <note><para>This function is called by ibus_component_new_from_file(),
-+ * so developers normally do not need to call it directly.
-+ * </para></note>
-+ */
- IBusEngineDesc *ibus_engine_desc_new_from_xml_node
- (XMLNode *node);
-+/**
-+ * ibus_engine_desc_output:
-+ * @info: An IBusEngineDesc
-+ * @output: XML-formatted Input method engine description.
-+ * @indent: Number of indent (showed as 4 spaces).
-+ *
-+ * Output XML-formatted input method engine description.
-+ * The result will be append to GString specified in @output.
-+ */
- void ibus_engine_desc_output (IBusEngineDesc *info,
- GString *output,
- gint indent);
-diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c
-index 94de55a..95754cf 100644
---- a/src/ibusinputcontext.c
-+++ b/src/ibusinputcontext.c
-@@ -426,14 +426,12 @@ ibus_input_context_ibus_signal (IBusProxy *proxy,
- IBUS_INTERFACE_INPUT_CONTEXT,
- "ForwardKeyEvent")) {
- guint32 keyval;
-- gboolean is_press;
- guint32 state;
- gboolean retval;
-
- retval = ibus_message_get_args (message,
- &error,
- G_TYPE_UINT, &keyval,
-- G_TYPE_BOOLEAN, &is_press,
- G_TYPE_UINT, &state,
- G_TYPE_INVALID);
-
-diff --git a/src/ibuslookuptable.c b/src/ibuslookuptable.c
-index 37342c5..5e1bc81 100644
---- a/src/ibuslookuptable.c
-+++ b/src/ibuslookuptable.c
-@@ -273,6 +273,8 @@ ibus_lookup_table_clear (IBusLookupTable *table)
- }
-
- g_array_set_size (table->candidates, 0);
-+
-+ table->cursor_pos = 0;
- }
-
- void
-diff --git a/src/ibusobject.h b/src/ibusobject.h
-index 67fb95b..a3adfe2 100644
---- a/src/ibusobject.h
-+++ b/src/ibusobject.h
-@@ -17,9 +17,24 @@
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-+/**
-+ * SECTION: ibusobject
-+ * @short_description: Base Object of iBus.
-+ * @stability: Stable
-+ *
-+ * iBus Object is the base object for all objects in iBus.
-+ */
- #ifndef __IBUS_OBJECT_H_
- #define __IBUS_OBJECT_H_
-
-+/**
-+ * SECTION: iBusObject
-+ * @short_description: Base object of iBus.
-+ *
-+ *
-+ * This module provides essential definition and functions for manipulating
-+ * iBus base object.
-+ */
- #include <glib-object.h>
- #include "ibusmarshalers.h"
- #include "ibustypes.h"
-diff --git a/src/ibusproperty.h b/src/ibusproperty.h
-index 19ff33c..d28d3a8 100644
---- a/src/ibusproperty.h
-+++ b/src/ibusproperty.h
-@@ -17,6 +17,19 @@
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-+/**
-+ * SECTION: ibusproperty
-+ * @short_description: UI component for input method engine property.
-+ * @stability: Stable
-+ * @see_also: #IBusEngine
-+ *
-+ * An IBusProperty is an UI component like a button or a menu item
-+ * which shows the status of corresponding input method engine property.
-+ * End user can operate and see the current status of IME through these components.
-+ * For example, ibus-chewing users change the English/Chinese input mode by
-+ * pressing ctrl-space or click on the Eng/Chi switch button.
-+ * And the IBusProperty shows the change correspondingly.
-+ */
- #ifndef __IBUS_PROPERTY_H_
- #define __IBUS_PROPERTY_H_
-
-@@ -59,7 +72,17 @@ G_BEGIN_DECLS
- #define IBUS_PROP_LIST_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass))
-
--
-+/**
-+ * IBusPropType:
-+ * @PROP_TYPE_NORMAL: Property is shown as normal text.
-+ * @PROP_TYPE_TOGGLE: Property is shown as a toggle button.
-+ * @PROP_TYPE_RADIO: Property is shown as a radio selection option.
-+ * @PROP_TYPE_MENU: Property is shown as a menu, usually imply it has sub menu
-+ * items.
-+ * @PROP_TYPE_SEPARATOR: A separator for menu.
-+ *
-+ * Type of IBusProperty.
-+ */
- typedef enum {
- PROP_TYPE_NORMAL = 0,
- PROP_TYPE_TOGGLE = 1,
-@@ -68,6 +91,28 @@ typedef enum {
- PROP_TYPE_SEPARATOR = 4,
- } IBusPropType;
-
-+/**
-+ * IBusPropState:
-+ * @PROP_STATE_UNCHECKED: Property option is unchecked.
-+ * @PROP_STATE_CHECKED: Property option is checked.
-+ * @PROP_STATE_INCONSISTENT: The state is inconsistent with the associated IME
-+ * property.
-+ *
-+ * State of IBusProperty. The actual effect depends on #IBusPropType of the
-+ * IBusProperty.
-+ *
-+ * <variablelist>
-+ * <varlistentry>
-+ * <term>PROP_TYPE_TOGGLE</term>
-+ * <listitem><para>Emphasized if PROP_STATE_CHECKED, normal otherwise.</para></listitem>
-+ * </varlistentry>
-+ * <varlistentry>
-+ * <term>PROP_TYPE_RADIO</term>
-+ * <listitem><para>Option checked if PROP_STATE_CHECKED, unchecked otherwise.</para></listitem>
-+ * </varlistentry>
-+ * </variablelist>
-+ * No effect on other types.
-+ */
- typedef enum {
- PROP_STATE_UNCHECKED = 0,
- PROP_STATE_CHECKED = 1,
-@@ -80,9 +125,25 @@ typedef struct _IBusPropertyClass IBusPropertyClass;
- typedef struct _IBusPropList IBusPropList;
- typedef struct _IBusPropListClass IBusPropListClass;
-
-+/**
-+ * IBusProperty:
-+ * @key: Unique Identity for the IBusProperty.
-+ * @icon: Icon file for the IBusProperty.
-+ * @label: Text shown in UI.
-+ * @tooltip: Message shown if mouse hovered the IBusProperty.
-+ * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event.
-+ * @visible: Whether the IBusProperty is visible.
-+ * @type: IBusPropType of IBusProperty.
-+ * @state: IBusPropState of IBusProperty.
-+ * @sub_props: IBusPropList that contains sub IBusProperties. These IBusProperties are usually
-+ * shown as sub menu item.
-+ *
-+ * UI component for input method engine property.
-+ */
- struct _IBusProperty {
- IBusSerializable parent;
-
-+ /*< public >*/
- gchar *key;
- gchar *icon;
- IBusText *label;
-@@ -100,9 +161,16 @@ struct _IBusPropertyClass {
- IBusSerializableClass parent;
- };
-
-+/**
-+ * IBusPropList:
-+ * @properties: GArray that holds IBusProperties.
-+ *
-+ * A GArray of IBusProperties.
-+ */
- struct _IBusPropList {
- IBusSerializable parent;
-
-+ /*< public >*/
- GArray *properties;
- };
-
-@@ -111,6 +179,22 @@ struct _IBusPropListClass {
- };
-
- GType ibus_property_get_type ();
-+
-+/**
-+ * ibus_property_new:
-+ * @key: Unique Identity for the IBusProperty.
-+ * @icon: Icon file for the IBusProperty.
-+ * @label: Text shown in UI.
-+ * @tooltip: Message shown if mouse hovered the IBusProperty.
-+ * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event.
-+ * @visible: Whether the IBusProperty is visible.
-+ * @type: IBusPropType of IBusProperty.
-+ * @state: IBusPropState of IBusProperty.
-+ * @prop_list: IBusPropList that contains sub IBusProperties.
-+ * @returns: A newly allocated IBusProperty.
-+ *
-+ * New a IBusProperty.
-+ */
- IBusProperty *ibus_property_new (const gchar *key,
- IBusPropType type,
- IBusText *label,
-@@ -120,21 +204,90 @@ IBusProperty *ibus_property_new (const gchar *key,
- gboolean visible,
- IBusPropState state,
- IBusPropList *prop_list);
-+
-+/**
-+ * ibus_property_set_label:
-+ * @prop: An IBusProperty.
-+ * @label: Text shown in UI.
-+ *
-+ * Set the label of IBusProperty.
-+ */
- void ibus_property_set_label (IBusProperty *prop,
- IBusText *label);
-+
-+/**
-+ * ibus_property_set_visible:
-+ * @prop: An IBusProperty.
-+ * @visible: Whether the IBusProperty is visible.
-+ *
-+ * Set whether the IBusProperty is visible.
-+ */
- void ibus_property_set_visible (IBusProperty *prop,
- gboolean visible);
-+
-+/**
-+ * ibus_property_set_sub_props:
-+ * @prop: An IBusProperty.
-+ * @prop_list: IBusPropList that contains sub IBusProperties.
-+ *
-+ * Set the sub IBusProperties.
-+ */
- void ibus_property_set_sub_props(IBusProperty *prop,
- IBusPropList *prop_list);
-+
-+/**
-+ * ibus_property_update:
-+ * @prop: An IBusProperty.
-+ * @prop_update: IBusPropList that contains sub IBusProperties.
-+ * @returns: TRUE for update suceeded; FALSE otherwise.
-+ *
-+ * Update the content of an IBusProperty.
-+ * IBusProperty @prop_update can either be sub-property of @prop,
-+ * or holds new values for @prop.
-+ */
-+
- gboolean ibus_property_update (IBusProperty *prop,
- IBusProperty *prop_update);
-
- GType ibus_prop_list_get_type ();
-+
-+/**
-+ * ibus_prop_list_new:
-+ * @returns: A newly allocated IBusPropList.
-+ *
-+ * New a IBusPropList.
-+ */
- IBusPropList *ibus_prop_list_new ();
-+
-+/**
-+ * ibus_prop_list_append:
-+ * @prop_list: An IBusPropList.
-+ * @prop: IBusProperty to be append to @prop_list.
-+ *
-+ * Append an IBusProperty to an IBusPropList.
-+ */
- void ibus_prop_list_append (IBusPropList *prop_list,
- IBusProperty *prop);
-+
-+/**
-+ * ibus_prop_list_get:
-+ * @prop_list: An IBusPropList.
-+ * @index: Index of an IBusPropList.
-+ * @returns: IBusProperty at given index, NULL if no such IBusProperty.
-+ *
-+ * Returns IBusProperty at given index.
-+ */
- IBusProperty *ibus_prop_list_get (IBusPropList *prop_list,
- guint index);
-+
-+/**
-+ * ibus_prop_list_update_property:
-+ * @prop_list: An IBusPropList.
-+ * @prop: IBusProperty to be update.
-+ * @returns: TRUE if succeeded, FALSE otherwise.
-+ *
-+ * Update an IBusProperty in IBusPropList.
-+ */
- gboolean ibus_prop_list_update_property
- (IBusPropList *prop_list,
- IBusProperty *prop);
-diff --git a/src/ibustext.h b/src/ibustext.h
-index 9696f80..1c48c1e 100644
---- a/src/ibustext.h
-+++ b/src/ibustext.h
-@@ -17,6 +17,17 @@
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-+/**
-+ * SECTION: ibustext
-+ * @short_description: Text with decorating information.
-+ * @see_also: #IBusAttribute
-+ *
-+ * An IBusText is the main text object in IBus.
-+ * The text is decorated according to associated IBusAttribute,
-+ * e.g. the foreground/background color, underline, and
-+ * applied scope.
-+ */
-+
- #ifndef __IBUS_TEXT_H_
- #define __IBUS_TEXT_H_
-
-@@ -45,10 +56,19 @@ G_BEGIN_DECLS
- typedef struct _IBusText IBusText;
- typedef struct _IBusTextClass IBusTextClass;
-
-+/**
-+ * IBusText:
-+ * @is_static: Whether @text is static, i.e., no need and will not be freed. Only TRUE if IBusText is newed from ibus_text_new_from_static_string().
-+ * @text: The string content of IBusText in UTF-8.
-+ * @attrs: Associated IBusAttributes.
-+ *
-+ * A text object in IBus.
-+ */
- struct _IBusText {
- IBusSerializable parent;
-
- /* members */
-+ /*< public >*/
- gboolean is_static;
- gchar *text;
- IBusAttrList *attrs;
-@@ -59,17 +79,79 @@ struct _IBusTextClass {
- };
-
- GType ibus_text_get_type (void);
-+
-+/**
-+ * ibus_text_new_from_string:
-+ * @str: An text string to be set.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText whose content is copied from a text string.
-+ */
- IBusText *ibus_text_new_from_string (const gchar *str);
-+
-+/**
-+ * ibus_text_new_from_ucs4:
-+ * @str: An text string to be set.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText whose content is copied from a UCS4 encoded text string.
-+ */
- IBusText *ibus_text_new_from_ucs4 (const gunichar *str);
-+
-+/**
-+ * ibus_text_new_from_static_string:
-+ * @str: An text string to be set.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText whose content is from a static string.
-+ * Note that it is the developer's duty to ensure @str is static.
-+ */
- IBusText *ibus_text_new_from_static_string (const gchar *str);
-+
-+/**
-+ * ibus_text_new_from_printf:
-+ * @fmt: printf format string.
-+ * @...: arguments for @fmt.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText from a printf expression.
-+ */
- IBusText *ibus_text_new_from_printf (const gchar *fmt,
- ...);
-+
-+/**
-+ * ibus_text_new_from_unichar:
-+ * @c: A single UCS4-encoded character.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText from a single UCS4-encoded character.
-+ */
- IBusText *ibus_text_new_from_unichar (gunichar c);
-+
-+/**
-+ * ibus_text_append_attribute:
-+ * @text: an IBusText
-+ * @type: IBusAttributeType for @text.
-+ * @value: Value for the type.
-+ * @start_index: The starting index, inclusive.
-+ * @end_index: The ending index, exclusive.
-+ *
-+ * Append an IBusAttribute for IBusText.
-+ */
- void ibus_text_append_attribute (IBusText *text,
- guint type,
- guint value,
- guint start_index,
- gint end_index);
-+/**
-+ * ibus_text_get_length:
-+ * @text: An IBusText.
-+ * @returns: Number of character in @text, not counted by bytes.
-+ *
-+ * Return number of characters in an IBusText.
-+ * This function is based on g_utf8_strlen(), so unlike strlen(),
-+ * it does not count by bytes but characters instead.
-+ */
- guint ibus_text_get_length (IBusText *text);
-
- G_END_DECLS
-diff --git a/src/ibustypes.h b/src/ibustypes.h
-index a977db4..b2ea627 100644
---- a/src/ibustypes.h
-+++ b/src/ibustypes.h
-@@ -17,9 +17,41 @@
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-+/**
-+ * SECTION: ibustypes
-+ * @short_description: Generic types for iBus.
-+ * @stability: Stable
-+ *
-+ * This session consists generic types for iBus, including shift/control key modifiers,
-+ * and a rectangle structure.
-+ */
- #ifndef __IBUS_TYPES_H_
- #define __IBUS_TYPES_H_
-
-+/**
-+ * IBusModifierType:
-+ * @IBUS_SHIFT_MASK: Shift is activated.
-+ * @IBUS_LOCK_MASK: Cap Lock is locked.
-+ * @IBUS_CONTROL_MASK: Control key is activated.
-+ * @IBUS_MOD1_MASK: Modifier 1 (Usually Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)) activated.
-+ * @IBUS_MOD2_MASK: Modifier 2 (Usually Num_Lock (0x4d)) activated.
-+ * @IBUS_MOD3_MASK: Modifier 3 activated.
-+ * @IBUS_MOD4_MASK: Modifier 4 (Usually Super_L (0xce), Hyper_L (0xcf)) activated.
-+ * @IBUS_MOD5_MASK: Modifier 5 (ISO_Level3_Shift (0x5c), Mode_switch (0xcb)) activated.
-+ * @IBUS_BUTTON1_MASK: Mouse button 1 (left) is activated.
-+ * @IBUS_BUTTON2_MASK: Mouse button 2 (middle) is activated.
-+ * @IBUS_BUTTON3_MASK: Mouse button 3 (right) is activated.
-+ * @IBUS_BUTTON4_MASK: Mouse button 4 (scroll up) is activated.
-+ * @IBUS_BUTTON5_MASK: Mouse button 5 (scroll down) is activated.
-+ * @IBUS_FORWARD_MASK: Forward mask.
-+ * @IBUS_SUPER_MASK: Super (Usually Win) key is activated.
-+ * @IBUS_HYPER_MASK: Hyper key is activated.
-+ * @IBUS_RELEASE_MASK: Key is released.
-+ * @IBUS_MODIFIER_MASK: Modifier mask for the all the masks above.
-+ *
-+ * Handles key modifier such as control, shift and alt and release event.
-+ * Note that nits 15 - 25 are currently unused, while bit 29 is used internally.
-+ */
- typedef enum
- {
- IBUS_SHIFT_MASK = 1 << 0,
-@@ -40,7 +72,7 @@ typedef enum
- * Bits 15 - 25 are currently unused. Bit 29 is used internally.
- */
-
-- /* forard mask */
-+ /* forward mask */
- IBUS_FORWARD_MASK = 1 << 25,
-
- IBUS_SUPER_MASK = 1 << 26,
-@@ -52,6 +84,16 @@ typedef enum
- IBUS_MODIFIER_MASK = 0x5c001fff
- } IBusModifierType;
-
-+/**
-+ * IBusCapabilite:
-+ * @IBUS_CAP_PREEDIT_TEXT: UI is capable to show pre-edit text.
-+ * @IBUS_CAP_AUXILIARY_TEXT: UI is capable to show auxiliary text.
-+ * @IBUS_CAP_LOOKUP_TABLE: UI is capable to show the lookup table.
-+ * @IBUS_CAP_FOCUS: UI is capable to get focus.
-+ * @IBUS_CAP_PROPERTY: UI is capable to have property.
-+ *
-+ * Capability flags of UI.
-+ */
- typedef enum {
- IBUS_CAP_PREEDIT_TEXT = 1 << 0,
- IBUS_CAP_AUXILIARY_TEXT = 1 << 1,
-@@ -60,6 +102,15 @@ typedef enum {
- IBUS_CAP_PROPERTY = 1 << 4,
- } IBusCapabilite;
-
-+/**
-+ * IBusRectangle:
-+ * @x: x coordinate.
-+ * @y: y coordinate.
-+ * @width: width of the rectangle.
-+ * @height: height of the renctangl.
-+ *
-+ * Rectangle definition.
-+ */
- typedef struct _IBusRectangle IBusRectangle;
- struct _IBusRectangle {
- gint x;
-@@ -68,7 +119,13 @@ struct _IBusRectangle {
- gint height;
- };
-
--typedef void (* IBusFreeFunc) (gpointer );
-+/**
-+ * IBusFreeFunc:
-+ * @object: object to be freed.
-+ *
-+ * Free function prototype.
-+ */
-+typedef void (* IBusFreeFunc) (gpointer object);
-
- #endif
-
-diff --git a/ui/gtk/candidatepanel.py b/ui/gtk/candidatepanel.py
-index db02163..05c4e71 100644
---- a/ui/gtk/candidatepanel.py
-+++ b/ui/gtk/candidatepanel.py
-@@ -238,11 +238,11 @@ class CandidatePanel(gtk.VBox):
- else:
- # package all widgets in HORIZONTAL mode
- image = gtk.Image()
-- image.set_from_stock(gtk.STOCK_GO_BACK, gtk.ICON_SIZE_MENU)
-+ image.set_from_stock(gtk.STOCK_GO_UP, gtk.ICON_SIZE_MENU)
- self.__prev_button.set_image(image)
-
- image = gtk.Image()
-- image.set_from_stock(gtk.STOCK_GO_FORWARD, gtk.ICON_SIZE_MENU)
-+ image.set_from_stock(gtk.STOCK_GO_DOWN, gtk.ICON_SIZE_MENU)
- self.__next_button.set_image(image)
-
- vbox = gtk.VBox()
diff --git a/ibus.spec b/ibus.spec
index 54d57e9..faa1792 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -7,8 +7,8 @@
%define im_chooser_version 1.2.5
Name: ibus
-Version: 1.1.0.20090311
-Release: 3%{?dist}
+Version: 1.1.0.20090331
+Release: 1%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
Group: System Environment/Libraries
@@ -104,9 +104,9 @@ docs for ibus.
%prep
%setup -q
-rm -rf docs/reference/ibus/ibus-sections.txt
-%patch0 -p1
-./autogen.sh --help
+# rm -rf docs/reference/ibus/ibus-sections.txt
+# %patch0 -p1
+# ./autogen.sh --help
%build
%configure --disable-static \
@@ -217,6 +217,11 @@ fi
%{_libdir}/pkgconfig/*
%changelog
+* Tue Mar 31 2009 Huang Peng <shawn.p.huang@gmail.com> - 1.1.0.20090331-1
+- Update to ibus-1.1.0.20090331.
+- Fix bug 492956 - screws up keyboard input in firefox
+- Fix bug 490143 - ibus issue with gnome-keyring
+
* Sun Mar 29 2009 Huang Peng <shawn.p.huang@gmail.com> - 1.1.0.20090311-3
- Recreate the ibus-HEAD.patch from upstream git source tree
- Fix bug 491999 - up/down arrow keys broken in xchat
diff --git a/sources b/sources
index f8cac04..e2a4716 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-0a5dca579d10bdcc7eba4f475b5a0c2b ibus-1.1.0.20090311.tar.gz
+787a78e36da753835b059dbb46f54a40 ibus-1.1.0.20090331.tar.gz
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-05-31 2:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-31 2:04 [rpms/ibus] autotool: Update to ibus-1.1.0.20090331 Peng Huang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox