[gtk+] imcontext: Update to using GdkEvent API
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] imcontext: Update to using GdkEvent API
- Date: Tue, 19 Sep 2017 17:13:13 +0000 (UTC)
commit dee14dda8d05980f7998290c6e172580453813b6
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Aug 25 16:48:47 2017 +0200
imcontext: Update to using GdkEvent API
gtk/gtkimcontextsimple.c | 94 +++++++++++++++++++++++++++-------------------
gtk/gtkimmulticontext.c | 12 +++--
2 files changed, 62 insertions(+), 44 deletions(-)
---
diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c
index 031417c..04e5958 100644
--- a/gtk/gtkimcontextsimple.c
+++ b/gtk/gtkimcontextsimple.c
@@ -1036,7 +1036,8 @@ no_sequence_matches (GtkIMContextSimple *context_simple,
GtkIMContextSimplePrivate *priv = context_simple->priv;
GtkIMContext *context;
gunichar ch;
-
+ guint keyval;
+
context = GTK_IM_CONTEXT (context_simple);
/* No compose sequences found, check first if we have a partial
@@ -1061,16 +1062,16 @@ no_sequence_matches (GtkIMContextSimple *context_simple,
return gtk_im_context_filter_keypress (context, event);
}
- else
+ else if (gdk_event_get_keyval ((GdkEvent *) event, &keyval))
{
priv->compose_buffer[0] = 0;
if (n_compose > 1) /* Invalid sequence */
{
- beep_window (event->window);
+ beep_window (gdk_event_get_window ((GdkEvent *) event));
return TRUE;
}
- ch = gdk_keyval_to_unicode (event->keyval);
+ ch = gdk_keyval_to_unicode (keyval);
if (ch != 0 && !g_unichar_iscntrl (ch))
{
gtk_im_context_simple_commit_char (context, ch);
@@ -1079,6 +1080,8 @@ no_sequence_matches (GtkIMContextSimple *context_simple,
else
return FALSE;
}
+ else
+ return FALSE;
}
static gboolean
@@ -1092,21 +1095,25 @@ is_hex_keyval (guint keyval)
static guint
canonical_hex_keyval (GdkEventKey *event)
{
- GdkKeymap *keymap = gdk_keymap_get_for_display (gdk_window_get_display (event->window));
- guint keyval;
+ GdkWindow *window = gdk_event_get_window ((GdkEvent *) event);
+ GdkKeymap *keymap = gdk_keymap_get_for_display (gdk_window_get_display (window));
+ guint keyval, event_keyval;
guint *keyvals = NULL;
gint n_vals = 0;
gint i;
-
+
+ if (gdk_event_get_keyval ((GdkEvent *) event, &event_keyval))
+ return 0;
+
/* See if the keyval is already a hex digit */
- if (is_hex_keyval (event->keyval))
- return event->keyval;
+ if (is_hex_keyval (event_keyval))
+ return event_keyval;
/* See if this key would have generated a hex keyval in
* any other state, and return that hex keyval if so
*/
gdk_keymap_get_entries_for_keycode (keymap,
- event->hardware_keycode,
+ gdk_event_get_scancode ((GdkEvent *) event),
NULL,
&keyvals, &n_vals);
@@ -1136,7 +1143,10 @@ canonical_hex_keyval (GdkEventKey *event)
static guint
canonical_emoji_keyval (GdkEventKey *event)
{
- return event->keyval;
+ guint keyval;
+ gdk_event_get_keyval ((GdkEvent *) event, &keyval);
+
+ return keyval;
}
static gboolean
@@ -1145,7 +1155,8 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
{
GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
GtkIMContextSimplePrivate *priv = context_simple->priv;
- GdkDisplay *display = gdk_window_get_display (event->window);
+ GdkWindow *window = gdk_event_get_window ((GdkEvent *) event);
+ GdkDisplay *display = gdk_window_get_display (window);
GSList *tmp_list;
int n_compose = 0;
GdkModifierType hex_mod_mask;
@@ -1161,14 +1172,19 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
gboolean compose_finish;
gboolean compose_match;
gunichar output_char;
+ guint keyval, state;
while (priv->compose_buffer[n_compose] != 0)
n_compose++;
- if (event->type == GDK_KEY_RELEASE)
+ if (!gdk_event_get_keyval ((GdkEvent *) event, &keyval) ||
+ !gdk_event_get_state ((GdkEvent *) event, &state))
+ return GDK_EVENT_PROPAGATE;
+
+ if (gdk_event_get_event_type ((GdkEvent *) event) == GDK_KEY_RELEASE)
{
- if ((event->keyval == GDK_KEY_Control_L || event->keyval == GDK_KEY_Control_R ||
- event->keyval == GDK_KEY_Shift_L || event->keyval == GDK_KEY_Shift_R))
+ if ((keyval == GDK_KEY_Control_L || keyval == GDK_KEY_Control_R ||
+ keyval == GDK_KEY_Shift_L || keyval == GDK_KEY_Shift_R))
{
if ((priv->in_hex_sequence || priv->in_emoji_sequence) &&
priv->tentative_match &&
@@ -1189,7 +1205,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
else if (priv->in_hex_sequence)
{
/* invalid hex sequence */
- beep_window (event->window);
+ beep_window (window);
priv->tentative_match = 0;
priv->in_hex_sequence = FALSE;
@@ -1208,7 +1224,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
/* Ignore modifier key presses */
for (i = 0; i < G_N_ELEMENTS (gtk_compose_ignore); i++)
- if (event->keyval == gtk_compose_ignore[i])
+ if (keyval == gtk_compose_ignore[i])
return FALSE;
hex_mod_mask = gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display),
@@ -1218,16 +1234,16 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
if ((priv->in_hex_sequence || priv->in_emoji_sequence) && priv->modifiers_dropped)
have_hex_mods = TRUE;
else
- have_hex_mods = (event->state & (hex_mod_mask)) == hex_mod_mask;
- is_hex_start = event->keyval == GDK_KEY_U;
- is_emoji_start = (event->keyval == GDK_KEY_E) && !priv->in_hex_sequence;
- is_end = (event->keyval == GDK_KEY_space ||
- event->keyval == GDK_KEY_KP_Space ||
- event->keyval == GDK_KEY_Return ||
- event->keyval == GDK_KEY_ISO_Enter ||
- event->keyval == GDK_KEY_KP_Enter);
- is_backspace = event->keyval == GDK_KEY_BackSpace;
- is_escape = event->keyval == GDK_KEY_Escape;
+ have_hex_mods = (state & (hex_mod_mask)) == hex_mod_mask;
+ is_hex_start = keyval == GDK_KEY_U;
+ is_emoji_start = (keyval == GDK_KEY_E) && !priv->in_hex_sequence;
+ is_end = (keyval == GDK_KEY_space ||
+ keyval == GDK_KEY_KP_Space ||
+ keyval == GDK_KEY_Return ||
+ keyval == GDK_KEY_ISO_Enter ||
+ keyval == GDK_KEY_KP_Enter);
+ is_backspace = keyval == GDK_KEY_BackSpace;
+ is_escape = keyval == GDK_KEY_Escape;
hex_keyval = canonical_hex_keyval (event);
emoji_keyval = canonical_emoji_keyval (event);
@@ -1251,11 +1267,11 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display),
GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
- if (event->state & no_text_input_mask ||
+ if (state & no_text_input_mask ||
((priv->in_hex_sequence || priv->in_emoji_sequence) && priv->modifiers_dropped &&
- (event->keyval == GDK_KEY_Return ||
- event->keyval == GDK_KEY_ISO_Enter ||
- event->keyval == GDK_KEY_KP_Enter)))
+ (keyval == GDK_KEY_Return ||
+ keyval == GDK_KEY_ISO_Enter ||
+ keyval == GDK_KEY_KP_Enter)))
{
return FALSE;
}
@@ -1300,8 +1316,8 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
{
/* invalid hex sequence */
if (n_compose > 0)
- beep_window (event->window);
-
+ beep_window (window);
+
priv->tentative_match = 0;
priv->in_hex_sequence = FALSE;
priv->compose_buffer[0] = 0;
@@ -1349,7 +1365,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
else if (!is_end)
{
/* non-hex character in hex sequence */
- beep_window (event->window);
+ beep_window (window);
return TRUE;
}
}
@@ -1364,16 +1380,16 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
}
else
{
- beep_window (event->window);
+ beep_window (window);
return TRUE;
}
}
else
- priv->compose_buffer[n_compose++] = event->keyval;
+ priv->compose_buffer[n_compose++] = keyval;
if (n_compose == MAX(GTK_MAX_COMPOSE_LEN + 1, 9))
{
- beep_window (event->window);
+ beep_window (window);
priv->tentative_match = 0;
priv->in_hex_sequence = FALSE;
priv->in_emoji_sequence = FALSE;
@@ -1402,7 +1418,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
else
{
/* invalid hex sequence */
- beep_window (event->window);
+ beep_window (window);
priv->tentative_match = 0;
priv->in_hex_sequence = FALSE;
@@ -1412,7 +1428,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
}
else if ((priv->in_hex_sequence && !check_hex (context_simple, n_compose)) ||
(priv->in_emoji_sequence && !check_emoji (context_simple, n_compose)))
- beep_window (event->window);
+ beep_window (window);
g_signal_emit_by_name (context_simple, "preedit-changed");
diff --git a/gtk/gtkimmulticontext.c b/gtk/gtkimmulticontext.c
index 978f32f..d32db00 100644
--- a/gtk/gtkimmulticontext.c
+++ b/gtk/gtkimmulticontext.c
@@ -353,28 +353,30 @@ gtk_im_multicontext_filter_keypress (GtkIMContext *context,
{
GtkIMMulticontext *multicontext = GTK_IM_MULTICONTEXT (context);
GtkIMContext *slave = gtk_im_multicontext_get_slave (multicontext);
+ guint keyval, state;
if (slave)
{
return gtk_im_context_filter_keypress (slave, event);
}
- else
+ else if (gdk_event_get_keyval ((GdkEvent *) event, &keyval) &&
+ gdk_event_get_state ((GdkEvent *) event, &state))
{
GdkDisplay *display;
GdkModifierType no_text_input_mask;
- display = gdk_window_get_display (event->window);
+ display = gdk_window_get_display (gdk_event_get_window ((GdkEvent *) event));
no_text_input_mask =
gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display),
GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
- if (event->type == GDK_KEY_PRESS &&
- (event->state & no_text_input_mask) == 0)
+ if (gdk_event_get_event_type ((GdkEvent *) event) == GDK_KEY_PRESS &&
+ (state & no_text_input_mask) == 0)
{
gunichar ch;
- ch = gdk_keyval_to_unicode (event->keyval);
+ ch = gdk_keyval_to_unicode (keyval);
if (ch != 0 && !g_unichar_iscntrl (ch))
{
gint len;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]