return ec;
}
+static Eina_Bool
+_e_hwc_windows_client_fully_mask_get(E_Client *ec, int x, int y, int w, int h,
+ int ee_w, int ee_h)
+{
+ if (ec->argb) return EINA_FALSE;
+ if (!E_CONTAINS(x, y, w, h, 0, 0, ee_w, ee_h)) return EINA_FALSE;
+ if (e_comp_object_is_animating(ec->frame)) return EINA_FALSE;
+
+ return EINA_TRUE;
+}
+
static Eina_List *
_e_hwc_windows_visible_windows_list_get(E_Hwc *hwc)
{
int obscured_by_target = EINA_FALSE;
const char *type = NULL;
Eina_Bool effect_client;
+ Evas_Render_Op render_op;
ecore_evas_geometry_get(e_comp->ee, NULL, NULL, &ee_w, &ee_h);
continue;
}
+ e_client_geometry_get(ec, &x, &y, &w, &h);
+
if ((!effect_client) && (!e_comp_object_color_visible_get(ec->frame)))
{
e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_NONE, EINA_TRUE);
+
+ render_op = evas_object_render_op_get(ec->frame);
+ if ((!ui_skip) &&
+ (render_op == EVAS_RENDER_COPY) &&
+ (_e_hwc_windows_client_fully_mask_get(ec, x, y, w, h, ee_w, ee_h)))
+ ui_skip = EINA_TRUE;
+
continue;
}
// check geometry if located out of screen such as quick panel
- e_client_geometry_get(ec, &x, &y, &w, &h);
if (!E_INTERSECTS(0, 0, ee_w, ee_h, x, y, w, h))
{
e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_NONE, EINA_TRUE);
windows_list = eina_list_append(windows_list, hwc_window);
- if ((!ec->argb) &&
- (E_CONTAINS(x, y, w, h, 0, 0, ee_w, ee_h)) &&
- (!e_comp_object_is_animating(ec->frame)))
+ if ((!ui_skip) &&
+ (_e_hwc_windows_client_fully_mask_get(ec, x, y, w, h, ee_w, ee_h)))
ui_skip = EINA_TRUE;
}