aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-04-05 22:53:21 -0400
committerLibravatar GitHub <noreply@github.com>2018-04-05 22:53:21 -0400
commitf63d9417cd4d25121fa1fd309acad14a7562a55c (patch)
treec46a070652793db69ec5d6c5258d0e6cf86c1231 /include
parentMerge pull request #1745 from swaywm/swaybar-hotplugging (diff)
parentHandle unmanaged surfaces motion (diff)
downloadsway-f63d9417cd4d25121fa1fd309acad14a7562a55c.tar.gz
sway-f63d9417cd4d25121fa1fd309acad14a7562a55c.tar.zst
sway-f63d9417cd4d25121fa1fd309acad14a7562a55c.zip
Merge pull request #1743 from emersion/subsurface-damage-tracking
Damage tracking for view children
Diffstat (limited to 'include')
-rw-r--r--include/sway/desktop.h7
-rw-r--r--include/sway/output.h6
-rw-r--r--include/sway/tree/container.h8
-rw-r--r--include/sway/tree/view.h50
4 files changed, 68 insertions, 3 deletions
diff --git a/include/sway/desktop.h b/include/sway/desktop.h
new file mode 100644
index 00000000..96bdc94c
--- /dev/null
+++ b/include/sway/desktop.h
@@ -0,0 +1,7 @@
1#include <wlr/types/wlr_surface.h>
2
3void desktop_damage_whole_surface(struct wlr_surface *surface, double lx,
4 double ly);
5
6void desktop_damage_from_surface(struct wlr_surface *surface, double lx,
7 double ly);
diff --git a/include/sway/output.h b/include/sway/output.h
index 98d0f83f..4bffa2b7 100644
--- a/include/sway/output.h
+++ b/include/sway/output.h
@@ -34,9 +34,15 @@ struct sway_output {
34 34
35void output_damage_whole(struct sway_output *output); 35void output_damage_whole(struct sway_output *output);
36 36
37void output_damage_whole_surface(struct sway_output *output,
38 double ox, double oy, struct wlr_surface *surface);
39
37void output_damage_whole_view(struct sway_output *output, 40void output_damage_whole_view(struct sway_output *output,
38 struct sway_view *view); 41 struct sway_view *view);
39 42
43void output_damage_whole_container(struct sway_output *output,
44 struct sway_container *con);
45
40struct sway_container *output_by_name(const char *name); 46struct sway_container *output_by_name(const char *name);
41 47
42#endif 48#endif
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h
index 3a3a9429..7acb607b 100644
--- a/include/sway/tree/container.h
+++ b/include/sway/tree/container.h
@@ -97,8 +97,7 @@ struct sway_container *container_create(enum sway_container_type type);
97 97
98const char *container_type_to_str(enum sway_container_type type); 98const char *container_type_to_str(enum sway_container_type type);
99 99
100struct sway_container *output_create( 100struct sway_container *output_create(struct sway_output *sway_output);
101 struct sway_output *sway_output);
102 101
103/** 102/**
104 * Create a new container container. A container container can be a a child of 103 * Create a new container container. A container container can be a a child of
@@ -116,7 +115,8 @@ struct sway_container *output_create(struct sway_output *sway_output);
116 * Create a new workspace container. Workspaces are children of an output 115 * Create a new workspace container. Workspaces are children of an output
117 * container and are ordered alphabetically by name. 116 * container and are ordered alphabetically by name.
118 */ 117 */
119struct sway_container *workspace_create(struct sway_container *output, const char *name); 118struct sway_container *workspace_create(struct sway_container *output,
119 const char *name);
120 120
121/* 121/*
122 * Create a new view container. A view can be a child of a workspace container 122 * Create a new view container. A view can be a child of a workspace container
@@ -182,4 +182,6 @@ bool container_has_child(struct sway_container *con,
182 182
183void container_create_notify(struct sway_container *container); 183void container_create_notify(struct sway_container *container);
184 184
185void container_damage_whole(struct sway_container *container);
186
185#endif 187#endif
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h
index d4dace4a..03d27ceb 100644
--- a/include/sway/tree/view.h
+++ b/include/sway/tree/view.h
@@ -45,6 +45,12 @@ struct sway_view {
45 struct wlr_xwayland_surface *wlr_xwayland_surface; 45 struct wlr_xwayland_surface *wlr_xwayland_surface;
46 struct wlr_wl_shell_surface *wlr_wl_shell_surface; 46 struct wlr_wl_shell_surface *wlr_wl_shell_surface;
47 }; 47 };
48
49 struct {
50 struct wl_signal unmap;
51 } events;
52
53 struct wl_listener surface_new_subsurface;
48}; 54};
49 55
50struct sway_xdg_shell_v6_view { 56struct sway_xdg_shell_v6_view {
@@ -54,6 +60,7 @@ struct sway_xdg_shell_v6_view {
54 struct wl_listener request_move; 60 struct wl_listener request_move;
55 struct wl_listener request_resize; 61 struct wl_listener request_resize;
56 struct wl_listener request_maximize; 62 struct wl_listener request_maximize;
63 struct wl_listener new_popup;
57 struct wl_listener map; 64 struct wl_listener map;
58 struct wl_listener unmap; 65 struct wl_listener unmap;
59 struct wl_listener destroy; 66 struct wl_listener destroy;
@@ -80,6 +87,12 @@ struct sway_xwayland_unmanaged {
80 struct wlr_xwayland_surface *wlr_xwayland_surface; 87 struct wlr_xwayland_surface *wlr_xwayland_surface;
81 struct wl_list link; 88 struct wl_list link;
82 89
90 int lx, ly;
91
92 struct wl_listener request_configure;
93 struct wl_listener commit;
94 struct wl_listener map;
95 struct wl_listener unmap;
83 struct wl_listener destroy; 96 struct wl_listener destroy;
84}; 97};
85 98
@@ -95,6 +108,37 @@ struct sway_wl_shell_view {
95 int pending_width, pending_height; 108 int pending_width, pending_height;
96}; 109};
97 110
111struct sway_view_child;
112
113struct sway_view_child_impl {
114 void (*destroy)(struct sway_view_child *child);
115};
116
117/**
118 * A view child is a surface in the view tree, such as a subsurface or a popup.
119 */
120struct sway_view_child {
121 const struct sway_view_child_impl *impl;
122
123 struct sway_view *view;
124 struct wlr_surface *surface;
125
126 struct wl_listener surface_commit;
127 struct wl_listener surface_new_subsurface;
128 struct wl_listener surface_destroy;
129 struct wl_listener view_unmap;
130};
131
132struct sway_xdg_popup_v6 {
133 struct sway_view_child child;
134
135 struct wlr_xdg_surface_v6 *wlr_xdg_surface_v6;
136
137 struct wl_listener new_popup;
138 struct wl_listener unmap;
139 struct wl_listener destroy;
140};
141
98const char *view_get_title(struct sway_view *view); 142const char *view_get_title(struct sway_view *view);
99 143
100const char *view_get_app_id(struct sway_view *view); 144const char *view_get_app_id(struct sway_view *view);
@@ -129,4 +173,10 @@ void view_update_position(struct sway_view *view, double ox, double oy);
129 173
130void view_update_size(struct sway_view *view, int width, int height); 174void view_update_size(struct sway_view *view, int width, int height);
131 175
176void view_child_init(struct sway_view_child *child,
177 const struct sway_view_child_impl *impl, struct sway_view *view,
178 struct wlr_surface *surface);
179
180void view_child_destroy(struct sway_view_child *child);
181
132#endif 182#endif