diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-08-25 16:45:20 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-09-19 18:39:02 +0200 |
commit | 75d81757151d654b1d29ee66e5d123d82eb91029 (patch) | |
tree | 2b8fe34086b655d65a4796969078a6767837f5e9 /gtk/gtkentrycompletion.c | |
parent | e46a1d32f04281bd35c4e260537b97be159725bf (diff) | |
download | gtk+-75d81757151d654b1d29ee66e5d123d82eb91029.tar.gz |
entrycompletion: Update to using GdkEvent API
Diffstat (limited to 'gtk/gtkentrycompletion.c')
-rw-r--r-- | gtk/gtkentrycompletion.c | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index b18616b162..848f6879ef 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -950,13 +950,14 @@ gtk_entry_completion_list_button_press (GtkWidget *widget, { GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (user_data); GtkTreePath *path = NULL; + gdouble x, y; - if (!gtk_widget_get_mapped (completion->priv->popup_window)) + if (!gtk_widget_get_mapped (completion->priv->popup_window) || + !gdk_event_get_coords ((GdkEvent *) event, &x, &y)) return FALSE; if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), - event->x, event->y, - &path, NULL, NULL, NULL)) + x, y, &path, NULL, NULL, NULL)) { GtkTreeIter iter; gboolean entry_set; @@ -993,15 +994,16 @@ gtk_entry_completion_action_button_press (GtkWidget *widget, { GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (user_data); GtkTreePath *path = NULL; + gdouble x, y; - if (!gtk_widget_get_mapped (completion->priv->popup_window)) + if (!gtk_widget_get_mapped (completion->priv->popup_window) || + !gdk_event_get_coords ((GdkEvent *) event, &x, &y)) return FALSE; gtk_entry_reset_im_context (GTK_ENTRY (completion->priv->entry)); if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), - event->x, event->y, - &path, NULL, NULL, NULL)) + x, y, &path, NULL, NULL, NULL)) { g_signal_emit (completion, entry_completion_signals[ACTION_ACTIVATED], 0, gtk_tree_path_get_indices (path)[0]); @@ -2221,14 +2223,16 @@ gtk_entry_completion_key_press (GtkWidget *widget, { gint matches, actions = 0; GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (user_data); + guint keyval; - if (!completion->priv->popup_completion) + if (!completion->priv->popup_completion || + !gdk_event_get_keyval ((GdkEvent *) event, &keyval)) return FALSE; - if (event->keyval == GDK_KEY_Return || - event->keyval == GDK_KEY_KP_Enter || - event->keyval == GDK_KEY_ISO_Enter || - event->keyval == GDK_KEY_Escape) + if (keyval == GDK_KEY_Return || + keyval == GDK_KEY_KP_Enter || + keyval == GDK_KEY_ISO_Enter || + keyval == GDK_KEY_Escape) { if (completion->priv->completion_timeout) { @@ -2245,25 +2249,25 @@ gtk_entry_completion_key_press (GtkWidget *widget, if (completion->priv->actions) actions = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->actions), NULL); - if (keyval_is_cursor_move (event->keyval)) + if (keyval_is_cursor_move (keyval)) { GtkTreePath *path = NULL; - if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_KP_Up) + if (keyval == GDK_KEY_Up || keyval == GDK_KEY_KP_Up) { if (completion->priv->current_selected < 0) completion->priv->current_selected = matches + actions - 1; else completion->priv->current_selected--; } - else if (event->keyval == GDK_KEY_Down || event->keyval == GDK_KEY_KP_Down) + else if (keyval == GDK_KEY_Down || keyval == GDK_KEY_KP_Down) { if (completion->priv->current_selected < matches + actions - 1) completion->priv->current_selected++; else completion->priv->current_selected = -1; } - else if (event->keyval == GDK_KEY_Page_Up) + else if (keyval == GDK_KEY_Page_Up) { if (completion->priv->current_selected < 0) completion->priv->current_selected = matches + actions - 1; @@ -2282,7 +2286,7 @@ gtk_entry_completion_key_press (GtkWidget *widget, completion->priv->current_selected = matches - 1; } } - else if (event->keyval == GDK_KEY_Page_Down) + else if (keyval == GDK_KEY_Page_Down) { if (completion->priv->current_selected < 0) completion->priv->current_selected = 0; @@ -2368,11 +2372,11 @@ gtk_entry_completion_key_press (GtkWidget *widget, return TRUE; } - else if (event->keyval == GDK_KEY_Escape || - event->keyval == GDK_KEY_Left || - event->keyval == GDK_KEY_KP_Left || - event->keyval == GDK_KEY_Right || - event->keyval == GDK_KEY_KP_Right) + else if (keyval == GDK_KEY_Escape || + keyval == GDK_KEY_Left || + keyval == GDK_KEY_KP_Left || + keyval == GDK_KEY_Right || + keyval == GDK_KEY_KP_Right) { gboolean retval = TRUE; @@ -2387,7 +2391,7 @@ gtk_entry_completion_key_press (GtkWidget *widget, else if (completion->priv->inline_selection) { /* Escape rejects the tentative completion */ - if (event->keyval == GDK_KEY_Escape) + if (keyval == GDK_KEY_Escape) { if (completion->priv->completion_prefix) gtk_entry_set_text (GTK_ENTRY (completion->priv->entry), @@ -2397,9 +2401,9 @@ gtk_entry_completion_key_press (GtkWidget *widget, } /* Move the cursor to the end for Right/Esc */ - if (event->keyval == GDK_KEY_Right || - event->keyval == GDK_KEY_KP_Right || - event->keyval == GDK_KEY_Escape) + if (keyval == GDK_KEY_Right || + keyval == GDK_KEY_KP_Right || + keyval == GDK_KEY_Escape) gtk_editable_set_position (GTK_EDITABLE (widget), -1); /* Let the default keybindings run for Left, i.e. either move to the * * previous character or select word if a modifier is used */ @@ -2416,9 +2420,9 @@ keypress_completion_out: return retval; } - else if (event->keyval == GDK_KEY_Tab || - event->keyval == GDK_KEY_KP_Tab || - event->keyval == GDK_KEY_ISO_Left_Tab) + else if (keyval == GDK_KEY_Tab || + keyval == GDK_KEY_KP_Tab || + keyval == GDK_KEY_ISO_Left_Tab) { gtk_entry_reset_im_context (GTK_ENTRY (widget)); _gtk_entry_completion_popdown (completion); @@ -2428,9 +2432,9 @@ keypress_completion_out: return FALSE; } - else if (event->keyval == GDK_KEY_ISO_Enter || - event->keyval == GDK_KEY_KP_Enter || - event->keyval == GDK_KEY_Return) + else if (keyval == GDK_KEY_ISO_Enter || + keyval == GDK_KEY_KP_Enter || + keyval == GDK_KEY_Return) { GtkTreeIter iter; GtkTreeModel *model = NULL; |