[ecore_imf] add ecore_imf_context_cursor_location_set API
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 7 Jul 2011 07:43:32 +0000 (16:43 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Thu, 7 Jul 2011 07:46:49 +0000 (16:46 +0900)
Change-Id: Ifc88d1bd74b26c86ae143edd20d70432b6e93299

src/lib/ecore_imf/Ecore_IMF.h
src/lib/ecore_imf/ecore_imf_context.c

index 50c608f..043af1f 100644 (file)
@@ -412,8 +412,6 @@ struct _Ecore_IMF_Context_Class
    void (*use_preedit_set)     (Ecore_IMF_Context *ctx, Eina_Bool use_preedit);
    void (*input_mode_set)      (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
    Eina_Bool (*filter_event)   (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
-
-   /* Input Panel Control APIs */
    void (*control_panel_show)   (Ecore_IMF_Context *ctx);
    void (*control_panel_hide)   (Ecore_IMF_Context *ctx);
 
@@ -453,6 +451,7 @@ struct _Ecore_IMF_Context_Class
    void (*preedit_string_with_attributes_get) (Ecore_IMF_Context *ctx, char **str, Eina_List **attrs, int *cursor_pos);
    void (*prediction_allow_set)(Ecore_IMF_Context *ctx, Eina_Bool prediction);
    void (*autocapital_type_set)(Ecore_IMF_Context *ctx, Ecore_IMF_Autocapital_Type autocapital_type);
+   void (*cursor_location_set) (Ecore_IMF_Context *ctx, int x, int y, int w, int h);
 };
 
 struct _Ecore_IMF_Context_Info
@@ -490,6 +489,7 @@ EAPI void                          ecore_imf_context_focus_in(Ecore_IMF_Context
 EAPI void                          ecore_imf_context_focus_out(Ecore_IMF_Context *ctx);
 EAPI void                          ecore_imf_context_reset(Ecore_IMF_Context *ctx);
 EAPI void                          ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos);
+EAPI void                          ecore_imf_context_cursor_location_set(Ecore_IMF_Context *ctx, int x, int y, int w, int h);
 EAPI void                          ecore_imf_context_use_preedit_set(Ecore_IMF_Context *ctx, Eina_Bool use_preedit);
 EAPI void                          ecore_imf_context_retrieve_surrounding_callback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos), const void *data);
 EAPI void                          ecore_imf_context_input_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
index 0ccdf2c..524e0d9 100644 (file)
@@ -516,6 +516,29 @@ ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos)
 }
 
 /**
+ * Notify the Input Method Context that a change in the cursor
+ * location has been made. The location is relative to the canvas.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param x cursor x position.
+ * @param x cursor y position.
+ * @param w cursor width.
+ * @param h cursor height.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_cursor_location_set(Ecore_IMF_Context *ctx, int x, int y, int w, int h)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_cursor_location_set");
+        return;
+     }
+   if (ctx->klass->cursor_location_set) ctx->klass->cursor_location_set(ctx, x, y, w, h);
+}
+
+/**
  * Set whether the IM context should use the preedit string
  * to display feedback. If @use_preedit is EINA_FALSE (default
  * is EINA_TRUE), then the IM context may use some other method to display