[clipdrawer] Apply timer 200ms for clipboard hide prepare time
authorJaehyun Cho <jae_hyun.cho@samsung.com>
Fri, 2 Aug 2013 06:06:31 +0000 (15:06 +0900)
committerJaehyun Cho <jae_hyun.cho@samsung.com>
Fri, 2 Aug 2013 06:18:44 +0000 (15:18 +0900)
Change-Id: I77661c8ccf92f3ec4358472a2e2cafcae17358ea

src/clipdrawer.c
src/clipdrawer.h

index 26b2e0c..5501b99 100644 (file)
@@ -27,6 +27,7 @@
 #define ANIM_DURATION 30 // 1 seconds
 #define ANIM_FLOPS (0.5/30)
 #define DEFAULT_WIDTH 720
+#define LOWER_VIEW_PREPARE_TIME 0.2
 
 #define MULTI_(id) dgettext("sys_string", #id)
 #define S_CLIPBOARD MULTI_(IDS_COM_BODY_CLIPBOARD)
@@ -197,6 +198,8 @@ ClipdrawerData* init_clipdrawer(AppData *ad)
        cd->keydown_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, keydown_cb, ad);
        cd->evas = evas_object_evas_get(cd->main_win);
 
+       cd->lower_view_timer = NULL;
+
        delete_mode = EINA_FALSE;
 
        return cd;
@@ -706,19 +709,42 @@ void clipdrawer_activate_view(AppData* ad)
        }
 }
 
-void clipdrawer_lower_view(AppData* ad)
+static Eina_Bool _lower_view_timer_cb(void *data)
 {
        CALLED();
+       if (!data)
+               return ECORE_CALLBACK_PASS_ON;
+
+       AppData *ad = data;
        ClipdrawerData *cd = ad->clipdrawer;
+       if (!cd)
+               return ECORE_CALLBACK_PASS_ON;
+       ecore_timer_del(cd->lower_view_timer);
+       cd->lower_view_timer = NULL;
+
        if (cd->main_win)
        {
                evas_object_hide(cd->main_win);
                elm_win_lower(cd->main_win);
                unset_transient_for(cd->x_main_win, ad->x_active_win);
                _delete_mode_set(ad, EINA_FALSE);
+               return ECORE_CALLBACK_DONE;
+       }
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+void clipdrawer_lower_view(AppData* ad)
+{
+       CALLED();
+       ClipdrawerData *cd = ad->clipdrawer;
+
+       if (!cd->lower_view_timer)
+       {
                Ecore_X_Window zone = ecore_x_e_illume_zone_get(cd->x_main_win);
                ecore_x_e_illume_clipboard_state_set(zone, ECORE_X_ILLUME_CLIPBOARD_STATE_OFF);
                ecore_x_e_illume_clipboard_geometry_set(zone, 0, 0, 0, 0);
+
+               cd->lower_view_timer = ecore_timer_add(LOWER_VIEW_PREPARE_TIME, _lower_view_timer_cb, ad);
        }
 }
 
index c656e76..e8bb4d1 100644 (file)
@@ -57,6 +57,8 @@ struct _ClipdrawerData {
        AnimStatus anim_status;
        int anim_count;
        Eina_Bool paste_text_only:1;
+
+       Ecore_Timer *lower_view_timer;
 };
 
 #include "cbhm.h"