_device_pointer_motion(evdev, event);
}
+static Ecore_Event_Mouse_Button *
+_mouse_button_event_create(E_Input_Evdev *evdev, uint32_t timestamp, double radius_x, double radius_y, double pressure, double angle)
+{
+ E_Input_Backend *input = NULL;
+ Ecore_Event_Mouse_Button *ev = NULL;
+
+ if (!(input = e_input_seat_input_get(evdev->seat))) return NULL;
+ if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button)))) return NULL;
+
+ ev->window = (Ecore_Window)input->dev->window;
+ ev->event_window = (Ecore_Window)input->dev->window;
+ ev->root_window = (Ecore_Window)input->dev->window;
+ ev->timestamp = timestamp;
+ ev->same_screen = 1;
+
+ _device_modifiers_update(evdev);
+ ev->modifiers = evdev->xkb.modifiers;
+
+ ev->x = e_input_seat_pointer_ix_get(evdev->seat);
+ ev->y = e_input_seat_pointer_iy_get(evdev->seat);
+ ev->root.x = ev->x;
+ ev->root.y = ev->y;
+
+ ev->multi.device = evdev->mt_slot;
+ ev->multi.radius = 1;
+ ev->multi.radius_x = radius_x;
+ ev->multi.radius_y = radius_y;
+ ev->multi.pressure = pressure;
+ ev->multi.angle = angle;
+
+ ev->multi.x = ev->x;
+ ev->multi.y = ev->y;
+ ev->multi.root.x = ev->x;
+ ev->multi.root.y = ev->y;
+
+ return ev;
+}
+
EINTERN void
e_input_evdev_handle_button(E_Input_Evdev *evdev, struct libinput_event_pointer *event)
{
evdev->mouse.pressed_button &= ~(1 << button);
}
- if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button))))
- {
- return;
- }
-
- ev->window = (Ecore_Window)input->dev->window;
- ev->event_window = (Ecore_Window)input->dev->window;
- ev->root_window = (Ecore_Window)input->dev->window;
- ev->timestamp = timestamp;
- ev->same_screen = 1;
-
- _device_modifiers_update(evdev);
- ev->modifiers = evdev->xkb.modifiers;
-
- ev->x = e_input_seat_pointer_ix_get(evdev->seat);
- ev->y = e_input_seat_pointer_iy_get(evdev->seat);
- ev->root.x = ev->x;
- ev->root.y = ev->y;
-
- ev->multi.device = evdev->mt_slot;
- ev->multi.radius = 1;
- ev->multi.radius_x = 1;
- ev->multi.radius_y = 1;
- ev->multi.pressure = 1.0;
- ev->multi.angle = 0.0;
- ev->multi.x = ev->x;
- ev->multi.y = ev->y;
- ev->multi.root.x = ev->x;
- ev->multi.root.y = ev->y;
+ ev = _mouse_button_event_create(evdev, timestamp, 1, 1, 1.0, 0.0);
+ if (!ev) return;
if (state)
{
angle = libinput_event_touch_get_orientation(event);
}
- if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button)))) return;
-
- ev->window = (Ecore_Window)input->dev->window;
- ev->event_window = (Ecore_Window)input->dev->window;
- ev->root_window = (Ecore_Window)input->dev->window;
- ev->timestamp = timestamp;
- ev->same_screen = 1;
-
- _device_modifiers_update(evdev);
- ev->modifiers = evdev->xkb.modifiers;
-
- ev->x = e_input_seat_pointer_ix_get(evdev->seat);
- ev->y = e_input_seat_pointer_iy_get(evdev->seat);
- ev->root.x = ev->x;
- ev->root.y = ev->y;
-
- ev->multi.device = evdev->mt_slot;
- ev->multi.radius = 1;
- ev->multi.radius_x = radius_x;
- ev->multi.radius_y = radius_y;
- ev->multi.pressure = pressure;
- ev->multi.angle = angle;
-
- ev->multi.x = ev->x;
- ev->multi.y = ev->y;
- ev->multi.root.x = ev->x;
- ev->multi.root.y = ev->y;
+ ev = _mouse_button_event_create(evdev, timestamp, radius_x, radius_y, pressure, angle);
+ if (!ev) return;
if (state == ECORE_EVENT_MOUSE_BUTTON_DOWN)
{
timestamp = libinput_event_touch_get_time(event);
- if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button)))) return;
-
- ev->window = (Ecore_Window)input->dev->window;
- ev->event_window = (Ecore_Window)input->dev->window;
- ev->root_window = (Ecore_Window)input->dev->window;
- ev->timestamp = timestamp;
- ev->same_screen = 1;
-
- ev->x = e_input_seat_pointer_ix_get(evdev->seat);
- ev->y = e_input_seat_pointer_iy_get(evdev->seat);
- ev->root.x = ev->x;
- ev->root.y = ev->y;
-
- ev->multi.device = evdev->mt_slot;
- ev->multi.radius = 1;
- ev->multi.radius_x = 1;
- ev->multi.radius_y = 1;
- ev->multi.pressure = 1.0;
- ev->multi.angle = 0.0;
- ev->multi.x = ev->x;
- ev->multi.y = ev->y;
- ev->multi.root.x = ev->x;
- ev->multi.root.y = ev->y;
+ ev = _mouse_button_event_create(evdev, timestamp, 1, 1, 1.0, 0.0);
+ if (!ev) return;
evdev->touch.pressed &= ~(1 << ev->multi.device);