aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMykyta Holubakha <hilobakho@gmail.com>2017-01-19 11:50:56 +0200
committerMykyta Holubakha <hilobakho@gmail.com>2017-01-19 12:31:43 +0200
commit7520607b8d9c8b7e348190887ab3b2bf351b54ce (patch)
treeff6fa3121b650eec31968d2238e28ba90d88c079
parent28278864b4eef87782918f6ad76e2f0452d16f1a (diff)
downloadsway-7520607b8d9c8b7e348190887ab3b2bf351b54ce.zip
sway-7520607b8d9c8b7e348190887ab3b2bf351b54ce.tar.gz
sway-7520607b8d9c8b7e348190887ab3b2bf351b54ce.tar.bz2
Properly place windows with xdg-positioner
-rw-r--r--sway/handlers.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sway/handlers.c b/sway/handlers.c
index ad6c1c1..cd68511 100644
--- a/sway/handlers.c
+++ b/sway/handlers.c
@@ -331,6 +331,24 @@ static bool handle_view_created(wlc_handle handle) {
}
}
}
+
+ const struct wlc_geometry *anchor = wlc_view_positioner_get_anchor_rect(handle);
+ if (anchor) {
+ struct wlc_geometry geo = *wlc_view_get_geometry(handle);
+ struct wlc_size sr = *wlc_view_positioner_get_size(handle);
+ if (sr.w <= 0 || sr.h <= 0)
+ sr = geo.size;
+ geo.origin = anchor->origin;
+ geo.size = sr;
+ wlc_handle parent = wlc_view_get_parent(handle);
+ if (parent) {
+ const struct wlc_geometry *pg = wlc_view_get_geometry(parent);
+ geo.origin.x += pg->origin.x;
+ geo.origin.y += pg->origin.y;
+ }
+ wlc_view_set_geometry(handle, 0, &geo);
+ }
+
sway_log(L_DEBUG, "handle:%" PRIuPTR " type:%x state:%x parent:%" PRIuPTR " "
"mask:%d (x:%d y:%d w:%d h:%d) title:%s "
"class:%s appid:%s",