aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
authorLibravatar Dominique Martinet <asmadeus@codewreck.org>2018-06-30 14:00:24 +0900
committerLibravatar Dominique Martinet <asmadeus@codewreck.org>2018-06-30 22:31:14 +0900
commit9ea4cc13a0cf2d231c4e4c71aa674cd76831e6f9 (patch)
treea4f6056b5cfa80e065f366d20e1d97957d3ee393 /sway/tree/view.c
parentMerge pull request #2072 from RyanDwyer/atomic (diff)
downloadsway-9ea4cc13a0cf2d231c4e4c71aa674cd76831e6f9.tar.gz
sway-9ea4cc13a0cf2d231c4e4c71aa674cd76831e6f9.tar.zst
sway-9ea4cc13a0cf2d231c4e4c71aa674cd76831e6f9.zip
sway views: add helpers to get view and layer from wlr_surface
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 6263bfb0..06e9edc5 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -694,6 +694,36 @@ void view_child_destroy(struct sway_view_child *child) {
694 } 694 }
695} 695}
696 696
697struct sway_view *view_from_wlr_surface(struct wlr_surface *wlr_surface) {
698 if (wlr_surface_is_xdg_surface(wlr_surface)) {
699 struct wlr_xdg_surface *xdg_surface =
700 wlr_xdg_surface_from_wlr_surface(wlr_surface);
701 return view_from_wlr_xdg_surface(xdg_surface);
702 }
703 if (wlr_surface_is_xdg_surface_v6(wlr_surface)) {
704 struct wlr_xdg_surface_v6 *xdg_surface_v6 =
705 wlr_xdg_surface_v6_from_wlr_surface(wlr_surface);
706 return view_from_wlr_xdg_surface_v6(xdg_surface_v6);
707 }
708 if (wlr_surface_is_xwayland_surface(wlr_surface)) {
709 struct wlr_xwayland_surface *xsurface =
710 wlr_xwayland_surface_from_wlr_surface(wlr_surface);
711 return view_from_wlr_xwayland_surface(xsurface);
712 }
713 if (wlr_surface_is_subsurface(wlr_surface)) {
714 struct wlr_subsurface *subsurface =
715 wlr_subsurface_from_wlr_surface(wlr_surface);
716 return view_from_wlr_surface(subsurface->parent);
717 }
718 if (wlr_surface_is_layer_surface(wlr_surface)) {
719 return NULL;
720 }
721
722 wlr_log(L_DEBUG, "Surface of unknown type (role %s): %p",
723 wlr_surface->role, wlr_surface);
724 return NULL;
725}
726
697static size_t append_prop(char *buffer, const char *value) { 727static size_t append_prop(char *buffer, const char *value) {
698 if (!value) { 728 if (!value) {
699 return 0; 729 return 0;