simplify preedit condition
authorPeng Huang <shawn.p.huang@gmail.com>
Tue, 9 Feb 2010 09:07:49 +0000 (17:07 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Sat, 20 Feb 2010 02:43:13 +0000 (10:43 +0800)
bus/inputcontext.c

index fb67220154da816637192572111448c0a75dcd7a..acc25b6de88d4295b9c01730ff13f9704fca2e54 100644 (file)
@@ -128,16 +128,10 @@ static IBusPropList    *props_empty = NULL;
 
 G_DEFINE_TYPE (BusInputContext, bus_input_context, IBUS_TYPE_SERVICE)
 
-static inline gboolean is_embed_preedit_text(){
-    BusIBusImpl * ibusimpl = BUS_DEFAULT_IBUS;
-    return ibusimpl->embed_preedit_text;
-}
-
-#define IS_CLIENT_CAPABLE_PREEDIT(context)                     \
-    ((context->capabilities & IBUS_CAP_PREEDIT_TEXT) == IBUS_CAP_PREEDIT_TEXT)
-
-#define IS_CLIENT_FORCE_PREEDIT(context)                       \
-  (IS_CLIENT_CAPABLE_PREEDIT(context) && (context->capabilities & IBUS_CAP_FOCUS) == 0)
+/* when send preedit to client */
+#define PREEDIT_CONDITION  \
+    ((context->capabilities & IBUS_CAP_PREEDIT_TEXT) && \
+    (BUS_DEFAULT_IBUS->embed_preedit_text || (context->capabilities & IBUS_CAP_FOCUS) == 0))
 
 static void
 _connection_destroy_cb (BusConnection   *connection,
@@ -1188,7 +1182,7 @@ bus_input_context_focus_in (BusInputContext *context)
     if (context->capabilities & IBUS_CAP_FOCUS) {
         g_signal_emit (context, context_signals[FOCUS_IN], 0);
         if (context->engine && context->enabled) {
-          if (context->preedit_visible && !(is_embed_preedit_text() && IS_CLIENT_CAPABLE_PREEDIT(context)) && !IS_CLIENT_FORCE_PREEDIT(context)) {
+          if (context->preedit_visible && !PREEDIT_CONDITION) {
                 g_signal_emit (context,
                                context_signals[UPDATE_PREEDIT_TEXT],
                                0,
@@ -1229,7 +1223,7 @@ bus_input_context_focus_out (BusInputContext *context)
     context->has_focus = FALSE;
 
     if (context->capabilities & IBUS_CAP_FOCUS) {
-         if (context->preedit_visible && !(is_embed_preedit_text() && IS_CLIENT_CAPABLE_PREEDIT(context)) && !IS_CLIENT_FORCE_PREEDIT(context) ) {
+         if (context->preedit_visible && !PREEDIT_CONDITION) {
             g_signal_emit (context, context_signals[HIDE_PREEDIT_TEXT], 0);
         }
         if (context->auxiliary_visible && (context->capabilities & IBUS_CAP_AUXILIARY_TEXT) == 0) {
@@ -1304,7 +1298,7 @@ bus_input_context_update_preedit_text (BusInputContext *context,
     context->preedit_cursor_pos = cursor_pos;
     context->preedit_visible = visible;
 
-    if ((is_embed_preedit_text() && IS_CLIENT_CAPABLE_PREEDIT(context)) || IS_CLIENT_FORCE_PREEDIT(context)) {
+    if (PREEDIT_CONDITION) {
         bus_input_context_send_signal (context,
                                        "UpdatePreeditText",
                                        IBUS_TYPE_TEXT, &(context->preedit_text),
@@ -1333,7 +1327,7 @@ bus_input_context_show_preedit_text (BusInputContext *context)
 
     context->preedit_visible = TRUE;
 
-    if ((is_embed_preedit_text() && IS_CLIENT_CAPABLE_PREEDIT(context)) || IS_CLIENT_FORCE_PREEDIT(context)) {
+    if (PREEDIT_CONDITION) {
         bus_input_context_send_signal (context,
                                        "ShowPreeditText",
                                        G_TYPE_INVALID);
@@ -1356,7 +1350,7 @@ bus_input_context_hide_preedit_text (BusInputContext *context)
 
     context->preedit_visible = FALSE;
 
-    if (is_embed_preedit_text() && (context->capabilities & IBUS_CAP_PREEDIT_TEXT) == IBUS_CAP_PREEDIT_TEXT) {
+    if (PREEDIT_CONDITION) {
         bus_input_context_send_signal (context,
                                        "HidePreeditText",
                                        G_TYPE_INVALID);