diff options
Diffstat (limited to 'sway/input/cursor.c')
-rw-r--r-- | sway/input/cursor.c | 149 |
1 files changed, 59 insertions, 90 deletions
diff --git a/sway/input/cursor.c b/sway/input/cursor.c index 0b2f03a2..6fddee90 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c @@ -386,29 +386,28 @@ static void pointer_motion(struct sway_cursor *cursor, uint32_t time_msec, static void handle_pointer_motion_relative( struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, motion); - struct wlr_pointer_motion_event *e = data; - cursor_handle_activity_from_device(cursor, &e->pointer->base); + struct wlr_event_pointer_motion *e = data; + cursor_handle_activity_from_device(cursor, e->device); - pointer_motion(cursor, e->time_msec, &e->pointer->base, e->delta_x, - e->delta_y, e->unaccel_dx, e->unaccel_dy); + pointer_motion(cursor, e->time_msec, e->device, e->delta_x, e->delta_y, + e->unaccel_dx, e->unaccel_dy); } static void handle_pointer_motion_absolute( struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, motion_absolute); - struct wlr_pointer_motion_absolute_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_motion_absolute *event = data; + cursor_handle_activity_from_device(cursor, event->device); double lx, ly; - wlr_cursor_absolute_to_layout_coords(cursor->cursor, &event->pointer->base, + wlr_cursor_absolute_to_layout_coords(cursor->cursor, event->device, event->x, event->y, &lx, &ly); double dx = lx - cursor->cursor->x; double dy = ly - cursor->cursor->y; - pointer_motion(cursor, event->time_msec, &event->pointer->base, dx, dy, - dx, dy); + pointer_motion(cursor, event->time_msec, event->device, dx, dy, dx, dy); } void dispatch_cursor_button(struct sway_cursor *cursor, @@ -423,7 +422,7 @@ void dispatch_cursor_button(struct sway_cursor *cursor, static void handle_pointer_button(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, button); - struct wlr_pointer_button_event *event = data; + struct wlr_event_pointer_button *event = data; if (event->state == WLR_BUTTON_PRESSED) { cursor->pressed_button_count++; @@ -435,20 +434,20 @@ static void handle_pointer_button(struct wl_listener *listener, void *data) { } } - cursor_handle_activity_from_device(cursor, &event->pointer->base); - dispatch_cursor_button(cursor, &event->pointer->base, + cursor_handle_activity_from_device(cursor, event->device); + dispatch_cursor_button(cursor, event->device, event->time_msec, event->button, event->state); } void dispatch_cursor_axis(struct sway_cursor *cursor, - struct wlr_pointer_axis_event *event) { + struct wlr_event_pointer_axis *event) { seatop_pointer_axis(cursor->seat, event); } static void handle_pointer_axis(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, axis); - struct wlr_pointer_axis_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_axis *event = data; + cursor_handle_activity_from_device(cursor, event->device); dispatch_cursor_axis(cursor, event); } @@ -459,8 +458,8 @@ static void handle_pointer_frame(struct wl_listener *listener, void *data) { static void handle_touch_down(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, touch_down); - struct wlr_touch_down_event *event = data; - cursor_handle_activity_from_device(cursor, &event->touch->base); + struct wlr_event_touch_down *event = data; + cursor_handle_activity_from_device(cursor, event->device); cursor_hide(cursor); struct sway_seat *seat = cursor->seat; @@ -468,7 +467,7 @@ static void handle_touch_down(struct wl_listener *listener, void *data) { struct wlr_surface *surface = NULL; double lx, ly; - wlr_cursor_absolute_to_layout_coords(cursor->cursor, &event->touch->base, + wlr_cursor_absolute_to_layout_coords(cursor->cursor, event->device, event->x, event->y, &lx, &ly); double sx, sy; struct sway_node *focused_node = node_at_coords(seat, lx, ly, &surface, &sx, &sy); @@ -496,25 +495,24 @@ static void handle_touch_down(struct wl_listener *listener, void *data) { double dx, dy; dx = lx - cursor->cursor->x; dy = ly - cursor->cursor->y; - pointer_motion(cursor, event->time_msec, &event->touch->base, dx, dy, - dx, dy); - dispatch_cursor_button(cursor, &event->touch->base, event->time_msec, + pointer_motion(cursor, event->time_msec, event->device, dx, dy, dx, dy); + dispatch_cursor_button(cursor, event->device, event->time_msec, BTN_LEFT, WLR_BUTTON_PRESSED); } } static void handle_touch_up(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, touch_up); - struct wlr_touch_up_event *event = data; - cursor_handle_activity_from_device(cursor, &event->touch->base); + struct wlr_event_touch_up *event = data; + cursor_handle_activity_from_device(cursor, event->device); struct wlr_seat *wlr_seat = cursor->seat->wlr_seat; if (cursor->simulating_pointer_from_touch) { if (cursor->pointer_touch_id == cursor->seat->touch_id) { cursor->pointer_touch_up = true; - dispatch_cursor_button(cursor, &event->touch->base, - event->time_msec, BTN_LEFT, WLR_BUTTON_RELEASED); + dispatch_cursor_button(cursor, event->device, event->time_msec, + BTN_LEFT, WLR_BUTTON_RELEASED); } } else { wlr_seat_touch_notify_up(wlr_seat, event->time_msec, event->touch_id); @@ -524,15 +522,15 @@ static void handle_touch_up(struct wl_listener *listener, void *data) { static void handle_touch_motion(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, touch_motion); - struct wlr_touch_motion_event *event = data; - cursor_handle_activity_from_device(cursor, &event->touch->base); + struct wlr_event_touch_motion *event = data; + cursor_handle_activity_from_device(cursor, event->device); struct sway_seat *seat = cursor->seat; struct wlr_seat *wlr_seat = seat->wlr_seat; struct wlr_surface *surface = NULL; double lx, ly; - wlr_cursor_absolute_to_layout_coords(cursor->cursor, &event->touch->base, + wlr_cursor_absolute_to_layout_coords(cursor->cursor, event->device, event->x, event->y, &lx, &ly); double sx, sy; node_at_coords(cursor->seat, lx, ly, &surface, &sx, &sy); @@ -554,8 +552,7 @@ static void handle_touch_motion(struct wl_listener *listener, void *data) { double dx, dy; dx = lx - cursor->cursor->x; dy = ly - cursor->cursor->y; - pointer_motion(cursor, event->time_msec, &event->touch->base, - dx, dy, dx, dy); + pointer_motion(cursor, event->time_msec, event->device, dx, dy, dx, dy); } } else if (surface) { wlr_seat_touch_notify_motion(wlr_seat, event->time_msec, @@ -594,15 +591,14 @@ static void apply_mapping_from_region(struct wlr_input_device *device, double x1 = region->x1, x2 = region->x2; double y1 = region->y1, y2 = region->y2; - if (region->mm && device->type == WLR_INPUT_DEVICE_TABLET_TOOL) { - struct wlr_tablet *tablet = device->tablet; - if (tablet->width_mm == 0 || tablet->height_mm == 0) { + if (region->mm) { + if (device->width_mm == 0 || device->height_mm == 0) { return; } - x1 /= tablet->width_mm; - x2 /= tablet->width_mm; - y1 /= tablet->height_mm; - y2 /= tablet->height_mm; + x1 /= device->width_mm; + x2 /= device->width_mm; + y1 /= device->height_mm; + y2 /= device->height_mm; } *x = apply_mapping_from_coord(x1, x2, *x); @@ -664,8 +660,8 @@ static void handle_tablet_tool_position(struct sway_cursor *cursor, static void handle_tool_axis(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, tool_axis); - struct wlr_tablet_tool_axis_event *event = data; - cursor_handle_activity_from_device(cursor, &event->tablet->base); + struct wlr_event_tablet_tool_axis *event = data; + cursor_handle_activity_from_device(cursor, event->device); struct sway_tablet_tool *sway_tool = event->tool->data; if (!sway_tool) { @@ -720,8 +716,8 @@ static void handle_tool_axis(struct wl_listener *listener, void *data) { static void handle_tool_tip(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, tool_tip); - struct wlr_tablet_tool_tip_event *event = data; - cursor_handle_activity_from_device(cursor, &event->tablet->base); + struct wlr_event_tablet_tool_tip *event = data; + cursor_handle_activity_from_device(cursor, event->device); struct sway_tablet_tool *sway_tool = event->tool->data; struct wlr_tablet_v2_tablet *tablet_v2 = sway_tool->tablet->tablet_v2; @@ -736,7 +732,7 @@ static void handle_tool_tip(struct wl_listener *listener, void *data) { if (cursor->simulating_pointer_from_tool_tip && event->state == WLR_TABLET_TOOL_TIP_UP) { cursor->simulating_pointer_from_tool_tip = false; - dispatch_cursor_button(cursor, &event->tablet->base, event->time_msec, + dispatch_cursor_button(cursor, event->device, event->time_msec, BTN_LEFT, WLR_BUTTON_RELEASED); wlr_seat_pointer_notify_frame(cursor->seat->wlr_seat); } else if (!surface || !wlr_surface_accepts_tablet_v2(tablet_v2, surface)) { @@ -748,8 +744,8 @@ static void handle_tool_tip(struct wl_listener *listener, void *data) { WLR_TABLET_TOOL_TIP_UP); } else { cursor->simulating_pointer_from_tool_tip = true; - dispatch_cursor_button(cursor, &event->tablet->base, - event->time_msec, BTN_LEFT, WLR_BUTTON_PRESSED); + dispatch_cursor_button(cursor, event->device, event->time_msec, + BTN_LEFT, WLR_BUTTON_PRESSED); wlr_seat_pointer_notify_frame(cursor->seat->wlr_seat); } } else { @@ -771,13 +767,12 @@ static struct sway_tablet *get_tablet_for_device(struct sway_cursor *cursor, static void handle_tool_proximity(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, tool_proximity); - struct wlr_tablet_tool_proximity_event *event = data; - cursor_handle_activity_from_device(cursor, &event->tablet->base); + struct wlr_event_tablet_tool_proximity *event = data; + cursor_handle_activity_from_device(cursor, event->device); struct wlr_tablet_tool *tool = event->tool; if (!tool->data) { - struct sway_tablet *tablet = get_tablet_for_device(cursor, - &event->tablet->base); + struct sway_tablet *tablet = get_tablet_for_device(cursor, event->device); if (!tablet) { sway_log(SWAY_ERROR, "no tablet for tablet tool"); return; @@ -802,8 +797,8 @@ static void handle_tool_proximity(struct wl_listener *listener, void *data) { static void handle_tool_button(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, tool_button); - struct wlr_tablet_tool_button_event *event = data; - cursor_handle_activity_from_device(cursor, &event->tablet->base); + struct wlr_event_tablet_tool_button *event = data; + cursor_handle_activity_from_device(cursor, event->device); struct sway_tablet_tool *sway_tool = event->tool->data; if (!sway_tool) { @@ -824,14 +819,14 @@ static void handle_tool_button(struct wl_listener *listener, void *data) { switch (event->state) { case WLR_BUTTON_PRESSED: if (cursor->tool_buttons == 0) { - dispatch_cursor_button(cursor, &event->tablet->base, + dispatch_cursor_button(cursor, event->device, event->time_msec, BTN_RIGHT, event->state); } cursor->tool_buttons++; break; case WLR_BUTTON_RELEASED: if (cursor->tool_buttons == 1) { - dispatch_cursor_button(cursor, &event->tablet->base, + dispatch_cursor_button(cursor, event->device, event->time_msec, BTN_RIGHT, event->state); } cursor->tool_buttons--; @@ -931,8 +926,8 @@ static void handle_request_pointer_set_cursor(struct wl_listener *listener, static void handle_pointer_pinch_begin(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of( listener, cursor, pinch_begin); - struct wlr_pointer_pinch_begin_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_pinch_begin *event = data; + cursor_handle_activity_from_device(cursor, event->device); wlr_pointer_gestures_v1_send_pinch_begin( cursor->pointer_gestures, cursor->seat->wlr_seat, event->time_msec, event->fingers); @@ -941,8 +936,8 @@ static void handle_pointer_pinch_begin(struct wl_listener *listener, void *data) static void handle_pointer_pinch_update(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of( listener, cursor, pinch_update); - struct wlr_pointer_pinch_update_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_pinch_update *event = data; + cursor_handle_activity_from_device(cursor, event->device); wlr_pointer_gestures_v1_send_pinch_update( cursor->pointer_gestures, cursor->seat->wlr_seat, event->time_msec, event->dx, event->dy, @@ -952,8 +947,8 @@ static void handle_pointer_pinch_update(struct wl_listener *listener, void *data static void handle_pointer_pinch_end(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of( listener, cursor, pinch_end); - struct wlr_pointer_pinch_end_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_pinch_end *event = data; + cursor_handle_activity_from_device(cursor, event->device); wlr_pointer_gestures_v1_send_pinch_end( cursor->pointer_gestures, cursor->seat->wlr_seat, event->time_msec, event->cancelled); @@ -962,8 +957,8 @@ static void handle_pointer_pinch_end(struct wl_listener *listener, void *data) { static void handle_pointer_swipe_begin(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of( listener, cursor, swipe_begin); - struct wlr_pointer_swipe_begin_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_swipe_begin *event = data; + cursor_handle_activity_from_device(cursor, event->device); wlr_pointer_gestures_v1_send_swipe_begin( cursor->pointer_gestures, cursor->seat->wlr_seat, event->time_msec, event->fingers); @@ -972,8 +967,8 @@ static void handle_pointer_swipe_begin(struct wl_listener *listener, void *data) static void handle_pointer_swipe_update(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of( listener, cursor, swipe_update); - struct wlr_pointer_swipe_update_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_swipe_update *event = data; + cursor_handle_activity_from_device(cursor, event->device); wlr_pointer_gestures_v1_send_swipe_update( cursor->pointer_gestures, cursor->seat->wlr_seat, event->time_msec, event->dx, event->dy); @@ -982,33 +977,13 @@ static void handle_pointer_swipe_update(struct wl_listener *listener, void *data static void handle_pointer_swipe_end(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of( listener, cursor, swipe_end); - struct wlr_pointer_swipe_end_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); + struct wlr_event_pointer_swipe_end *event = data; + cursor_handle_activity_from_device(cursor, event->device); wlr_pointer_gestures_v1_send_swipe_end( cursor->pointer_gestures, cursor->seat->wlr_seat, event->time_msec, event->cancelled); } -static void handle_pointer_hold_begin(struct wl_listener *listener, void *data) { - struct sway_cursor *cursor = wl_container_of( - listener, cursor, hold_begin); - struct wlr_pointer_hold_begin_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); - wlr_pointer_gestures_v1_send_hold_begin( - cursor->pointer_gestures, cursor->seat->wlr_seat, - event->time_msec, event->fingers); -} - -static void handle_pointer_hold_end(struct wl_listener *listener, void *data) { - struct sway_cursor *cursor = wl_container_of( - listener, cursor, hold_end); - struct wlr_pointer_hold_end_event *event = data; - cursor_handle_activity_from_device(cursor, &event->pointer->base); - wlr_pointer_gestures_v1_send_hold_end( - cursor->pointer_gestures, cursor->seat->wlr_seat, - event->time_msec, event->cancelled); -} - static void handle_image_surface_destroy(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = @@ -1086,8 +1061,6 @@ void sway_cursor_destroy(struct sway_cursor *cursor) { wl_list_remove(&cursor->swipe_begin.link); wl_list_remove(&cursor->swipe_update.link); wl_list_remove(&cursor->swipe_end.link); - wl_list_remove(&cursor->hold_begin.link); - wl_list_remove(&cursor->hold_end.link); wl_list_remove(&cursor->motion.link); wl_list_remove(&cursor->motion_absolute.link); wl_list_remove(&cursor->button.link); @@ -1144,10 +1117,6 @@ struct sway_cursor *sway_cursor_create(struct sway_seat *seat) { wl_signal_add(&wlr_cursor->events.swipe_update, &cursor->swipe_update); cursor->swipe_end.notify = handle_pointer_swipe_end; wl_signal_add(&wlr_cursor->events.swipe_end, &cursor->swipe_end); - cursor->hold_begin.notify = handle_pointer_hold_begin; - wl_signal_add(&wlr_cursor->events.hold_begin, &cursor->hold_begin); - cursor->hold_end.notify = handle_pointer_hold_end; - wl_signal_add(&wlr_cursor->events.hold_end, &cursor->hold_end); // input events wl_signal_add(&wlr_cursor->events.motion, &cursor->motion); |