diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-09-30 14:31:57 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-30 14:31:57 -0400 |
commit | bfb6914cdf725d9a614e5ae7f6b3f189aa3bd89e (patch) | |
tree | 0f4b9f20187792d4859830048b7ab44df0709185 /rootston/cursor.c | |
parent | e3438233f19a813731c049b8b5eae19220e4e87f (diff) | |
parent | 8f41c497a71ab0ca7fec96957d109b3b0adb702e (diff) |
Merge pull request #160 from acrisci/feature/subcompositor
Subcompositor
Diffstat (limited to 'rootston/cursor.c')
-rw-r--r-- | rootston/cursor.c | 17 |
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; } |