summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--src/keybindings.c58
2 files changed, 36 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index 32214b7..903bd3a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-01-15 Havoc Pennington <hp@redhat.com>
+
+ * src/keybindings.c (handle_tab_backward): fix crash
+ when grab failed due to another operation in progress
+ (handle_tab_forward): fix crash when grab failed
+
2002-01-10 Havoc Pennington <hp@pobox.com>
* src/frame.c (meta_window_destroy_frame): only bump
diff --git a/src/keybindings.c b/src/keybindings.c
index 8d2ce2a..c1b0f9a 100644
--- a/src/keybindings.c
+++ b/src/keybindings.c
@@ -980,20 +980,21 @@ handle_tab_forward (MetaDisplay *display,
{
meta_verbose ("Starting tab forward, showing popup\n");
- meta_display_begin_grab_op (window->display,
- display->focus_window ?
- display->focus_window : window,
- META_GRAB_OP_KEYBOARD_TABBING,
- FALSE,
- 0, 0,
- event->xkey.time,
- 0, 0);
-
- meta_ui_tab_popup_select (window->screen->tab_popup,
- window->xwindow);
- /* only after selecting proper window */
- meta_ui_tab_popup_set_showing (window->screen->tab_popup,
- TRUE);
+ if (meta_display_begin_grab_op (window->display,
+ display->focus_window ?
+ display->focus_window : window,
+ META_GRAB_OP_KEYBOARD_TABBING,
+ FALSE,
+ 0, 0,
+ event->xkey.time,
+ 0, 0))
+ {
+ meta_ui_tab_popup_select (window->screen->tab_popup,
+ window->xwindow);
+ /* only after selecting proper window */
+ meta_ui_tab_popup_set_showing (window->screen->tab_popup,
+ TRUE);
+ }
}
}
@@ -1040,20 +1041,21 @@ handle_tab_backward (MetaDisplay *display,
{
meta_verbose ("Starting tab backward, showing popup\n");
- meta_display_begin_grab_op (window->display,
- display->focus_window ?
- display->focus_window : window,
- META_GRAB_OP_KEYBOARD_TABBING,
- FALSE,
- 0, 0,
- event->xkey.time,
- 0, 0);
-
- meta_ui_tab_popup_select (window->screen->tab_popup,
- window->xwindow);
- /* only after selecting proper window */
- meta_ui_tab_popup_set_showing (window->screen->tab_popup,
- TRUE);
+ if (meta_display_begin_grab_op (window->display,
+ display->focus_window ?
+ display->focus_window : window,
+ META_GRAB_OP_KEYBOARD_TABBING,
+ FALSE,
+ 0, 0,
+ event->xkey.time,
+ 0, 0))
+ {
+ meta_ui_tab_popup_select (window->screen->tab_popup,
+ window->xwindow);
+ /* only after selecting proper window */
+ meta_ui_tab_popup_set_showing (window->screen->tab_popup,
+ TRUE);
+ }
}
}