bugfix: floating enable overcorrection
Patch status: needinfo
Patch by Tony Crisci
Long description:
When accounting for the decorations for enabling a floating container, don't set the y-coordinate less than zero, because it is unsigned. fixes #1270
To apply this patch, use:
curl http://cr.i3wm.org/patch/585/raw.patch | git am
b/src/floating.c
17 |
@@ -279,10 +279,13 @@ void floating_enable(Con *con, bool automatic) { |
18 |
DLOG("Floating rect: (%d, %d) with %d x %d\n", nc->rect.x, nc->rect.y, nc->rect.width, nc->rect.height); |
19 |
|
20 |
/* 5: Subtract the deco_height in order to make the floating window appear |
21 |
- * at precisely the position it specified in its original geometry (which |
22 |
- * is what applications might remember). */ |
23 |
+ * closer to the position it specified in its original geometry (which is |
24 |
+ * what applications might remember). */ |
25 |
deco_height = (con->border_style == BS_NORMAL ? render_deco_height() : 0); |
26 |
- nc->rect.y -= deco_height; |
27 |
+ |
28 |
+ /* don't overcorrect, because the coordinates are unsigned */ |
29 |
+ if ((int)nc->rect.y - deco_height >= 0) |
30 |
+ nc->rect.y -= deco_height; |
31 |
|
32 |
DLOG("Corrected y = %d (deco_height = %d)\n", nc->rect.y, deco_height); |
33 |
|