Fix "keysym-index-changed" callback of EekGtkKeyboard.
This commit is contained in:
@ -64,6 +64,8 @@ static void on_keysym_index_changed (EekKeyboard *keyboard,
|
|||||||
gint group,
|
gint group,
|
||||||
gint level,
|
gint level,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
static void render_pressed_key (GtkWidget *widget,
|
||||||
|
EekKey *key);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eek_gtk_keyboard_real_realize (GtkWidget *self)
|
eek_gtk_keyboard_real_realize (GtkWidget *self)
|
||||||
@ -113,6 +115,10 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
|
|||||||
|
|
||||||
eek_renderer_render_keyboard (priv->renderer, cr);
|
eek_renderer_render_keyboard (priv->renderer, cr);
|
||||||
|
|
||||||
|
/* redraw dragged key */
|
||||||
|
if (priv->dragged_key)
|
||||||
|
render_pressed_key (self, priv->dragged_key);
|
||||||
|
|
||||||
#if GTK_CHECK_VERSION (2, 91, 2)
|
#if GTK_CHECK_VERSION (2, 91, 2)
|
||||||
GTK_WIDGET_CLASS (eek_gtk_keyboard_parent_class)->draw (self, cr);
|
GTK_WIDGET_CLASS (eek_gtk_keyboard_parent_class)->draw (self, cr);
|
||||||
#endif /* GTK_CHECK_VERSION (2, 91, 2) */
|
#endif /* GTK_CHECK_VERSION (2, 91, 2) */
|
||||||
@ -289,18 +295,12 @@ magnify_bounds (EekBounds *bounds, EekBounds *large_bounds, gdouble scale)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_key_pressed (EekKeyboard *keyboard,
|
render_pressed_key (GtkWidget *widget,
|
||||||
EekKey *key,
|
EekKey *key)
|
||||||
gpointer user_data)
|
|
||||||
{
|
{
|
||||||
GtkWidget *widget = user_data;
|
|
||||||
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
|
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
|
||||||
cairo_t *cr;
|
|
||||||
EekBounds bounds, large_bounds;
|
EekBounds bounds, large_bounds;
|
||||||
|
cairo_t *cr;
|
||||||
/* renderer may have not been set yet if the widget is a popup */
|
|
||||||
if (!priv->renderer)
|
|
||||||
return;
|
|
||||||
|
|
||||||
cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
|
cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
|
||||||
|
|
||||||
@ -312,6 +312,21 @@ on_key_pressed (EekKeyboard *keyboard,
|
|||||||
cairo_destroy (cr);
|
cairo_destroy (cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_key_pressed (EekKeyboard *keyboard,
|
||||||
|
EekKey *key,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GtkWidget *widget = user_data;
|
||||||
|
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
|
||||||
|
|
||||||
|
/* renderer may have not been set yet if the widget is a popup */
|
||||||
|
if (!priv->renderer)
|
||||||
|
return;
|
||||||
|
|
||||||
|
render_pressed_key (widget, key);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_key_released (EekKeyboard *keyboard,
|
on_key_released (EekKeyboard *keyboard,
|
||||||
EekKey *key,
|
EekKey *key,
|
||||||
@ -347,18 +362,6 @@ on_keysym_index_changed (EekKeyboard *keyboard,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkWidget *widget = user_data;
|
GtkWidget *widget = user_data;
|
||||||
EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
|
|
||||||
cairo_t *cr;
|
|
||||||
|
|
||||||
cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
|
gtk_widget_queue_draw (widget);
|
||||||
g_signal_emit_by_name (widget, "draw", cr);
|
|
||||||
cairo_destroy (cr);
|
|
||||||
|
|
||||||
/* redraw dragged key */
|
|
||||||
if (priv->dragged_key) {
|
|
||||||
guint keysym;
|
|
||||||
|
|
||||||
keysym = eek_key_get_keysym (priv->dragged_key);
|
|
||||||
on_key_pressed (keyboard, priv->dragged_key, NULL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user