diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2018-06-30 14:00:24 +0900 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2018-06-30 22:31:14 +0900 |
commit | 9ea4cc13a0cf2d231c4e4c71aa674cd76831e6f9 (patch) | |
tree | a4f6056b5cfa80e065f366d20e1d97957d3ee393 /sway/tree/view.c | |
parent | Merge pull request #2072 from RyanDwyer/atomic (diff) | |
download | sway-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.c | 30 |
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 | ||
697 | struct 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 | |||
697 | static size_t append_prop(char *buffer, const char *value) { | 727 | static size_t append_prop(char *buffer, const char *value) { |
698 | if (!value) { | 728 | if (!value) { |
699 | return 0; | 729 | return 0; |