Center the keyboard in landscape orientation
This commit is contained in:
		@ -57,6 +57,9 @@ typedef struct _EekGtkKeyboardPrivate
 | 
				
			|||||||
    EekKeyboard *keyboard;
 | 
					    EekKeyboard *keyboard;
 | 
				
			||||||
    EekTheme *theme;
 | 
					    EekTheme *theme;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int origin_x;
 | 
				
			||||||
 | 
					    int origin_y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GdkEventSequence *sequence; // unowned reference
 | 
					    GdkEventSequence *sequence; // unowned reference
 | 
				
			||||||
} EekGtkKeyboardPrivate;
 | 
					} EekGtkKeyboardPrivate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -108,6 +111,9 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    gtk_widget_get_allocation (self, &allocation);
 | 
					    gtk_widget_get_allocation (self, &allocation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_save (cr);
 | 
				
			||||||
 | 
					    cairo_translate (cr, priv->origin_x, priv->origin_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!priv->renderer) {
 | 
					    if (!priv->renderer) {
 | 
				
			||||||
        PangoContext *pcontext;
 | 
					        PangoContext *pcontext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -125,6 +131,8 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    eek_renderer_render_keyboard (priv->renderer, cr);
 | 
					    eek_renderer_render_keyboard (priv->renderer, cr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_restore (cr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* redraw pressed key */
 | 
					    /* redraw pressed key */
 | 
				
			||||||
    list = eek_keyboard_get_pressed_keys (priv->keyboard);
 | 
					    list = eek_keyboard_get_pressed_keys (priv->keyboard);
 | 
				
			||||||
    for (head = list; head; head = g_list_next (head)) {
 | 
					    for (head = list; head; head = g_list_next (head)) {
 | 
				
			||||||
@ -149,6 +157,9 @@ eek_gtk_keyboard_real_size_allocate (GtkWidget     *self,
 | 
				
			|||||||
    EekGtkKeyboardPrivate *priv =
 | 
					    EekGtkKeyboardPrivate *priv =
 | 
				
			||||||
	    eek_gtk_keyboard_get_instance_private (EEK_GTK_KEYBOARD (self));
 | 
						    eek_gtk_keyboard_get_instance_private (EEK_GTK_KEYBOARD (self));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    priv->origin_x = (allocation->width - 360) / 2;
 | 
				
			||||||
 | 
					    priv->origin_y = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (priv->renderer)
 | 
					    if (priv->renderer)
 | 
				
			||||||
        eek_renderer_set_allocation_size (priv->renderer,
 | 
					        eek_renderer_set_allocation_size (priv->renderer,
 | 
				
			||||||
                                          allocation->width,
 | 
					                                          allocation->width,
 | 
				
			||||||
@ -161,7 +172,9 @@ eek_gtk_keyboard_real_size_allocate (GtkWidget     *self,
 | 
				
			|||||||
static void depress(EekGtkKeyboard *self,
 | 
					static void depress(EekGtkKeyboard *self,
 | 
				
			||||||
                    gdouble x, gdouble y, guint32 time) {
 | 
					                    gdouble x, gdouble y, guint32 time) {
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
					    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
				
			||||||
    EekKey *key = eek_renderer_find_key_by_position (priv->renderer, x, y);
 | 
					    EekKey *key = eek_renderer_find_key_by_position (priv->renderer,
 | 
				
			||||||
 | 
					        x - priv->origin_x, y - priv->origin_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (key) {
 | 
					    if (key) {
 | 
				
			||||||
        eek_keyboard_press_key(priv->keyboard, key, time);
 | 
					        eek_keyboard_press_key(priv->keyboard, key, time);
 | 
				
			||||||
        on_key_pressed(key, self);
 | 
					        on_key_pressed(key, self);
 | 
				
			||||||
@ -171,7 +184,8 @@ static void depress(EekGtkKeyboard *self,
 | 
				
			|||||||
static void drag(EekGtkKeyboard *self,
 | 
					static void drag(EekGtkKeyboard *self,
 | 
				
			||||||
                 gdouble x, gdouble y, guint32 time) {
 | 
					                 gdouble x, gdouble y, guint32 time) {
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
					    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
				
			||||||
    EekKey *key = eek_renderer_find_key_by_position (priv->renderer, x, y);
 | 
					    EekKey *key = eek_renderer_find_key_by_position (priv->renderer,
 | 
				
			||||||
 | 
					        x - priv->origin_x, y - priv->origin_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (key) {
 | 
					    if (key) {
 | 
				
			||||||
        GList *list, *head;
 | 
					        GList *list, *head;
 | 
				
			||||||
@ -488,6 +502,8 @@ render_pressed_key (GtkWidget *widget,
 | 
				
			|||||||
    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
 | 
					    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
 | 
				
			||||||
    cairo_t           *cr      = gdk_drawing_context_get_cairo_context (context);
 | 
					    cairo_t           *cr      = gdk_drawing_context_get_cairo_context (context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_translate (cr, priv->origin_x, priv->origin_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
					    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
				
			||||||
    magnify_bounds (widget, &bounds, &large_bounds, 1.5);
 | 
					    magnify_bounds (widget, &bounds, &large_bounds, 1.5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -519,6 +535,8 @@ render_locked_key (GtkWidget *widget,
 | 
				
			|||||||
    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
 | 
					    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
 | 
				
			||||||
    cairo_t           *cr      = gdk_drawing_context_get_cairo_context (context);
 | 
					    cairo_t           *cr      = gdk_drawing_context_get_cairo_context (context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_translate (cr, priv->origin_x, priv->origin_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
					    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cairo_translate (cr, bounds.x, bounds.y);
 | 
					    cairo_translate (cr, bounds.x, bounds.y);
 | 
				
			||||||
@ -542,6 +560,8 @@ render_released_key (GtkWidget *widget,
 | 
				
			|||||||
    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
 | 
					    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
 | 
				
			||||||
    cairo_t           *cr      = gdk_drawing_context_get_cairo_context (context);
 | 
					    cairo_t           *cr      = gdk_drawing_context_get_cairo_context (context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_translate (cr, priv->origin_x, priv->origin_y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
					    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
				
			||||||
    magnify_bounds (widget, &bounds, &large_bounds, 1.5);
 | 
					    magnify_bounds (widget, &bounds, &large_bounds, 1.5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user