aboutsummaryrefslogtreecommitdiff
path: root/sway/tree
diff options
context:
space:
mode:
authorTony Crisci <tony@dubstepdish.com>2018-04-04 22:36:09 -0400
committerTony Crisci <tony@dubstepdish.com>2018-04-04 22:36:09 -0400
commit65f254f3fbc83d006d4ec29170ec8a8695345d6c (patch)
tree3044fb62120ca23499d31275076af50db09a9850 /sway/tree
parentdeda37469ad4e21ad86b7c83c7c8a966301b9d5e (diff)
parent21aedf15052df4e7f8ee72922fa0e214d690facc (diff)
downloadsway-65f254f3fbc83d006d4ec29170ec8a8695345d6c.tar.xz
Merge branch 'wlroots' into fix-focus-inactive
Diffstat (limited to 'sway/tree')
-rw-r--r--sway/tree/container.c70
1 files changed, 27 insertions, 43 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 92c00f83..8fc9e3e8 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -78,6 +78,8 @@ struct sway_container *container_create(enum sway_container_type type) {
c->layout = L_NONE;
c->workspace_layout = L_NONE;
c->type = type;
+ c->alpha = 1.0f;
+
if (type != C_VIEW) {
c->children = create_list();
}
@@ -416,51 +418,33 @@ struct sway_container *container_at(struct sway_container *parent,
double view_sx = ox - swayc->x;
double view_sy = oy - swayc->y;
+ double _sx, _sy;
+ struct wlr_surface *_surface;
switch (sview->type) {
- case SWAY_WL_SHELL_VIEW:
- break;
- case SWAY_XDG_SHELL_V6_VIEW:
- // the top left corner of the sway container is the
- // coordinate of the top left corner of the window geometry
- view_sx += sview->wlr_xdg_surface_v6->geometry.x;
- view_sy += sview->wlr_xdg_surface_v6->geometry.y;
-
- // check for popups
- double popup_sx, popup_sy;
- struct wlr_xdg_surface_v6 *popup =
- wlr_xdg_surface_v6_popup_at(sview->wlr_xdg_surface_v6,
- view_sx, view_sy, &popup_sx, &popup_sy);
-
- if (popup) {
- *sx = view_sx - popup_sx;
- *sy = view_sy - popup_sy;
- *surface = popup->surface;
- return swayc;
- }
- break;
- case SWAY_XWAYLAND_VIEW:
- break;
- default:
- break;
- }
-
- // check for subsurfaces
- double sub_x, sub_y;
- struct wlr_subsurface *subsurface =
- wlr_surface_subsurface_at(sview->surface,
- view_sx, view_sy, &sub_x, &sub_y);
- if (subsurface) {
- *sx = view_sx - sub_x;
- *sy = view_sy - sub_y;
- *surface = subsurface->surface;
- return swayc;
+ case SWAY_VIEW_XWAYLAND:
+ _surface = wlr_surface_surface_at(sview->surface,
+ view_sx, view_sy, &_sx, &_sy);
+ break;
+ case SWAY_VIEW_WL_SHELL:
+ _surface = wlr_wl_shell_surface_surface_at(
+ sview->wlr_wl_shell_surface,
+ view_sx, view_sy, &_sx, &_sy);
+ break;
+ case SWAY_VIEW_XDG_SHELL_V6:
+ // the top left corner of the sway container is the
+ // coordinate of the top left corner of the window geometry
+ view_sx += sview->wlr_xdg_surface_v6->geometry.x;
+ view_sy += sview->wlr_xdg_surface_v6->geometry.y;
+
+ _surface = wlr_xdg_surface_v6_surface_at(
+ sview->wlr_xdg_surface_v6,
+ view_sx, view_sy, &_sx, &_sy);
+ break;
}
-
- if (wlr_surface_point_accepts_input(
- sview->surface, view_sx, view_sy)) {
- *sx = view_sx;
- *sy = view_sy;
- *surface = swayc->sway_view->surface;
+ if (_surface) {
+ *sx = _sx;
+ *sy = _sy;
+ *surface = _surface;
return swayc;
}
} else {