Simulate mouse for single touch events on wayland
This commit is contained in:
parent
51ca86b416
commit
d961aa9521
@ -451,6 +451,14 @@ public:
|
|||||||
event.TouchInput.Y = wl_fixed_to_int(y);
|
event.TouchInput.Y = wl_fixed_to_int(y);
|
||||||
|
|
||||||
device->signalEvent(event);
|
device->signalEvent(event);
|
||||||
|
|
||||||
|
if (device->m_touches_count == 0)
|
||||||
|
{
|
||||||
|
pointer_button(data, NULL, 0, 0, BTN_LEFT,
|
||||||
|
WL_POINTER_BUTTON_STATE_PRESSED);
|
||||||
|
}
|
||||||
|
|
||||||
|
device->m_touches_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void touch_handle_up(void* data, wl_touch* touch, uint32_t serial,
|
static void touch_handle_up(void* data, wl_touch* touch, uint32_t serial,
|
||||||
@ -466,6 +474,14 @@ public:
|
|||||||
event.TouchInput.Y = 0;
|
event.TouchInput.Y = 0;
|
||||||
|
|
||||||
device->signalEvent(event);
|
device->signalEvent(event);
|
||||||
|
|
||||||
|
if (device->m_touches_count == 1)
|
||||||
|
{
|
||||||
|
pointer_button(data, NULL, 0, 0, BTN_LEFT,
|
||||||
|
WL_POINTER_BUTTON_STATE_RELEASED);
|
||||||
|
}
|
||||||
|
|
||||||
|
device->m_touches_count--;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void touch_handle_motion(void* data, wl_touch* touch, uint32_t time,
|
static void touch_handle_motion(void* data, wl_touch* touch, uint32_t time,
|
||||||
@ -481,6 +497,11 @@ public:
|
|||||||
event.TouchInput.Y = wl_fixed_to_int(y);
|
event.TouchInput.Y = wl_fixed_to_int(y);
|
||||||
|
|
||||||
device->signalEvent(event);
|
device->signalEvent(event);
|
||||||
|
|
||||||
|
if (device->m_touches_count == 1)
|
||||||
|
{
|
||||||
|
pointer_motion(data, NULL, 0, x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void touch_handle_frame(void* data, wl_touch* touch)
|
static void touch_handle_frame(void* data, wl_touch* touch)
|
||||||
@ -489,6 +510,9 @@ public:
|
|||||||
|
|
||||||
static void touch_handle_cancel(void* data, wl_touch* touch)
|
static void touch_handle_cancel(void* data, wl_touch* touch)
|
||||||
{
|
{
|
||||||
|
CIrrDeviceWayland* device = static_cast<CIrrDeviceWayland*>(data);
|
||||||
|
|
||||||
|
device->m_touches_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void seat_capabilities(void* data, wl_seat* seat, uint32_t caps)
|
static void seat_capabilities(void* data, wl_seat* seat, uint32_t caps)
|
||||||
@ -837,6 +861,7 @@ CIrrDeviceWayland::CIrrDeviceWayland(const SIrrlichtCreationParameters& params)
|
|||||||
m_mouse_button_states = 0;
|
m_mouse_button_states = 0;
|
||||||
m_width = params.WindowSize.Width;
|
m_width = params.WindowSize.Width;
|
||||||
m_height = params.WindowSize.Height;
|
m_height = params.WindowSize.Height;
|
||||||
|
m_touches_count = 0;
|
||||||
m_window_has_focus = false;
|
m_window_has_focus = false;
|
||||||
m_window_minimized = false;
|
m_window_minimized = false;
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ namespace irr
|
|||||||
uint32_t m_mouse_button_states;
|
uint32_t m_mouse_button_states;
|
||||||
unsigned int m_width;
|
unsigned int m_width;
|
||||||
unsigned int m_height;
|
unsigned int m_height;
|
||||||
|
unsigned int m_touches_count;
|
||||||
bool m_window_has_focus;
|
bool m_window_has_focus;
|
||||||
bool m_window_minimized;
|
bool m_window_minimized;
|
||||||
mutable core::stringc m_clipboard;
|
mutable core::stringc m_clipboard;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user