Bugfix: Position floating windows exactly where their geometry specified (Thanks B-Con)
Fixes #619
This commit is contained in:
parent
9798e5cae6
commit
cb4c9b9d27
|
@ -176,6 +176,14 @@ void floating_enable(Con *con, bool automatic) {
|
|||
if (automatic)
|
||||
con->border_style = config.default_floating_border;
|
||||
|
||||
/* 5: Subtract the deco_height in order to make the floating window appear
|
||||
* at precisely the position it specified in its original geometry (which
|
||||
* is what applications might remember). */
|
||||
deco_height = (con->border_style == BS_NORMAL ? config.font.height + 5 : 0);
|
||||
nc->rect.y -= deco_height;
|
||||
|
||||
DLOG("Corrected y = %d (deco_height = %d)\n", nc->rect.y, deco_height);
|
||||
|
||||
TAILQ_INSERT_TAIL(&(nc->nodes_head), con, nodes);
|
||||
TAILQ_INSERT_TAIL(&(nc->focus_head), con, focused);
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ $window->unmap;
|
|||
|
||||
$window = $x->root->create_child(
|
||||
class => WINDOW_CLASS_INPUT_OUTPUT,
|
||||
rect => [ 1, 1, 80, 90],
|
||||
rect => [ 20, 20, 80, 90],
|
||||
background_color => '#C0C0C0',
|
||||
window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_UTILITY'),
|
||||
event_mask => [ 'structure_notify' ],
|
||||
|
@ -55,10 +55,8 @@ wait_for_map $x;
|
|||
cmp_ok($absolute->{width}, '==', 80, "i3 let the width at 80");
|
||||
cmp_ok($absolute->{height}, '==', 90, "i3 let the height at 90");
|
||||
|
||||
# We need to compare the position with decorations due to the way
|
||||
# we do decoration rendering (on the parent frame) in the tree branch
|
||||
cmp_ok($top->{x}, '==', 1, 'i3 mapped it to x=1');
|
||||
cmp_ok($top->{y}, '==', 19, 'i3 mapped it to y=18');
|
||||
cmp_ok($top->{x}, '==', 20, 'i3 mapped it to x=20');
|
||||
cmp_ok($top->{y}, '==', 20, 'i3 mapped it to y=20');
|
||||
|
||||
$window->unmap;
|
||||
|
||||
|
|
Loading…
Reference in New Issue