Enable and respond to all touch events

This commit is contained in:
David Boddie
2019-08-22 17:13:25 +02:00
parent 1cf242a9df
commit 087da5cd9e

View File

@ -55,8 +55,6 @@ typedef struct _EekGtkKeyboardPrivate
LevelKeyboard *keyboard;
GtkCssProvider *css_provider;
GtkStyleContext *scontext;
GdkEventSequence *sequence; // unowned reference
} EekGtkKeyboardPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (EekGtkKeyboard, eek_gtk_keyboard, GTK_TYPE_DRAWING_AREA)
@ -81,7 +79,8 @@ eek_gtk_keyboard_real_realize (GtkWidget *self)
GDK_KEY_RELEASE_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON_MOTION_MASK);
GDK_BUTTON_MOTION_MASK |
GDK_TOUCH_MASK);
GTK_WIDGET_CLASS (eek_gtk_keyboard_parent_class)->realize (self);
}
@ -253,26 +252,16 @@ handle_touch_event (GtkWidget *widget,
EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
if (event->type == GDK_TOUCH_BEGIN) {
if (priv->sequence) {
// Ignore second and following touch points
return FALSE;
}
priv->sequence = event->sequence;
depress(self, event->x, event->y, event->time);
return TRUE;
}
if (priv->sequence != event->sequence) {
return FALSE;
}
if (event->type == GDK_TOUCH_UPDATE) {
drag(self, event->x, event->y, event->time);
}
if (event->type == GDK_TOUCH_END || event->type == GDK_TOUCH_CANCEL) {
// TODO: can the event have different coords than the previous update event?
release(self, event->time);
priv->sequence = NULL;
}
return TRUE;
}