e_policy_visibility: fix bug for changing iconic state incorrectly 48/191448/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Wed, 17 Oct 2018 07:53:24 +0000 (16:53 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Wed, 17 Oct 2018 07:53:27 +0000 (16:53 +0900)
There was a bug that the fully obscured window was uniconified and iconified as below case.

[top] alpha-opaque window -> A win -> B win -> C win [bottom]

In above stack, when "B win" is lowered/hidden, then "C win" is changed to uniconic and iconic
state for a moment.
We fixed code not to change iconic state.

Change-Id: Ibd742f972c9b189e28185837eee85db0a941fdad

src/bin/e_policy_visibility.c

index 594d86fe18edde190aba303fb9e5a9253210e12b..b977c35951671f3e1b7f7479f61ddab06072803c 100644 (file)
@@ -1552,6 +1552,9 @@ _e_vis_ec_above_visible_type(E_Client *ec, Eina_Bool check_child)
                continue;
           }
 
+        if (above->iconic && above->exp_iconify.by_client)
+          continue;
+
         if (above->visibility.obscured == E_VISIBILITY_UNOBSCURED)
           {
              if (!above->argb)
@@ -1561,9 +1564,16 @@ _e_vis_ec_above_visible_type(E_Client *ec, Eina_Bool check_child)
                   if (above->visibility.opaque > 0)
                     above_vis_type = E_POL_VIS_TYPE_ALPHA_OPAQUE;
                }
+          }
+        else
+          {
+             if (!above->visible)
+               continue;
 
-             break;
+             above_vis_type = E_POL_VIS_TYPE_NON_ALPHA;
           }
+
+        break;
      }
 
    return above_vis_type;