raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=38f9b6861f9c9def9e6543dfa10f6a10183374a2

commit 38f9b6861f9c9def9e6543dfa10f6a10183374a2
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Thu Apr 30 00:45:21 2020 +0100

    menus - allow them on fullscreen windows if they are not override
---
 src/bin/e_client.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 36e5a7167..4f373e10b 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -3774,6 +3774,8 @@ e_client_focused_set(E_Client *ec)
 
    while ((ec_unfocus) && (ec_unfocus->zone))
      {
+        Eina_Bool is_popup, is_child;
+
         ec_unfocus->want_focus = ec_unfocus->focused = 0;
         if (!e_object_is_del(E_OBJECT(ec_unfocus)))
           e_focus_event_focus_out(ec_unfocus);
@@ -3783,8 +3785,26 @@ e_client_focused_set(E_Client *ec)
 
         E_FREE_FUNC(ec_unfocus->raise_timer, ecore_timer_del);
 
+        is_popup = EINA_FALSE;
+        is_child = EINA_FALSE;
+        if ((ec) &&
+            ((ec->netwm.type == E_WINDOW_TYPE_MENU) ||
+             (ec->netwm.type == E_WINDOW_TYPE_TOOLBAR) ||
+             (ec->netwm.type == E_WINDOW_TYPE_DOCK) ||
+             (ec->netwm.type == E_WINDOW_TYPE_SPLASH) ||
+             (ec->netwm.type == E_WINDOW_TYPE_TOOLTIP) ||
+             (ec->netwm.type == E_WINDOW_TYPE_DROPDOWN_MENU) ||
+             (ec->netwm.type == E_WINDOW_TYPE_POPUP_MENU) ||
+             (ec->netwm.type == E_WINDOW_TYPE_COMBO) ||
+             (ec->netwm.type == E_WINDOW_TYPE_DND) ||
+             (ec->netwm.type == E_WINDOW_TYPE_NOTIFICATION)))
+          is_popup = EINA_TRUE;
+        if ((ec) && _e_client_is_in_parents(ec, ec_unfocus))
+          is_child = EINA_TRUE;
+
         /* if there unfocus client is fullscreen and visible */
-        if ((!e_config->allow_above_fullscreen) &&
+        if ((!is_popup) && (!is_child) &&
+            (!e_config->allow_above_fullscreen) &&
             (ec_unfocus->fullscreen) && (!ec_unfocus->iconic) && 
(!ec_unfocus->hidden) &&
             (ec_unfocus->zone == e_zone_current_get()) &&
             ((ec_unfocus->desk == e_desk_current_get(ec_unfocus->zone)) || 
(ec_unfocus->sticky)))

-- 


Reply via email to