39 case GDK_BUTTON_PRIMARY:
42 case GDK_BUTTON_MIDDLE:
45 case GDK_BUTTON_SECONDARY:
65 if (
self->pointer_inside) {
77 y, device_kind, 0, 0,
self->button_state);
81 FlPointerManager*
self = FL_POINTER_MANAGER(
object);
83 g_weak_ref_clear(&
self->engine);
85 G_OBJECT_CLASS(fl_pointer_manager_parent_class)->dispose(
object);
96 FlPointerManager*
self =
97 FL_POINTER_MANAGER(g_object_new(fl_pointer_manager_get_type(),
nullptr));
106 FlPointerManager*
self,
112 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
122 if ((
self->button_state & button) != 0) {
126 int old_button_state =
self->button_state;
128 self->button_state ^= button;
129 phase = old_button_state == 0 ?
kDown :
kMove;
138 y, device_kind, 0, 0,
self->button_state);
144 FlPointerManager*
self,
150 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
158 if ((
self->button_state & button) == 0) {
163 self->button_state ^= button;
174 y, device_kind, 0, 0,
self->button_state);
184 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
206 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
223 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
233 if (
self->pointer_inside &&
self->button_state == 0) {
236 x,
y, device_kind, 0, 0,
238 self->pointer_inside = FALSE;
FlutterPointerPhase
The phase of the pointer event.
@ kHover
The pointer moved while up.
@ kFlutterPointerButtonMousePrimary
@ kFlutterPointerButtonMouseMiddle
@ kFlutterPointerButtonMouseForward
@ kFlutterPointerButtonMouseBack
@ kFlutterPointerButtonMouseSecondary
FlutterPointerDeviceKind
The device type that created a pointer event.
g_autoptr(GMutexLocker) locker
void fl_engine_send_mouse_pointer_event(FlEngine *self, FlutterViewId view_id, FlutterPointerPhase phase, size_t timestamp, double x, double y, FlutterPointerDeviceKind device_kind, double scroll_delta_x, double scroll_delta_y, int64_t buttons)
gboolean fl_pointer_manager_handle_button_press(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y, guint gdk_button)
FlPointerManager * fl_pointer_manager_new(FlutterViewId view_id, FlEngine *engine)
gboolean fl_pointer_manager_handle_motion(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y)
G_DEFINE_TYPE(FlPointerManager, fl_pointer_manager, G_TYPE_OBJECT)
static gboolean get_mouse_button(guint gdk_button, int64_t *button)
static void fl_pointer_manager_dispose(GObject *object)
static void ensure_pointer_added(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y)
gboolean fl_pointer_manager_handle_enter(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y)
static constexpr int kMicrosecondsPerMillisecond
static constexpr guint kMouseButtonForward
gboolean fl_pointer_manager_handle_leave(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y)
static constexpr guint kMouseButtonBack
static void fl_pointer_manager_class_init(FlPointerManagerClass *klass)
gboolean fl_pointer_manager_handle_button_release(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y, guint gdk_button)
static void fl_pointer_manager_init(FlPointerManager *self)
G_BEGIN_DECLS FlutterViewId view_id