win: Drop calls to lower when using the EO API
authorJean-Philippe Andre <jp.andre@samsung.com>
Thu, 31 Aug 2017 07:58:02 +0000 (16:58 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Fri, 1 Sep 2017 01:09:37 +0000 (10:09 +0900)
Note: The distinction is made on how the window was created, not on
which API is used (evas_object_lower or efl_gfx_stack_lower or
elm_win_lower).

Ref T5322

src/lib/elementary/efl_ui_win.c
src/lib/elementary/efl_ui_win.eo

index d4bea99..8a6e487 100644 (file)
@@ -824,6 +824,7 @@ _elm_win_obj_intercept_raise(void *data, Evas_Object *obj EINA_UNUSED)
 static void
 _elm_win_obj_intercept_lower(void *data, Evas_Object *obj EINA_UNUSED)
 {
+   // Note: This is probably not necessary anymore (Win ignores lower)
    ELM_WIN_DATA_GET(data, sd);
    TRAP(sd, lower);
 }
@@ -5557,6 +5558,18 @@ elm_win_raise(Eo *obj)
 }
 
 EOLIAN static void
+_efl_ui_win_efl_gfx_stack_lower(Eo *obj, Efl_Ui_Win_Data *pd EINA_UNUSED)
+{
+   // Do nothing: in X we could request to stack lower but that has been abused
+   // and transformed into a kind of "iconify". As a consequence, lower is
+   // not allowed in EO land.
+   if (!elm_widget_is_legacy(obj)) return;
+
+   // Legacy support...
+   elm_win_lower(obj);
+}
+
+EOLIAN static void
 _efl_ui_win_center(Eo *obj, Efl_Ui_Win_Data *sd, Eina_Bool h, Eina_Bool v)
 {
    int win_w, win_h, screen_x, screen_y, screen_w, screen_h, nx, ny;
index cc05d53..4ca1000 100644 (file)
@@ -842,6 +842,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, Elm.Interface.Atspi.Window,
       Efl.Gfx.size { set; }
       Efl.Gfx.Stack.raise; [[Places the window at the top of the stack, so
                              that it's not covered by any other window.]]
+      Efl.Gfx.Stack.lower; [[This action is ignored by the Window.]]
       Elm.Widget.focus_direction;
       Elm.Widget.focus_next_manager_is;
       Elm.Widget.focus_direction_manager_is;