Enable and respond to all touch events
This commit is contained in:
		@ -55,8 +55,6 @@ typedef struct _EekGtkKeyboardPrivate
 | 
				
			|||||||
    LevelKeyboard *keyboard;
 | 
					    LevelKeyboard *keyboard;
 | 
				
			||||||
    GtkCssProvider *css_provider;
 | 
					    GtkCssProvider *css_provider;
 | 
				
			||||||
    GtkStyleContext *scontext;
 | 
					    GtkStyleContext *scontext;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    GdkEventSequence *sequence; // unowned reference
 | 
					 | 
				
			||||||
} EekGtkKeyboardPrivate;
 | 
					} EekGtkKeyboardPrivate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_DEFINE_TYPE_WITH_PRIVATE (EekGtkKeyboard, eek_gtk_keyboard, GTK_TYPE_DRAWING_AREA)
 | 
					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_KEY_RELEASE_MASK |
 | 
				
			||||||
                           GDK_BUTTON_PRESS_MASK |
 | 
					                           GDK_BUTTON_PRESS_MASK |
 | 
				
			||||||
                           GDK_BUTTON_RELEASE_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);
 | 
					    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);
 | 
					    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (event->type == GDK_TOUCH_BEGIN) {
 | 
					    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);
 | 
					        depress(self, event->x, event->y, event->time);
 | 
				
			||||||
        return TRUE;
 | 
					        return TRUE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (priv->sequence != event->sequence) {
 | 
					 | 
				
			||||||
        return FALSE;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (event->type == GDK_TOUCH_UPDATE) {
 | 
					    if (event->type == GDK_TOUCH_UPDATE) {
 | 
				
			||||||
        drag(self, event->x, event->y, event->time);
 | 
					        drag(self, event->x, event->y, event->time);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (event->type == GDK_TOUCH_END || event->type == GDK_TOUCH_CANCEL) {
 | 
					    if (event->type == GDK_TOUCH_END || event->type == GDK_TOUCH_CANCEL) {
 | 
				
			||||||
        // TODO: can the event have different coords than the previous update event?
 | 
					        // TODO: can the event have different coords than the previous update event?
 | 
				
			||||||
        release(self, event->time);
 | 
					        release(self, event->time);
 | 
				
			||||||
        priv->sequence = NULL;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user