28 G_DEFINE_TYPE(FlPointerManager, fl_pointer_manager, G_TYPE_OBJECT);
39 case GDK_BUTTON_PRIMARY:
40 *button = kFlutterPointerButtonMousePrimary;
42 case GDK_BUTTON_MIDDLE:
43 *button = kFlutterPointerButtonMouseMiddle;
45 case GDK_BUTTON_SECONDARY:
46 *button = kFlutterPointerButtonMouseSecondary;
49 *button = kFlutterPointerButtonMouseBack;
52 *button = kFlutterPointerButtonMouseForward;
62 FlutterPointerDeviceKind device_kind,
65 if (self->pointer_inside) {
68 self->pointer_inside =
TRUE;
70 g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
71 if (engine ==
nullptr) {
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));
99 self->view_id = view_id;
100 g_weak_ref_init(&self->engine, engine);
106 FlPointerManager*
self,
108 FlutterPointerDeviceKind device_kind,
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;
127 FlutterPointerPhase phase = kMove;
128 self->button_state ^= button;
129 phase = old_button_state == 0 ? kDown : kMove;
131 g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
132 if (engine ==
nullptr) {
138 y, device_kind, 0, 0, self->button_state);
144 FlPointerManager*
self,
146 FlutterPointerDeviceKind device_kind,
150 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
158 if ((self->button_state & button) == 0) {
162 FlutterPointerPhase phase = kMove;
163 self->button_state ^= button;
165 phase =
self->button_state == 0 ? kUp : kMove;
167 g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
168 if (engine ==
nullptr) {
174 y, device_kind, 0, 0, self->button_state);
181 FlutterPointerDeviceKind device_kind,
184 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
186 g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
187 if (engine ==
nullptr) {
194 engine, self->view_id, self->button_state != 0 ? kMove : kHover,
203 FlutterPointerDeviceKind device_kind,
206 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
208 g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
209 if (engine ==
nullptr) {
220 FlutterPointerDeviceKind device_kind,
223 g_return_val_if_fail(FL_IS_POINTER_MANAGER(
self), FALSE);
225 g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
226 if (engine ==
nullptr) {
233 if (self->pointer_inside && self->button_state == 0) {
236 x, y, device_kind, 0, 0,
238 self->pointer_inside = FALSE;