Fixed the virtual window related problems 01/22501/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Wed, 26 Feb 2014 05:15:06 +0000 (14:15 +0900)
committershoum.chen@samsung.com <shoum.chen@samsung.com>
Wed, 4 Jun 2014 22:00:12 +0000 (18:00 -0400)
Change-Id: Id883723e42167bfd71793bff3564a9a7c0f88ea9

scl/gwes/efl/sclwindows-efl.cpp
scl/scluibuilder.cpp

index 807117a..4c80e68 100644 (file)
@@ -409,15 +409,16 @@ CSCLWindowsImplEfl::destroy_window(sclwindow window)
     CSCLWindows *windows = CSCLWindows::get_instance();
     CSCLUtils *utils = CSCLUtils::get_instance();
 
-    utils->log("WinEfl_destroywin %p %p (basewin %p mag %p)\n",
-        window, elm_win_xwindow_get(static_cast<Evas_Object*>(window)),
-        windows->get_base_window(), windows->get_magnifier_window());
-
     SclWindowContext *winctx = NULL;
     if (windows && window) {
         winctx = windows->get_window_context(window);
     }
 
+    utils->log("WinEfl_destroywin %p %p (basewin %p mag %p)\n",
+        window,
+        (winctx && !(winctx->is_virtual)) ? elm_win_xwindow_get(static_cast<Evas_Object*>(window)) : 0x01,
+        windows->get_base_window(), windows->get_magnifier_window());
+
     if (windows && utils && winctx) {
         if (winctx->etc_info) {
             Eina_List *list = (Eina_List*)(winctx->etc_info);
@@ -482,7 +483,8 @@ CSCLWindowsImplEfl::destroy_window(sclwindow window)
             }
         }
         utils->log("WinEfl_destroywin %p %p (basewin %p mag %p)\n",
-            window, elm_win_xwindow_get(static_cast<Evas_Object*>(window)),
+            window,
+            (winctx && !(winctx->is_virtual)) ? elm_win_xwindow_get(static_cast<Evas_Object*>(window)) : 0x01,
             windows->get_base_window(), windows->get_magnifier_window());
     }
 
@@ -549,13 +551,16 @@ CSCLWindowsImplEfl::show_window(const sclwindow window, sclboolean queue)
              *
              * N_SE-52548: ...and modified if() for other popup windows as well...
              */
-            ecore_x_icccm_transient_for_set
-                (elm_win_xwindow_get(static_cast<Evas_Object*>(window)), app_window);
-            elm_win_raise((Evas_Object *)window);
+            if (winctx && !(winctx->is_virtual)) {
+                ecore_x_icccm_transient_for_set
+                    (elm_win_xwindow_get(static_cast<Evas_Object*>(window)), app_window);
+                elm_win_raise((Evas_Object *)window);
+            }
         }
 #endif
         utils->log("WinEfl_showwin %p %p (basewin %p mag %p)\n",
-            window, elm_win_xwindow_get(static_cast<Evas_Object*>(window)),
+            window,
+            (winctx && !(winctx->is_virtual)) ? elm_win_xwindow_get(static_cast<Evas_Object*>(window)) : 0x01,
             windows->get_base_window(), windows->get_magnifier_window());
     }
 }
@@ -675,7 +680,8 @@ CSCLWindowsImplEfl::hide_window(const sclwindow window,  sclboolean fForce)
             malloc_trim(0);
         }
         utils->log("WinEfl_hidewin %p %p (basewin %p mag %p)\n",
-            window, elm_win_xwindow_get(static_cast<Evas_Object*>(window)),
+            window,
+            (winctx && !(winctx->is_virtual)) ? elm_win_xwindow_get(static_cast<Evas_Object*>(window)) : 0x01,
             windows->get_base_window(), windows->get_magnifier_window());
     }
 }
@@ -766,7 +772,8 @@ CSCLWindowsImplEfl::move_window(const sclwindow window, scl16 x, scl16 y)
         //evas_render_idle_flush(evas);
 
         utils->log("WinEfl_movewin %p %p %d %d %d %d (basewin %p mag %p)\n",
-            window, elm_win_xwindow_get(static_cast<Evas_Object*>(window)),
+            window,
+            (winctx && !(winctx->is_virtual)) ? elm_win_xwindow_get(static_cast<Evas_Object*>(window)) : 0x01,
             x, y, rotatex, rotatey,
             windows->get_base_window(), windows->get_magnifier_window());
     }
@@ -803,8 +810,10 @@ CSCLWindowsImplEfl::resize_window(const sclwindow window, scl16 width, scl16 hei
     Evas_Object *win = (Evas_Object*)window;
 #ifndef FULL_SCREEN_TEST
     if (windows && utils && window) {
+        SclWindowContext *winctx = windows->get_window_context(window);
         utils->log("WinEfl_resizewin %p %p %d %d (basewin %p mag %p)\n",
-            window, elm_win_xwindow_get(static_cast<Evas_Object*>(window)), width, height,
+            window,
+            (winctx && !(winctx->is_virtual)) ? elm_win_xwindow_get(static_cast<Evas_Object*>(window)) : 0x01,
             windows->get_base_window(), windows->get_magnifier_window());
     }
 #endif
index 9f60193..27125d9 100644 (file)
@@ -248,6 +248,18 @@ CSCLUIBuilder::show_layout(const sclwindow window, const scl16 x, const scl16 y,
 
                 //if (highlight_ui_enabled)
                 if (focus_handler->get_current_focus_window() == window) {
+                    sclint startx = cache->get_custom_starting_coordinates().x;
+                    sclint starty = cache->get_custom_starting_coordinates().y;
+
+                    SclWindowContext *winctx = windows->get_window_context(window);
+                    SclWindowContext *basectx = windows->get_window_context(windows->get_base_window());
+                    if (winctx && basectx) {
+                        if (winctx->is_virtual) {
+                            startx += (winctx->geometry.x - basectx->geometry.x);
+                            starty += (winctx->geometry.y - basectx->geometry.y);
+                        }
+                    }
+
                     // if (highlight_animation_enabled)
                     // else {
                         sclchar composed_path[_POSIX_PATH_MAX] = {0,};
@@ -259,7 +271,7 @@ CSCLUIBuilder::show_layout(const sclwindow window, const scl16 x, const scl16 y,
                         if (coordinate) {
                             // Draw highlight
                             graphics->draw_image(window, draw_ctx, composed_path, NULL,
-                                coordinate->x, coordinate->y, coordinate->width, coordinate->height);
+                                startx + coordinate->x, starty + coordinate->y, coordinate->width, coordinate->height);
                         }
                     //}
                 }