filter out key events that happen on popup menus etc.
2002-08-10 Havoc Pennington <hp@pobox.com> * src/keybindings.c (meta_display_process_key_event): filter out key events that happen on popup menus etc. * src/ui.c (meta_ui_window_is_widget): new function to check whether a window belongs to a GtkWidget such as the popup menu * src/prefs.c (change_notify): put in a no-op line for AIX compiler, #84252
This commit is contained in:
parent
b78ad2e12d
commit
4c3a20c3f2
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2002-08-10 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* src/keybindings.c (meta_display_process_key_event): filter out
|
||||
key events that happen on popup menus etc.
|
||||
|
||||
* src/ui.c (meta_ui_window_is_widget): new function to check
|
||||
whether a window belongs to a GtkWidget such as the popup menu
|
||||
|
||||
* src/prefs.c (change_notify): put in a no-op line for AIX
|
||||
compiler, #84252
|
||||
|
||||
2002-08-10 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* src/window.c (update_resize): track time to avoid sending a
|
||||
|
@ -1277,6 +1277,11 @@ meta_display_process_key_event (MetaDisplay *display,
|
||||
if (screen == NULL)
|
||||
return; /* event window is destroyed */
|
||||
|
||||
/* ignore key events on popup menus and such. */
|
||||
if (window == NULL &&
|
||||
meta_ui_window_is_widget (screen->ui, event->xany.window))
|
||||
return;
|
||||
|
||||
/* window may be NULL */
|
||||
|
||||
keysym = XKeycodeToKeysym (display->xdisplay, event->xkey.keycode, 0);
|
||||
|
@ -542,6 +542,7 @@ change_notify (GConfClient *client,
|
||||
|
||||
out:
|
||||
/* nothing */
|
||||
return; /* AIX compiler wants something after a label like out: */
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
19
src/ui.c
19
src/ui.c
@ -662,3 +662,22 @@ meta_ui_parse_accelerator (const char *accel,
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_ui_window_is_widget (MetaUI *ui,
|
||||
Window xwindow)
|
||||
{
|
||||
GdkWindow *window;
|
||||
|
||||
window = gdk_xid_table_lookup (xwindow);
|
||||
|
||||
if (window &&
|
||||
gdk_window_get_window_type (window) != GDK_WINDOW_FOREIGN)
|
||||
{
|
||||
void *user_data = NULL;
|
||||
gdk_window_get_user_data (window, &user_data);
|
||||
return user_data != NULL;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user