*<action name="Resize">*
Begin interactive resize of window under cursor
+*<action name="ResizeRelative" left="" right="" top="" bottom="" >*
+ Resize window relative to its current size. Values of left, right,
+ top or bottom tell how much to resize on that edge of window,
+ positive values grow window, negative shrink window.
+
*<action name="MoveTo" x="" y="" />*
Move to position (x, y)
* For move only, use view_move()
*/
void view_move_resize(struct view *view, struct wlr_box geo);
+void view_resize_relative(struct view *view,
+ int left, int right, int top, int bottom);
void view_move(struct view *view, int x, int y);
void view_moved(struct view *view);
void view_minimize(struct view *view, bool minimized);
ACTION_TYPE_RAISE,
ACTION_TYPE_LOWER,
ACTION_TYPE_RESIZE,
+ ACTION_TYPE_RESIZE_RELATIVE,
ACTION_TYPE_MOVETO,
ACTION_TYPE_MOVE_RELATIVE,
ACTION_TYPE_GO_TO_DESKTOP,
"Raise",
"Lower",
"Resize",
+ "ResizeRelative",
"MoveTo",
"MoveRelative",
"GoToDesktop",
goto cleanup;
}
break;
+ case ACTION_TYPE_RESIZE_RELATIVE:
+ if (!strcmp(argument, "left") || !strcmp(argument, "right") ||
+ !strcmp(argument, "top") || !strcmp(argument, "bottom")) {
+ action_arg_add_int(action, argument, atoi(content));
+ goto cleanup;
+ }
+ break;
case ACTION_TYPE_MOVETO:
case ACTION_TYPE_MOVE_RELATIVE:
if (!strcmp(argument, "x") || !strcmp(argument, "y")) {
resize_edges);
}
break;
+ case ACTION_TYPE_RESIZE_RELATIVE:
+ if (view) {
+ int left = get_arg_value_int(action, "left", 0);
+ int right = get_arg_value_int(action, "right", 0);
+ int top = get_arg_value_int(action, "top", 0);
+ int bottom = get_arg_value_int(action, "bottom", 0);
+ view_resize_relative(view, left, right, top, bottom);
+ }
+ break;
case ACTION_TYPE_MOVETO:
if (view) {
int x = get_arg_value_int(action, "x", 0);
}
}
+void
+view_resize_relative(struct view *view, int left, int right, int top, int bottom)
+{
+ struct wlr_box newgeo = view->pending;
+ newgeo.x -= left;
+ newgeo.width += left + right;
+ newgeo.y -= top;
+ newgeo.height += top + bottom;
+ view_move_resize(view, newgeo);
+}
+
void
view_adjust_size(struct view *view, int *w, int *h)
{