ecore_imf/ibus: support delete-surrounding-text signal
authorJihoon Kim <jihoon48.kim@samsung.com>
Tue, 30 Sep 2014 01:47:26 +0000 (10:47 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 30 Sep 2014 01:47:26 +0000 (10:47 +0900)
src/modules/ecore_imf/ibus/ibus_imcontext.c

index c735ce2..d662ac2 100644 (file)
@@ -682,6 +682,25 @@ sort_cb(const void *d1, const void *d2)
 }
 
 static void
+_ecore_imf_context_ibus_delete_surrounding_text_cb(IBusInputContext *ibuscontext EINA_UNUSED,
+                                                   gint              offset_from_cursor,
+                                                   guint             nchars,
+                                                   IBusIMContext    *ibusimcontext)
+{
+   EINA_SAFETY_ON_NULL_RETURN(ibusimcontext);
+
+   if (_focus_im_context != ibusimcontext->ctx)
+     return;
+
+   Ecore_IMF_Event_Delete_Surrounding ev;
+   ev.ctx = _focus_im_context;
+   ev.n_chars = nchars;
+   ev.offset = offset_from_cursor;
+   ecore_imf_context_delete_surrounding_event_add(_focus_im_context, offset_from_cursor, nchars);
+   ecore_imf_context_event_callback_call(_focus_im_context, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, &ev);
+}
+
+static void
 _ecore_imf_context_ibus_update_preedit_text_cb(IBusInputContext  *ibuscontext EINA_UNUSED,
                                                IBusText          *text,
                                                gint               cursor_pos,
@@ -932,6 +951,10 @@ _ecore_imf_context_ibus_create(IBusIMContext *ibusimcontext)
                     G_CALLBACK (_ecore_imf_context_ibus_forward_key_event_cb),
                     ibusimcontext);
    g_signal_connect(ibusimcontext->ibuscontext,
+                    "delete-surrounding-text",
+                    G_CALLBACK (_ecore_imf_context_ibus_delete_surrounding_text_cb),
+                    ibusimcontext);
+   g_signal_connect(ibusimcontext->ibuscontext,
                     "update-preedit-text",
                     G_CALLBACK (_ecore_imf_context_ibus_update_preedit_text_cb),
                     ibusimcontext);