From: Michael Stapelberg Date: Mon, 18 Apr 2011 17:36:10 +0000 (+0200) Subject: Bugfix: Center floating windows with invalid coordinates on current ws X-Git-Tag: tree-pr3~74 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=3d5af35fa45b9d160b37f7a56c00222d56febf18;p=i3%2Fi3 Bugfix: Center floating windows with invalid coordinates on current ws --- diff --git a/src/floating.c b/src/floating.c index 78804c8e..1d08ec9e 100644 --- a/src/floating.c +++ b/src/floating.c @@ -157,7 +157,19 @@ void floating_enable(Con *con, bool automatic) { if (set_focus) con_focus(con); - floating_maybe_reassign_ws(nc); + /* Check if we need to re-assign it to a different workspace because of its + * coordinates and exit if that was done successfully. */ + if (floating_maybe_reassign_ws(nc)) + return; + + /* Sanitize coordinates: Check if they are on any output */ + if (get_output_containing(nc->rect.x, nc->rect.y) != NULL) + return; + + ELOG("No output found at destination coordinates, centering floating window on current ws\n"); + Con *ws = nc->parent; + nc->rect.x = ws->rect.x + (ws->rect.width / 2) - (nc->rect.width / 2); + nc->rect.y = ws->rect.y + (ws->rect.height / 2) - (nc->rect.height / 2); } void floating_disable(Con *con, bool automatic) {