forked from enlightenment/enlightenment
never apply window placement policy on ConfigureRequest
geometry_auto_move is an option which should only be applied to "new" clients. we were erroneously applying it during client move/resize requests, which likely was causing unintended behavior. if this becomes an issue, the correct solution is to create (groan) another option to enforce window placement policy either [at all times] or [for client geometry requests]
This commit is contained in:
parent
8404e3c180
commit
6b41a6dba9
|
@ -5163,26 +5163,6 @@ _e_border_cb_window_reparent(void *data __UNUSED__,
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_e_border_xy_place_helper(E_Border *bd, int *x, int *y)
|
|
||||||
{
|
|
||||||
Eina_List *skiplist;
|
|
||||||
|
|
||||||
if ((e_config->window_placement_policy != E_WINDOW_PLACEMENT_SMART) &&
|
|
||||||
(e_config->window_placement_policy != E_WINDOW_PLACEMENT_ANTIGADGET))
|
|
||||||
return;
|
|
||||||
skiplist = eina_list_append(NULL, bd);
|
|
||||||
if (bd->desk)
|
|
||||||
e_place_desk_region_smart(bd->desk, skiplist,
|
|
||||||
bd->x, bd->y, bd->w, bd->h,
|
|
||||||
x, y);
|
|
||||||
else
|
|
||||||
e_place_zone_region_smart(bd->zone, skiplist,
|
|
||||||
bd->x, bd->y, bd->w, bd->h,
|
|
||||||
x, y);
|
|
||||||
eina_list_free(skiplist);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_border_cb_window_configure_request(void *data __UNUSED__,
|
_e_border_cb_window_configure_request(void *data __UNUSED__,
|
||||||
int ev_type __UNUSED__,
|
int ev_type __UNUSED__,
|
||||||
|
@ -5224,7 +5204,6 @@ _e_border_cb_window_configure_request(void *data __UNUSED__,
|
||||||
y = e->y;
|
y = e->y;
|
||||||
if (y - bd->client_inset.t >= zy) y -= bd->client_inset.t;
|
if (y - bd->client_inset.t >= zy) y -= bd->client_inset.t;
|
||||||
}
|
}
|
||||||
_e_border_xy_place_helper(bd, &x, &y);
|
|
||||||
if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_W) ||
|
if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_W) ||
|
||||||
(e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H))
|
(e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H))
|
||||||
{
|
{
|
||||||
|
@ -5370,15 +5349,12 @@ _e_border_cb_window_configure_request(void *data __UNUSED__,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e_border_resize(bd, w, h);
|
e_border_resize(bd, w, h);
|
||||||
|
|
||||||
if (e_config->geometry_auto_move == 1)
|
|
||||||
{
|
|
||||||
int new_x = bd->x, new_y = bd->y;
|
|
||||||
_e_border_xy_place_helper(bd, &new_x, &new_y);
|
|
||||||
e_border_move(bd, new_x, new_y);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* note: we USED to forcibly apply a window placement policy here
|
||||||
|
* this is WRONG. the geometry_auto_move option is ONLY for
|
||||||
|
* new clients, in which case we will autocorrect the positioning anyway.
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!bd->lock_client_stacking)
|
if (!bd->lock_client_stacking)
|
||||||
|
|
Loading…
Reference in New Issue