libeek: Fix gtk keyboard rendering.
This commit is contained in:
@ -123,7 +123,8 @@ eek_gtk_keyboard_finalize (GObject *object)
|
|||||||
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(object);
|
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(object);
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
g_hash_table_unref (priv->key_surfaces);
|
cairo_surface_destroy (priv->keyboard_surface);
|
||||||
|
g_hash_table_destroy (priv->key_surfaces);
|
||||||
|
|
||||||
for (i = 0; i < EEK_KEYSYM_CATEGORY_LAST; i++)
|
for (i = 0; i < EEK_KEYSYM_CATEGORY_LAST; i++)
|
||||||
pango_font_description_free (priv->fonts[i]);
|
pango_font_description_free (priv->fonts[i]);
|
||||||
@ -464,8 +465,8 @@ redraw_key (cairo_t *cr,
|
|||||||
gdk_cairo_set_source_color (cr, &style->fg[state]);
|
gdk_cairo_set_source_color (cr, &style->fg[state]);
|
||||||
|
|
||||||
cairo_scale (cr,
|
cairo_scale (cr,
|
||||||
key_surface_scale[KEY_SURFACE_LARGE],
|
priv->scale * key_surface_scale[KEY_SURFACE_LARGE],
|
||||||
key_surface_scale[KEY_SURFACE_LARGE]);
|
priv->scale * key_surface_scale[KEY_SURFACE_LARGE]);
|
||||||
eek_draw_key_label (cr, key, priv->fonts);
|
eek_draw_key_label (cr, key, priv->fonts);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -492,11 +493,13 @@ on_key_released (EekKey *key, gpointer user_data)
|
|||||||
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(keyboard);
|
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(keyboard);
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
|
||||||
cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (priv->widget)));
|
|
||||||
if (priv->key) {
|
if (priv->key) {
|
||||||
|
cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (priv->widget)));
|
||||||
redraw_key (cr, priv->key, KEY_SURFACE_NORMAL, keyboard);
|
redraw_key (cr, priv->key, KEY_SURFACE_NORMAL, keyboard);
|
||||||
|
cairo_destroy (cr);
|
||||||
priv->key = NULL;
|
priv->key = NULL;
|
||||||
}
|
}
|
||||||
|
cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (priv->widget)));
|
||||||
redraw_key (cr, key, KEY_SURFACE_NORMAL, keyboard);
|
redraw_key (cr, key, KEY_SURFACE_NORMAL, keyboard);
|
||||||
cairo_destroy (cr);
|
cairo_destroy (cr);
|
||||||
}
|
}
|
||||||
@ -583,6 +586,7 @@ on_size_allocate (GtkWidget *widget,
|
|||||||
cairo_surface_destroy (priv->keyboard_surface);
|
cairo_surface_destroy (priv->keyboard_surface);
|
||||||
priv->keyboard_surface = NULL;
|
priv->keyboard_surface = NULL;
|
||||||
}
|
}
|
||||||
|
g_hash_table_remove_all (priv->key_surfaces);
|
||||||
|
|
||||||
eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
|
eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
|
||||||
priv->scale = allocation->width > allocation->height ?
|
priv->scale = allocation->width > allocation->height ?
|
||||||
|
|||||||
Reference in New Issue
Block a user