forked from AuroraMiddleware/gtk
Remove special casing of menu key events as it's no longer necessary;
2008-05-12 Richard Hult <richard@imendio.com> * gdk/quartz/gdkevents-quartz.c: * gdk/quartz/gdkquartz.h: Remove special casing of menu key events as it's no longer necessary; instead the added quartz API to get the nsevent from an event should be used. Also move the global filter up so it's done before the check for window-less events. svn path=/trunk/; revision=20100
This commit is contained in:
parent
b372221dfd
commit
801f7bb44a
@ -1,3 +1,11 @@
|
|||||||
|
2008-05-12 Richard Hult <richard@imendio.com>
|
||||||
|
|
||||||
|
* gdk/quartz/gdkevents-quartz.c:
|
||||||
|
* gdk/quartz/gdkquartz.h: Remove special casing of menu key events
|
||||||
|
as it's no longer necessary; instead the added quartz API to get
|
||||||
|
the nsevent from an event should be used. Also move the global
|
||||||
|
filter up so it's done before the check for window-less events.
|
||||||
|
|
||||||
2008-05-12 Tor Lillqvist <tml@novell.com>
|
2008-05-12 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
Bug 532558 - Cannot build dll when using separate builddir
|
Bug 532558 - Cannot build dll when using separate builddir
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
||||||
* Copyright (C) 1998-2002 Tor Lillqvist
|
* Copyright (C) 1998-2002 Tor Lillqvist
|
||||||
* Copyright (C) 2005-2007 Imendio AB
|
* Copyright (C) 2005-2008 Imendio AB
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
@ -105,17 +105,12 @@ which_window_is_this (GdkWindow *window)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A category that exposes the protected carbon event for an NSEvent. */
|
NSEvent *
|
||||||
@interface NSEvent (GdkQuartzNSEvent)
|
gdk_quartz_event_get_nsevent (GdkEvent *event)
|
||||||
- (void *)gdk_quartz_event_ref;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation NSEvent (GdkQuartzNSEvent)
|
|
||||||
- (void *)gdk_quartz_event_ref
|
|
||||||
{
|
{
|
||||||
return _eventRef;
|
/* FIXME: If the event here is unallocated, we crash. */
|
||||||
|
return ((GdkEventPrivate *) event)->windowing_data;
|
||||||
}
|
}
|
||||||
@end
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_events_init (void)
|
_gdk_events_init (void)
|
||||||
@ -1697,46 +1692,6 @@ gdk_event_translate (NSEvent *nsevent)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Special-case menu shortcut events. We create command events for
|
|
||||||
* those and forward to the corresponding menu.
|
|
||||||
*/
|
|
||||||
if ((!_gdk_quartz_keyboard_grab_window ||
|
|
||||||
(_gdk_quartz_keyboard_grab_window && keyboard_grab_owner_events)) &&
|
|
||||||
[nsevent type] == NSKeyDown)
|
|
||||||
{
|
|
||||||
EventRef event_ref;
|
|
||||||
MenuRef menu_ref;
|
|
||||||
MenuItemIndex index;
|
|
||||||
|
|
||||||
event_ref = [nsevent gdk_quartz_event_ref];
|
|
||||||
if (IsMenuKeyEvent (NULL, event_ref,
|
|
||||||
kMenuEventQueryOnly,
|
|
||||||
&menu_ref, &index))
|
|
||||||
{
|
|
||||||
MenuCommand menu_command;
|
|
||||||
HICommand hi_command;
|
|
||||||
|
|
||||||
if (GetMenuItemCommandID (menu_ref, index, &menu_command) != noErr)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
hi_command.commandID = menu_command;
|
|
||||||
hi_command.menu.menuRef = menu_ref;
|
|
||||||
hi_command.menu.menuItemIndex = index;
|
|
||||||
|
|
||||||
CreateEvent (NULL, kEventClassCommand, kEventCommandProcess,
|
|
||||||
0, kEventAttributeUserEvent, &event_ref);
|
|
||||||
SetEventParameter (event_ref, kEventParamDirectObject,
|
|
||||||
typeHICommand,
|
|
||||||
sizeof (HICommand), &hi_command);
|
|
||||||
|
|
||||||
SendEventToEventTarget (event_ref, GetMenuEventTarget (menu_ref));
|
|
||||||
|
|
||||||
ReleaseEvent (event_ref);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle our generated "fake" crossing events. */
|
/* Handle our generated "fake" crossing events. */
|
||||||
if ([nsevent type] == NSApplicationDefined &&
|
if ([nsevent type] == NSApplicationDefined &&
|
||||||
[nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_FAKE_CROSSING)
|
[nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_FAKE_CROSSING)
|
||||||
@ -1766,6 +1721,19 @@ gdk_event_translate (NSEvent *nsevent)
|
|||||||
|
|
||||||
nswindow = [nsevent window];
|
nswindow = [nsevent window];
|
||||||
|
|
||||||
|
/* Apply any global filters. */
|
||||||
|
if (_gdk_default_filters)
|
||||||
|
{
|
||||||
|
result = apply_filters (NULL, nsevent, _gdk_default_filters);
|
||||||
|
|
||||||
|
/* If result is GDK_FILTER_CONTINUE, we continue as if nothing
|
||||||
|
* happened. If it is GDK_FILTER_REMOVE,
|
||||||
|
* we return TRUE and won't send the message to Quartz.
|
||||||
|
*/
|
||||||
|
if (result == GDK_FILTER_REMOVE)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Ignore events for no window or ones not created by GDK. */
|
/* Ignore events for no window or ones not created by GDK. */
|
||||||
if (!nswindow || ![[nswindow contentView] isKindOfClass:[GdkQuartzView class]])
|
if (!nswindow || ![[nswindow contentView] isKindOfClass:[GdkQuartzView class]])
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -1780,19 +1748,6 @@ gdk_event_translate (NSEvent *nsevent)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Apply any global filters. */
|
|
||||||
if (_gdk_default_filters)
|
|
||||||
{
|
|
||||||
result = apply_filters (NULL, nsevent, _gdk_default_filters);
|
|
||||||
|
|
||||||
/* If result is GDK_FILTER_CONTINUE, we continue as if nothing
|
|
||||||
* happened. If it is GDK_FILTER_REMOVE,
|
|
||||||
* we return TRUE and won't send the message to Quartz.
|
|
||||||
*/
|
|
||||||
if (result == GDK_FILTER_REMOVE)
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Take care of NSMouseEntered/Exited events and mouse movements
|
/* Take care of NSMouseEntered/Exited events and mouse movements
|
||||||
* events and emit the right GDK crossing events.
|
* events and emit the right GDK crossing events.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user