diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 81e6089e5..f3c35176f 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1779,34 +1779,6 @@ e_comp_override_add(void) if ((e_comp->nocomp_override > 0) && (e_comp->nocomp)) _e_comp_nocomp_end(); } -#if 0 -FIXME -E_API void -e_comp_block_window_add(void) -{ - e_comp->block_count++; - if (e_comp->block_win) return; - e_comp->block_win = ecore_x_window_new(e_comp->root, 0, 0, e_comp->w, e_comp->h); - INF("BLOCK WIN: %x", e_comp->block_win); - ecore_x_window_background_color_set(e_comp->block_win, 0, 0, 0); - e_comp_ignore_win_add(e_comp->block_win); - ecore_x_window_configure(e_comp->block_win, - ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING | ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, - 0, 0, 0, 0, 0, ((E_Comp_Win*)e_comp->wins)->win, ECORE_X_WINDOW_STACK_ABOVE); - ecore_x_window_show(e_comp->block_win); -} - -E_API void -e_comp_block_window_del(void) -{ - if (!e_comp->block_count) return; - e_comp->block_count--; - if (e_comp->block_count) return; - if (e_comp->block_win) ecore_x_window_free(e_comp->block_win); - e_comp->block_win = 0; -} -#endif - E_API E_Comp * e_comp_find_by_window(Ecore_Window win) { diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 70a955f1f..f0747c89f 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -2526,7 +2526,9 @@ _e_comp_smart_move(Evas_Object *obj, int x, int y) _e_comp_object_input_rect_update(cw); /* this gets called once during setup to init coords offscreen and guarantee first move */ if (e_comp && cw->visible) - e_comp_shape_queue(); + { + e_comp_shape_queue(); + } } static void @@ -2602,7 +2604,9 @@ _e_comp_smart_resize(Evas_Object *obj, int w, int h) if (!cw->visible) return; e_comp_render_queue(); if (!cw->animating) - e_comp_shape_queue(); + { + e_comp_shape_queue(); + } } static void @@ -2759,7 +2763,9 @@ _e_comp_object_util_show(void *data EINA_UNUSED, Evas_Object *obj) return; } else - e_comp_shape_queue(); + { + e_comp_shape_queue(); + } evas_object_show(obj); if (ref && (!stopping)) @@ -2832,7 +2838,9 @@ _e_comp_object_util_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj e_zoomap_child_resize(data, w, h); } if (evas_object_visible_get(obj)) - e_comp_shape_queue(); + { + e_comp_shape_queue(); + } } E_API void diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 4fbabb898..632c204a1 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -1693,39 +1693,48 @@ _e_comp_x_configure(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_ //INF("configure %p: %d,%d %dx%d", ec, ev->x, ev->y, ev->w, ev->h); if (ev->abovewin == 0) { - if (e_client_below_get(ec)) - evas_object_lower(ec->frame); + // forcibly lower the window as it's not above anything + if (e_client_below_get(ec)) evas_object_lower(ec->frame); } else { - E_Client *ec2 = _e_comp_x_client_find_by_window(ev->abovewin); + E_Client *ec_above = _e_comp_x_client_find_by_window(ev->abovewin); - if (ec2) + // if we find the client the window is above + if (ec_above) { - /* client(ec) wants to be above a layer client(ec2) */ - if (e_client_is_stacking(ec2)) //is it a stacking placeholder window? + // if the window to stack above is a layer marker window/client + // then we need to find the next one up and stack below that + // because the ec_above will be one layer below as layer marker + // is at the top of a layer + if (e_client_is_stacking(ec_above)) { - E_Client *ec3; + E_Client *ec_next_up = e_client_above_get(ec_above); - ec3 = e_client_above_get(ec2); - /* stack under next client(ec3) */ - if (ec3) + // stacking under the next win up == above ec_above + if (ec_next_up) { - evas_object_layer_set(ec->frame, ec3->layer); - if (!e_client_is_stacking(ec3)) - evas_object_stack_below(ec->frame, ec3->frame); + evas_object_layer_set(ec->frame, ec_next_up->layer); + evas_object_stack_below(ec->frame, ec_next_up->frame); + } + else // no marker above, so live on the same layer - on top + { + evas_object_layer_set(ec->frame, ec_above->layer); } - else //force override to obey our stacking - evas_object_layer_set(ec->frame, ec2->layer); } + // if it's above is a regular win else { - evas_object_layer_set(ec->frame, ec2->layer); - evas_object_stack_above(ec->frame, ec2->frame); + // if the layer obj is not right below already... + evas_object_layer_set(ec->frame, ec_above->layer); + evas_object_stack_above(ec->frame, ec_above->frame); } } + // we didnt find the client it's above - so stuff this on top else - evas_object_layer_set(ec->frame, E_LAYER_CLIENT_PRIO); + { + evas_object_layer_set(ec->frame, E_LAYER_CLIENT_PRIO); + } } move = (ec->client.x != ev->x) || (ec->client.y != ev->y); resize = (ec->client.w != ev->w) || (ec->client.h != ev->h);