aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-10-29 11:02:27 -0400
committerGitHub <noreply@github.com>2017-10-29 11:02:27 -0400
commit9a3c94b608663a4465ff528709d732699ac7af80 (patch)
tree8b76fcdbf82ee92ef19504d4a9c0e3abc43f8e1c /include
parent50e86a0efa43fa72bd7d8c2dfc2d124052f74823 (diff)
parentc01248cf17b0556145d973449d0b12cad0b96a8c (diff)
Merge pull request #331 from acrisci/feature/xwm-rewrite
xwayland window manager fixes
Diffstat (limited to 'include')
-rw-r--r--include/rootston/view.h4
-rw-r--r--include/wlr/xwayland.h50
2 files changed, 48 insertions, 6 deletions
diff --git a/include/rootston/view.h b/include/rootston/view.h
index 9eb7065d..993ff654 100644
--- a/include/rootston/view.h
+++ b/include/rootston/view.h
@@ -34,6 +34,10 @@ struct roots_xwayland_surface {
// TODO: Maybe destroy listener should go in roots_view
struct wl_listener destroy;
struct wl_listener request_configure;
+ struct wl_listener request_move;
+ struct wl_listener request_resize;
+ struct wl_listener map_notify;
+ struct wl_listener unmap_notify;
};
enum roots_view_type {
diff --git a/include/wlr/xwayland.h b/include/wlr/xwayland.h
index c25d0eb0..2d968133 100644
--- a/include/wlr/xwayland.h
+++ b/include/wlr/xwayland.h
@@ -25,7 +25,6 @@ struct wlr_xwayland {
struct wl_event_source *sigusr1_source;
struct wl_listener destroy_listener;
struct wlr_xwm *xwm;
- struct wl_list displayable_surfaces;
struct {
struct wl_signal new_surface;
@@ -66,14 +65,19 @@ struct wlr_xwayland_surface_size_hints {
struct wlr_xwayland_surface {
xcb_window_t window_id;
+ struct wlr_xwm *xwm;
uint32_t surface_id;
+
struct wl_list link;
+ struct wl_list unpaired_link;
struct wlr_surface *surface;
- struct wl_listener surface_destroy_listener;
int16_t x, y;
uint16_t width, height;
+ uint16_t saved_width, saved_height;
bool override_redirect;
+ bool mapped;
+ bool added;
char *title;
char *class;
@@ -93,19 +97,33 @@ struct wlr_xwayland_surface {
uint32_t hints_urgency;
struct wlr_xwayland_surface_size_hints *size_hints;
+ // _NET_WM_STATE
+ bool fullscreen;
+ bool maximized_vert;
+ bool maximized_horz;
+
+ bool has_alpha;
+
struct {
struct wl_signal destroy;
-
struct wl_signal request_configure;
+ struct wl_signal request_move;
+ struct wl_signal request_resize;
+ struct wl_signal request_maximize;
+ struct wl_signal request_fullscreen;
+ struct wl_signal map_notify;
+ struct wl_signal unmap_notify;
struct wl_signal set_title;
struct wl_signal set_class;
struct wl_signal set_parent;
- struct wl_signal set_state;
struct wl_signal set_pid;
struct wl_signal set_window_type;
} events;
+ struct wl_listener surface_destroy;
+ struct wl_listener surface_commit;
+
void *data;
};
@@ -115,15 +133,35 @@ struct wlr_xwayland_surface_configure_event {
uint16_t width, height;
};
-void wlr_xwayland_destroy(struct wlr_xwayland *wlr_xwayland);
+// TODO: maybe add a seat to these
+struct wlr_xwayland_move_event {
+ struct wlr_xwayland_surface *surface;
+};
+
+struct wlr_xwayland_resize_event {
+ struct wlr_xwayland_surface *surface;
+ uint32_t edges;
+};
+
struct wlr_xwayland *wlr_xwayland_create(struct wl_display *wl_display,
struct wlr_compositor *compositor);
+
+void wlr_xwayland_destroy(struct wlr_xwayland *wlr_xwayland);
+
void wlr_xwayland_surface_activate(struct wlr_xwayland *wlr_xwayland,
- struct wlr_xwayland_surface *surface);
+ struct wlr_xwayland_surface *surface, bool activated);
+
void wlr_xwayland_surface_configure(struct wlr_xwayland *wlr_xwayland,
struct wlr_xwayland_surface *surface, int16_t x, int16_t y,
uint16_t width, uint16_t height);
+
void wlr_xwayland_surface_close(struct wlr_xwayland *wlr_xwayland,
struct wlr_xwayland_surface *surface);
+void wlr_xwayland_surface_set_maximized(struct wlr_xwayland *wlr_xwayland,
+ struct wlr_xwayland_surface *surface, bool maximized);
+
+void wlr_xwayland_surface_set_fullscreen(struct wlr_xwayland *wlr_xwayland,
+ struct wlr_xwayland_surface *surface, bool fullscreen);
+
#endif