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_relative(struct view *view, int x, int y);
void view_move(struct view *view, int x, int y);
void view_moved(struct view *view);
void view_minimize(struct view *view, bool minimized);
}
break;
case ACTION_TYPE_MOVE_RELATIVE:
- if (view && !view->fullscreen) {
+ if (view) {
int x = get_arg_value_int(action, "x", 0);
int y = get_arg_value_int(action, "y", 0);
- view_maximize(view, false, false);
- view_move(view, view->pending.x + x, view->pending.y + y);
+ view_move_relative(view, x, y);
}
break;
case ACTION_TYPE_SEND_TO_DESKTOP:
void
view_resize_relative(struct view *view, int left, int right, int top, int bottom)
{
- if (view->fullscreen || view->maximized)
+ if (view->fullscreen || view->maximized) {
return;
+ }
struct wlr_box newgeo = view->pending;
newgeo.x -= left;
newgeo.width += left + right;
view_set_untiled(view);
}
+void
+view_move_relative(struct view *view, int x, int y)
+{
+ if (view->fullscreen) {
+ return;
+ }
+ view_maximize(view, false, /*store_natural_geometry*/ false);
+ if (view_is_tiled(view)) {
+ view_set_untiled(view);
+ view_restore_to(view, view->natural_geometry);
+ }
+ view_move(view, view->pending.x + x, view->pending.y + y);
+}
+
void
view_adjust_size(struct view *view, int *w, int *h)
{