[WorldClockMap] Fix map movement issue. 00/110300/1
authorKamil Lipiszko <k.lipiszko@samsung.com>
Fri, 13 Jan 2017 14:36:20 +0000 (15:36 +0100)
committerKamil Lipiszko <k.lipiszko@samsung.com>
Fri, 13 Jan 2017 14:36:20 +0000 (15:36 +0100)
[OAPRNA-123] This issue was appearing due to wrongly x axis map
movement calculation related with scroller's width fewer than
it really was.

Change-Id: Iff9ae744254225cf4c11a65d5c4facde152c430f

clock/res/edje/WorldClock.edc
clock/src/View/WorldClockMap.cpp

index 478d395..b6378fa 100644 (file)
@@ -130,7 +130,7 @@ collections {
                                desc { "default";
                                        min: 0 406;
                                        max: -1 406;
-                                       fixed: 1 1;
+                                       fixed: 0 1;
                                }
                        }
 
index 07d81fe..51b3229 100644 (file)
@@ -58,6 +58,7 @@ void WorldClockMap::ShadowScrollerCreate()
        scroller_ = ScrollerCreate();
        elm_object_part_content_set(map_, "scroller", scroller_);
 
+       evas_object_event_callback_add(scroller_, EVAS_CALLBACK_RESIZE, ScrollerResizeCb, this);
        evas_object_event_callback_add(scroller_, EVAS_CALLBACK_MOVE, ScrollerResizeCb, this);
 }
 
@@ -94,6 +95,11 @@ Evas_Object *WorldClockMap::ScrollerCreate()
 void WorldClockMap::ScrollerResizeCb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        WorldClockMap *view = static_cast<WorldClockMap *>(data);
+
+       evas_object_geometry_get(view->scroller_, &view->mapX, &view->mapY, &view->mapW, &view->mapH);
+       if (view->mapX < 0 || view->mapY < 0 || view->mapW <= 0 || view->mapH <= 0)
+               return;
+
        view->MapUpdate();
 }
 
@@ -144,12 +150,6 @@ Evas_Object *WorldClockMap::GetEvasObject()
 
 bool WorldClockMap::ShadowCreate(std::tm now, double declination)
 {
-       evas_object_geometry_get(scroller_, &mapX, &mapY, &mapW, &mapH);
-
-       if (mapX < 0 || mapY < 0 || mapW <= 0 || mapH <= 0)
-               return false;
-       ++mapW; //evas_object_geometry_get returns item's width - 1px
-
        for (int i = 0; i < LATITUDE_RESOLUTION_; ++i) {
                double time = TimeAngle(90 - i, declination);
 
@@ -183,7 +183,6 @@ void WorldClockMap::ShadowDraw()
        evas_object_image_alpha_set(shadow_, EINA_TRUE);
        evas_object_show(shadow_);
 
-       evas_object_geometry_set(shadow_, mapX, mapY, mapW, mapH);
        evas_object_image_size_set(shadow_, mapW, mapH);
 
        shadow_surface_ = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, mapW, mapH);
@@ -229,7 +228,6 @@ void WorldClockMap::LineDraw()
        evas_object_image_alpha_set(line_, EINA_TRUE);
        evas_object_show(line_);
 
-       evas_object_geometry_set(line_, mapX, mapY, mapW, mapH);
        evas_object_image_size_set(line_, mapW, mapH);
 
        line_surface_ = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, mapW, mapH);