Allow "move position center" to operate on matched windows
Moving windows to the center previously did not consider command criteria. We now operate on matched windows as for other commands. fixes #2090
This commit is contained in:
parent
c490a60d94
commit
caeb193a6c
|
@ -1760,28 +1760,42 @@ void cmd_move_window_to_position(I3_CMD, const char *method, long x, long y) {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void cmd_move_window_to_center(I3_CMD, const char *method) {
|
void cmd_move_window_to_center(I3_CMD, const char *method) {
|
||||||
if (!con_is_floating(focused)) {
|
bool has_error = false;
|
||||||
ELOG("Cannot change position. The window/container is not floating\n");
|
HANDLE_EMPTY_MATCH;
|
||||||
yerror("Cannot change position. The window/container is not floating.");
|
|
||||||
return;
|
owindow *current;
|
||||||
|
TAILQ_FOREACH(current, &owindows, owindows) {
|
||||||
|
Con *floating_con = con_inside_floating(current->con);
|
||||||
|
if (floating_con == NULL) {
|
||||||
|
ELOG("con %p / %s is not floating, cannot move it to the center.\n",
|
||||||
|
current->con, current->con->name);
|
||||||
|
|
||||||
|
if (!has_error) {
|
||||||
|
yerror("Cannot change position of a window/container because it is not floating.");
|
||||||
|
has_error = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(method, "absolute") == 0) {
|
if (strcmp(method, "absolute") == 0) {
|
||||||
DLOG("moving to absolute center\n");
|
DLOG("moving to absolute center\n");
|
||||||
floating_center(focused->parent, croot->rect);
|
floating_center(floating_con, croot->rect);
|
||||||
|
|
||||||
floating_maybe_reassign_ws(focused->parent);
|
floating_maybe_reassign_ws(floating_con);
|
||||||
cmd_output->needs_tree_render = true;
|
cmd_output->needs_tree_render = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(method, "position") == 0) {
|
if (strcmp(method, "position") == 0) {
|
||||||
DLOG("moving to center\n");
|
DLOG("moving to center\n");
|
||||||
floating_center(focused->parent, con_get_workspace(focused)->rect);
|
floating_center(floating_con, con_get_workspace(floating_con)->rect);
|
||||||
|
|
||||||
cmd_output->needs_tree_render = true;
|
cmd_output->needs_tree_render = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// XXX: default reply for now, make this a better reply
|
// XXX: default reply for now, make this a better reply
|
||||||
|
if (!has_error)
|
||||||
ysuccess(true);
|
ysuccess(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue