VIEW_EDGE_RIGHT,
VIEW_EDGE_UP,
VIEW_EDGE_DOWN,
+ VIEW_EDGE_CENTER,
};
static enum view_edge
case VIEW_EDGE_RIGHT: return VIEW_EDGE_LEFT;
case VIEW_EDGE_UP: return VIEW_EDGE_DOWN;
case VIEW_EDGE_DOWN: return VIEW_EDGE_UP;
+ case VIEW_EDGE_CENTER:
case VIEW_EDGE_INVALID:
default:
return VIEW_EDGE_INVALID;
return VIEW_EDGE_RIGHT;
} else if (!strcasecmp(direction, "down")) {
return VIEW_EDGE_DOWN;
+ } else if (!strcasecmp(direction, "center")) {
+ return VIEW_EDGE_CENTER;
} else {
return VIEW_EDGE_INVALID;
}
base_height = (usable.height - 3 * rc.gap) / 2;
break;
default:
+ case VIEW_EDGE_CENTER:
+ base_width = usable.width - 2 * rc.gap;
+ base_height = usable.height - 2 * rc.gap;
break;
}
struct wlr_box dst = {
output_from_wlr_output(view->server,
wlr_output_layout_output_at(view->server->output_layout, dst.x, dst.y));
- if (new_output == output || !new_output) {
+ if (new_output == output || !new_output || edge == VIEW_EDGE_CENTER) {
return;
}