[ReorderView] Item reorder bug fix 21/128521/1
authorKamil Lipiszko <k.lipiszko@samsung.com>
Wed, 10 May 2017 08:56:37 +0000 (10:56 +0200)
committerKamil Lipiszko <k.lipiszko@samsung.com>
Wed, 10 May 2017 09:06:54 +0000 (11:06 +0200)
[OAPRNA-142] Elementary on item update removes it and creates new
one. Because of that geastures on item's image were setting reorder
status wrong and making item hang over the genlist because of avoided
mouse,down event. This patch fixes this both issues disabling item
updates during reorder.

Change-Id: I4f7d89b38794db0428046b6a244236d510f2f009

clock/inc/View/WorldClockReorderView.h
clock/src/View/WorldClockReorderView.cpp

index 74fe7e3b23363585f15663b7cef5373724728c7d..aefcae87f143e4b5b6e563be743fe6466c745f12 100644 (file)
@@ -178,6 +178,7 @@ namespace view {
                         * @brief Invoke when platform time format changes.
                         */
                        void TimeFormatChanged();
+                       static void LongpressCb(void *data, Evas_Object *obj, void *event_info);
        };
 
 } /* view */
index ac9faac4bff68af8c90c3ba5f2e0f7e8b9797e52..664c6985c7f67c7e4f3198ffee7320afbea6911d 100644 (file)
@@ -120,7 +120,10 @@ void WorldClockReorderView::AppendItems(
 Eina_Bool WorldClockReorderView::TimeUpdateCb(void *data)
 {
        WorldClockReorderView *view = static_cast<WorldClockReorderView *>(data);
-       elm_genlist_realized_items_update(view->content_);
+
+       Eina_Bool reorder = elm_genlist_reorder_mode_get(view->content_);
+       if (!reorder)
+               elm_genlist_realized_items_update(view->content_);
 
        ecore_timer_interval_set(view->timer_, utils::GetSecondsToNextExactMinute());
 
@@ -176,13 +179,15 @@ void WorldClockReorderView::DestroyContent()
        evas_object_del(left_button_);
 }
 
-void longpress_cb(void *data, Evas_Object *obj, void *event_info)
+void WorldClockReorderView::LongpressCb(void *data, Evas_Object *obj, void *event_info)
 {
        LocationReorderItemData *lrid = static_cast<LocationReorderItemData *>(data);
-       static Eina_Bool reorder = EINA_TRUE;
 
-       elm_genlist_reorder_mode_set(lrid->view->GetEvasObject(), reorder);
-       reorder = !reorder;
+       Eina_Bool reorder = elm_genlist_reorder_mode_get(lrid->view->GetEvasObject());
+       elm_genlist_reorder_mode_set(lrid->view->GetEvasObject(), !reorder);
+
+       if (reorder)
+               elm_genlist_realized_items_update(lrid->view->content_);
 }
 
 Evas_Object *WorldClockReorderView::ContentGet(void *data,
@@ -197,8 +202,8 @@ Evas_Object *WorldClockReorderView::ContentGet(void *data,
                elm_image_file_set(img, TizenAppUtils::GetResourcePath(TizenAppUtils::APP_DIR_RESOURCE, "images/world_clock_reorder.png"), NULL);
                evas_object_propagate_events_set(img, EINA_TRUE);
 
-               evas_object_smart_callback_add(img, "mouse,down", longpress_cb, data);
-               evas_object_smart_callback_add(img, "mouse,up", longpress_cb, data);
+               evas_object_smart_callback_add(img, "mouse,down", LongpressCb, data);
+               evas_object_smart_callback_add(img, "mouse,up", LongpressCb, data);
 
                return img;
        }