diff options
author | Las <las@protonmail.ch> | 2018-08-10 18:19:16 +0200 |
---|---|---|
committer | Las <las@protonmail.ch> | 2018-09-18 10:14:33 +0200 |
commit | fa2e6e7d9d5ffbd782063c89e460a915b29d4a58 (patch) | |
tree | 219c3ff57b4430b7840e7b71684a5deec36bcf70 /include/rootston | |
parent | 437f5387728703aca859f6fcec021a700472be33 (diff) |
Implement pointer-constraints protocol in wlroots and rootston
Diffstat (limited to 'include/rootston')
-rw-r--r-- | include/rootston/cursor.h | 16 | ||||
-rw-r--r-- | include/rootston/desktop.h | 3 | ||||
-rw-r--r-- | include/rootston/input.h | 2 | ||||
-rw-r--r-- | include/rootston/seat.h | 2 |
4 files changed, 21 insertions, 2 deletions
diff --git a/include/rootston/cursor.h b/include/rootston/cursor.h index 547fe333..b5bb682f 100644 --- a/include/rootston/cursor.h +++ b/include/rootston/cursor.h @@ -1,6 +1,7 @@ #ifndef ROOTSTON_CURSOR_H #define ROOTSTON_CURSOR_H +#include <wlr/types/wlr_pointer_constraints_v1.h> #include "rootston/seat.h" enum roots_cursor_mode { @@ -14,6 +15,9 @@ struct roots_cursor { struct roots_seat *seat; struct wlr_cursor *cursor; + struct wlr_pointer_constraint_v1 *active_constraint; + pixman_region32_t confine; // invalid if active_constraint == NULL + const char *default_xcursor; enum roots_cursor_mode mode; @@ -45,6 +49,10 @@ struct roots_cursor { struct wl_listener tool_button; struct wl_listener request_set_cursor; + + struct wl_listener focus_change; + + struct wl_listener constraint_commit; }; struct roots_cursor *roots_cursor_create(struct roots_seat *seat); @@ -81,9 +89,17 @@ void roots_cursor_handle_tool_tip(struct roots_cursor *cursor, void roots_cursor_handle_request_set_cursor(struct roots_cursor *cursor, struct wlr_seat_pointer_request_set_cursor_event *event); +void roots_cursor_handle_focus_change(struct roots_cursor *cursor, + struct wlr_seat_pointer_focus_change_event *event); + +void roots_cursor_handle_constraint_commit(struct roots_cursor *cursor); + void roots_cursor_update_position(struct roots_cursor *cursor, uint32_t time); void roots_cursor_update_focus(struct roots_cursor *cursor); +void roots_cursor_constrain(struct roots_cursor *cursor, + struct wlr_pointer_constraint_v1 *constraint, double sx, double sy); + #endif diff --git a/include/rootston/desktop.h b/include/rootston/desktop.h index 89d8af4a..dac694d1 100644 --- a/include/rootston/desktop.h +++ b/include/rootston/desktop.h @@ -56,6 +56,7 @@ struct roots_desktop { struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard; struct wlr_screencopy_manager_v1 *screencopy; struct wlr_tablet_manager_v2 *tablet_v2; + struct wlr_pointer_constraints_v1 *pointer_constraints; struct wl_listener new_output; struct wl_listener layout_change; @@ -67,6 +68,8 @@ struct roots_desktop { struct wl_listener input_inhibit_activate; struct wl_listener input_inhibit_deactivate; struct wl_listener virtual_keyboard_new; + struct wl_listener constraint_create; + struct wl_listener constraint_destroy; #ifdef WLR_HAS_XWAYLAND struct wlr_xwayland *xwayland; diff --git a/include/rootston/input.h b/include/rootston/input.h index 2cdb13e6..31810b4d 100644 --- a/include/rootston/input.h +++ b/include/rootston/input.h @@ -16,7 +16,7 @@ struct roots_input { struct wl_listener new_input; - struct wl_list seats; + struct wl_list seats; // roots_seat::link }; struct roots_input *input_create(struct roots_server *server, diff --git a/include/rootston/seat.h b/include/rootston/seat.h index c5e584b6..a3192d26 100644 --- a/include/rootston/seat.h +++ b/include/rootston/seat.h @@ -10,7 +10,7 @@ struct roots_seat { struct roots_input *input; struct wlr_seat *seat; struct roots_cursor *cursor; - struct wl_list link; + struct wl_list link; // roots_input::seats // coordinates of the first touch point if it exists int32_t touch_id; |