summaryrefslogtreecommitdiff
path: root/gtk/gtkcellrendereraccel.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2009-08-23 08:59:34 +0200
committerKristian Rietveld <kris@gtk.org>2009-08-23 08:59:34 +0200
commit6320b12e8c63bd13ca33c5d206d9d2f322f8b21d (patch)
tree73732a98a4cc5b8f3d53f7e101f90ffd18617d69 /gtk/gtkcellrendereraccel.c
parentf84df976a7f9aea5e9311ab53745f9c127b5a590 (diff)
downloadgtk+-6320b12e8c63bd13ca33c5d206d9d2f322f8b21d.tar.gz
Bug 526149 - GtkCellRendererAccel editing conflicts with mnemonics
GtkCellRendererAccel also needs to acquire the GTK+ grab in addition to a GDK keyboard grab. With the GDK keyboard grab, KeyPress and KeyRelease events are delivered as usual, although we only want to receive them for our grab widget.
Diffstat (limited to 'gtk/gtkcellrendereraccel.c')
-rw-r--r--gtk/gtkcellrendereraccel.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gtk/gtkcellrendereraccel.c b/gtk/gtkcellrendereraccel.c
index f3e229688b..4b25289613 100644
--- a/gtk/gtkcellrendereraccel.c
+++ b/gtk/gtkcellrendereraccel.c
@@ -470,6 +470,7 @@ grab_key_callback (GtkWidget *widget,
edited = TRUE;
out:
+ gtk_grab_remove (accel->grab_widget);
gdk_display_keyboard_ungrab (display, event->time);
gdk_display_pointer_ungrab (display, event->time);
@@ -497,6 +498,7 @@ ungrab_stuff (GtkWidget *widget,
{
GdkDisplay *display = gtk_widget_get_display (widget);
+ gtk_grab_remove (accel->grab_widget);
gdk_display_keyboard_ungrab (display, GDK_CURRENT_TIME);
gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME);
@@ -606,6 +608,8 @@ gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
gtk_widget_show_all (accel->edit_widget);
+ gtk_grab_add (accel->grab_widget);
+
g_signal_connect (G_OBJECT (accel->edit_widget), "unrealize",
G_CALLBACK (ungrab_stuff), accel);