aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/container.c
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-10-10 16:58:32 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-10-10 16:58:32 +1000
commit416bb7a214d6f140a4eb7a1b8b0581fc78d71cda (patch)
tree621dc8415c317cd83d596161e3145f99f5cc1370 /sway/tree/container.c
parentMerge pull request #2810 from RyanDwyer/fix-docs-backandforth (diff)
downloadsway-416bb7a214d6f140a4eb7a1b8b0581fc78d71cda.tar.gz
sway-416bb7a214d6f140a4eb7a1b8b0581fc78d71cda.tar.zst
sway-416bb7a214d6f140a4eb7a1b8b0581fc78d71cda.zip
Fix floating click events
* Set focus to a floating container when clicking its title bar. * Raise floating when user clicks title bar or decorations (in the seat_begin functions). * In container_at, it only returned a floating container if the user had clicked the surface. This makes it use floating_container_at instead.
Diffstat (limited to 'sway/tree/container.c')
-rw-r--r--sway/tree/container.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 1664514a..f36fe4b0 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -358,7 +358,6 @@ struct sway_container *container_at(struct sway_workspace *workspace,
358 struct wlr_surface **surface, double *sx, double *sy) { 358 struct wlr_surface **surface, double *sx, double *sy) {
359 struct sway_container *c; 359 struct sway_container *c;
360 360
361 // Focused view's popups
362 struct sway_seat *seat = input_manager_current_seat(input_manager); 361 struct sway_seat *seat = input_manager_current_seat(input_manager);
363 struct sway_container *focus = seat_get_focused_container(seat); 362 struct sway_container *focus = seat_get_focused_container(seat);
364 bool is_floating = focus && container_is_floating_or_child(focus); 363 bool is_floating = focus && container_is_floating_or_child(focus);
@@ -370,14 +369,11 @@ struct sway_container *container_at(struct sway_workspace *workspace,
370 } 369 }
371 *surface = NULL; 370 *surface = NULL;
372 } 371 }
373 // Cast a ray to handle floating windows 372 // Floating
374 for (int i = workspace->floating->length - 1; i >= 0; --i) { 373 if ((c = floating_container_at(lx, ly, surface ,sx ,sy))) {
375 struct sway_container *cn = workspace->floating->items[i]; 374 return c;
376 if (cn->view && (c = surface_at_view(cn, lx, ly, surface, sx, sy))) {
377 return c;
378 }
379 } 375 }
380 // If focused is tiling, focused view's non-popups 376 // Tiling (focused)
381 if (focus && focus->view && !is_floating) { 377 if (focus && focus->view && !is_floating) {
382 if ((c = surface_at_view(focus, lx, ly, surface, sx, sy))) { 378 if ((c = surface_at_view(focus, lx, ly, surface, sx, sy))) {
383 return c; 379 return c;