void view_set_activated(struct view *view, bool activated);
void view_close(struct view *view);
struct border view_border(struct view *view);
+
+/**
+ * view_move_resize - resize and move view
+ * @view: view to be resized and moved
+ * @geo: the new geometry
+ * NOTE: Only use this when the view actually changes width and/or height
+ * otherwise the serials might cause a delay in moving xdg-shell clients.
+ * For move only, use view_move()
+ */
void view_move_resize(struct view *view, struct wlr_box geo);
void view_move(struct view *view, double x, double y);
void view_minimize(struct view *view, bool minimized);
}
void
-view_move_resize(struct view *view, struct wlr_box geo)
+view_move(struct view *view, double x, double y)
{
- if (view->impl->configure) {
- view->impl->configure(view, geo);
+ if (view->impl->move) {
+ view->impl->move(view, x, y);
}
- ssd_update_title(view);
view_discover_output(view);
}
void
-view_move(struct view *view, double x, double y)
+view_move_resize(struct view *view, struct wlr_box geo)
{
- if (view->impl->move) {
- view->impl->move(view, x, y);
+ if (view->w == geo.width && view->h == geo.height) {
+ wlr_log(WLR_ERROR, "use view_move() if not resizing");
+ }
+ if (view->impl->configure) {
+ view->impl->configure(view, geo);
}
+ ssd_update_title(view);
view_discover_output(view);
}
view_edge_invert(edge));
}
- view_move_resize(view, dst);
+ if (view->w == dst.width && view->h == dst.height) {
+ /* move horizontally/vertically without changing size */
+ view_move(view, dst.x, dst.y);
+ } else {
+ view_move_resize(view, dst);
+ }
}
const char *