[*][conformant] change elm_widget_show_region_set to be called by ecore_job
authorJaehwan Kim <jae.hwan.kim@samsung.com>
Fri, 4 Nov 2011 09:49:21 +0000 (18:49 +0900)
committerJaehwan Kim <jae.hwan.kim@samsung.com>
Fri, 11 Nov 2011 04:58:42 +0000 (13:58 +0900)
Change-Id: I0addc8a5e3bf2131dd6f154a8a111c24fdc6b017

src/lib/elm_conform.c

index 9985846..c9fe3f8 100644 (file)
@@ -29,6 +29,7 @@ struct _Widget_Data
       Evas_Coord auto_x, auto_y; // desired delta
       Evas_Coord x, y; // current delta
    } delta;
+   Ecore_Job *show_region_job;
 };
 
 /* Enum to identify conformant swallow parts */
@@ -370,20 +371,14 @@ _conformant_move_resize_event_cb(void *data __UNUSED__, Evas *e __UNUSED__,
 }
 #endif
 
-// showing the focused/important region.
 static void
-_content_resize_event_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj
-                         __UNUSED__, void *event_info __UNUSED__)
+_show_region_job(void *data)
 {
    Evas_Object *focus_obj;
    Evas_Object *conformant = (Evas_Object *)data;
    Widget_Data *wd = elm_widget_data_get(conformant);
 
    if (!wd) return;
-#ifdef HAVE_ELEMENTARY_X
-   if ((wd->vkb_state == ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF)
-            && (!wd->is_visible)) return;
-#endif
 
    focus_obj = elm_widget_focused_object_get(conformant);
    if (focus_obj)
@@ -397,6 +392,26 @@ _content_resize_event_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj
 
         elm_widget_show_region_set(focus_obj, x, y, w, h, EINA_TRUE);
      }
+
+   wd->show_region_job = NULL;
+}
+
+// showing the focused/important region.
+static void
+_content_resize_event_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj
+                         __UNUSED__, void *event_info __UNUSED__)
+{
+   Evas_Object *conformant = (Evas_Object *)data;
+   Widget_Data *wd = elm_widget_data_get(conformant);
+
+   if (!wd) return;
+#ifdef HAVE_ELEMENTARY_X
+   if ((wd->vkb_state == ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF)
+            && (!wd->is_visible)) return;
+#endif
+
+   if (wd->show_region_job) ecore_job_del(wd->show_region_job);
+   wd->show_region_job = ecore_job_add(_show_region_job, conformant);
 }
 
 #ifdef HAVE_ELEMENTARY_X