fix override window shape input cutting

this is currently GUARANTEED to break with override shaped windows, which means that if such a window is ever opened, it will NEVER receive input unless it is placed over another client window. this is due to a limitation in evas where it is impossible to (de)select input regions which forced me to choose between either having shaped override windows (such as desktop recorders) block all mouse input to the screen OR have normal override windows (gtk menus and popups...) not able to generate their own input shape at all
devs/sachiel/e19
Mike Blumenkrantz 11 years ago
parent 87c1798281
commit 181f11a03a
  1. 9
      src/bin/e_comp.c

@ -2233,8 +2233,6 @@ _e_comp_win_add(E_Comp *c, Ecore_X_Window win, E_Border *bd)
evas_object_image_colorspace_set(cw->obj, EVAS_COLORSPACE_ARGB8888);
if (cw->argb) evas_object_image_alpha_set(cw->obj, 1);
else evas_object_image_alpha_set(cw->obj, 0);
if (cw->override)
evas_object_pass_events_set(cw->effect_obj, EINA_TRUE);
_e_comp_win_shadow_setup(cw);
edje_object_part_swallow(cw->effect_obj, "e.swallow.content", cw->shobj);
@ -3757,7 +3755,12 @@ _e_comp_shapes_update_comp_win_shape_comp_helper(E_Comp_Win *cw, Eina_Tiler *tb)
SHAPE_INF("IGNORING DELETED: %u", cw->win);
return;
}
if (cw->invalid || cw->real_hid || (!cw->visible) || (!cw->shape->visible) || evas_object_pass_events_get(cw->effect_obj) || evas_object_pass_events_get(cw->shobj))
if (cw->override && cw->shaped)
{
ERR("SHAPED OVERRIDE WINDOW DETECTED: INPUT SHAPE CUTTING BROKEN!");
return;
}
if (cw->invalid || cw->real_hid || (!cw->visible) || (!cw->shape->visible) || evas_object_pass_events_get(cw->effect_obj))
{
SHAPE_DBG("SKIPPING SHAPE");
return;

Loading…
Cancel
Save