aboutsummaryrefslogtreecommitdiff
path: root/rootston/cursor.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-09-30 14:31:57 -0400
committerGitHub <noreply@github.com>2017-09-30 14:31:57 -0400
commitbfb6914cdf725d9a614e5ae7f6b3f189aa3bd89e (patch)
tree0f4b9f20187792d4859830048b7ab44df0709185 /rootston/cursor.c
parente3438233f19a813731c049b8b5eae19220e4e87f (diff)
parent8f41c497a71ab0ca7fec96957d109b3b0adb702e (diff)
Merge pull request #160 from acrisci/feature/subcompositor
Subcompositor
Diffstat (limited to 'rootston/cursor.c')
-rw-r--r--rootston/cursor.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/rootston/cursor.c b/rootston/cursor.c
index bd8f91d2..c24e6989 100644
--- a/rootston/cursor.c
+++ b/rootston/cursor.c
@@ -48,15 +48,14 @@ void view_begin_resize(struct roots_input *input, struct wlr_cursor *cursor,
void cursor_update_position(struct roots_input *input, uint32_t time) {
struct roots_desktop *desktop = input->server->desktop;
struct roots_view *view;
+ struct wlr_surface *surface;
+ double sx, sy;
switch (input->mode) {
case ROOTS_CURSOR_PASSTHROUGH:
- view = view_at(desktop, input->cursor->x, input->cursor->y);
+ view = view_at(desktop, input->cursor->x, input->cursor->y, &surface,
+ &sx, &sy);
if (view) {
- struct wlr_box box;
- view_get_input_bounds(view, &box);
- double sx = input->cursor->x - view->x;
- double sy = input->cursor->y - view->y;
- wlr_seat_pointer_enter(input->wl_seat, view->wlr_surface, sx, sy);
+ wlr_seat_pointer_enter(input->wl_seat, surface, sx, sy);
wlr_seat_pointer_send_motion(input->wl_seat, time, sx, sy);
} else {
wlr_seat_pointer_clear_focus(input->wl_seat);
@@ -146,8 +145,10 @@ static void do_cursor_button_press(struct roots_input *input,
struct wlr_cursor *cursor, struct wlr_input_device *device,
uint32_t time, uint32_t button, uint32_t state) {
struct roots_desktop *desktop = input->server->desktop;
+ struct wlr_surface *surface;
+ double sx, sy;
struct roots_view *view = view_at(desktop,
- input->cursor->x, input->cursor->y);
+ input->cursor->x, input->cursor->y, &surface, &sx, &sy);
uint32_t serial = wlr_seat_pointer_send_button(
input->wl_seat, time, button, state);
int i;
@@ -165,7 +166,7 @@ static void do_cursor_button_press(struct roots_input *input,
% (sizeof(input->input_events) / sizeof(input->input_events[0]));
set_view_focus(input, desktop, view);
if (view) {
- wlr_seat_keyboard_enter(input->wl_seat, view->wlr_surface);
+ wlr_seat_keyboard_enter(input->wl_seat, surface);
}
break;
}