summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c41
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h6
2 files changed, 47 insertions, 0 deletions
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index 16a6c98876..54462a6eb6 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -1456,6 +1456,46 @@ _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int la
1456} 1456}
1457 1457
1458static void 1458static void
1459_ecore_evas_wl_common_layer_update(Ecore_Evas *ee)
1460{
1461 Ecore_Evas_Engine_Wl_Data *wdata;
1462
1463 wdata = ee->engine.data;
1464 if (!wdata) return;
1465
1466 if (ee->prop.layer < 3)
1467 {
1468 if ((wdata->stack.above) || (!wdata->stack.below))
1469 {
1470 wdata->stack.above = EINA_FALSE;
1471 wdata->stack.below = EINA_TRUE;
1472 ecore_wl2_window_stack_mode_set(wdata->win,
1473 ECORE_WL2_WINDOW_STACK_BELOW);
1474 }
1475 }
1476 else if (ee->prop.layer > 5)
1477 {
1478 if ((!wdata->stack.above) || (wdata->stack.below))
1479 {
1480 wdata->stack.above = EINA_TRUE;
1481 wdata->stack.below = EINA_FALSE;
1482 ecore_wl2_window_stack_mode_set(wdata->win,
1483 ECORE_WL2_WINDOW_STACK_ABOVE);
1484 }
1485 }
1486 else
1487 {
1488 if ((wdata->stack.above) || (wdata->stack.below))
1489 {
1490 wdata->stack.above = EINA_FALSE;
1491 wdata->stack.below = EINA_FALSE;
1492 ecore_wl2_window_stack_mode_set(wdata->win,
1493 ECORE_WL2_WINDOW_STACK_NONE);
1494 }
1495 }
1496}
1497
1498static void
1459_ecore_evas_wl_common_layer_set(Ecore_Evas *ee, int layer) 1499_ecore_evas_wl_common_layer_set(Ecore_Evas *ee, int layer)
1460{ 1500{
1461 LOGFN(__FILE__, __LINE__, __FUNCTION__); 1501 LOGFN(__FILE__, __LINE__, __FUNCTION__);
@@ -1465,6 +1505,7 @@ _ecore_evas_wl_common_layer_set(Ecore_Evas *ee, int layer)
1465 if (layer < 1) layer = 1; 1505 if (layer < 1) layer = 1;
1466 else if (layer > 255) layer = 255; 1506 else if (layer > 255) layer = 255;
1467 ee->prop.layer = layer; 1507 ee->prop.layer = layer;
1508 _ecore_evas_wl_common_layer_update(ee);
1468 _ecore_evas_wl_common_state_update(ee); 1509 _ecore_evas_wl_common_state_update(ee);
1469} 1510}
1470 1511
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
index e6e3f3e04c..5aa319c840 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
@@ -57,6 +57,12 @@ struct _Ecore_Evas_Engine_Wl_Data
57 Ecore_Job *manual_mode_job; 57 Ecore_Job *manual_mode_job;
58 } wm_rot; 58 } wm_rot;
59 59
60 struct
61 {
62 Eina_Bool above : 1;
63 Eina_Bool below : 1;
64 } stack;
65
60 Eina_Bool dragging : 1; 66 Eina_Bool dragging : 1;
61 Eina_Bool sync_done : 1; 67 Eina_Bool sync_done : 1;
62 Eina_Bool defer_show : 1; 68 Eina_Bool defer_show : 1;