Skip to content

Commit

Permalink
Moved some code from do_queued_events() to a better location in [FLAp…
Browse files Browse the repository at this point in the history
…plication sendEvent:]

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8014 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
  • Loading branch information
Manolo Gouy authored and Manolo Gouy committed Dec 12, 2010
1 parent 82ff3ab commit ab606d1
Showing 1 changed file with 24 additions and 28 deletions.
52 changes: 24 additions & 28 deletions src/Fl_cocoa.mm
Expand Up @@ -676,22 +676,7 @@ static double do_queued_events( double time = 0.0 )
untilDate:[NSDate dateWithTimeIntervalSinceNow:time]
inMode:NSDefaultRunLoopMode dequeue:YES];
if (event != nil) {
BOOL needSendEvent = YES;
if ([event type] == NSLeftMouseDown) {
Fl_Window *grab = Fl::grab();
if (grab && grab != [(FLWindow *)[event window] getFl_Window]) {
// a click event out of a menu window, so we should close this menu
// done here to catch also clicks on window title bar/resize box
cocoaMouseHandler(event);
}
}
else if ([event type] == NSApplicationDefined) {
if ([event subtype] == FLTKDataReadyEvent) {
processFLTKEvent();
}
needSendEvent = NO;
}
if (needSendEvent) [NSApp sendEvent:event];
[NSApp sendEvent:event]; // reimplemented in [FLApplication sendevent:]
}
fl_lock_function();

Expand Down Expand Up @@ -1332,20 +1317,31 @@ @interface FLApplication : NSApplication
- (void)sendEvent:(NSEvent *)theEvent;
@end
@implementation FLApplication
// The default sendEvent turns key downs into performKeyEquivalent when
// modifiers are down, but swallows the key up if the modifiers include
// command. This one makes all modifiers consistent by always sending key ups.
// FLView treats performKeyEquivalent to keyDown, but performKeyEquivalent is
// still needed for the system menu.
- (void)sendEvent:(NSEvent *)theEvent
{
NSEventType type = [theEvent type];
NSWindow *key = [self keyWindow];
if (key && type == NSKeyUp) {
[key sendEvent:theEvent];
} else {
[super sendEvent:theEvent];
}
NSEventType type = [theEvent type];
if (type == NSLeftMouseDown) {
Fl_Window *grab = Fl::grab();
if (grab && grab != [(FLWindow *)[theEvent window] getFl_Window]) {
// a click event out of a menu window, so we should close this menu
// done here to catch also clicks on window title bar/resize box
cocoaMouseHandler(theEvent);
}
} else if (type == NSApplicationDefined) {
if ([theEvent subtype] == FLTKDataReadyEvent) {
processFLTKEvent();
}
return;
} else if (type == NSKeyUp) {
// The default sendEvent turns key downs into performKeyEquivalent when
// modifiers are down, but swallows the key up if the modifiers include
// command. This one makes all modifiers consistent by always sending key ups.
// FLView treats performKeyEquivalent to keyDown, but performKeyEquivalent is
// still needed for the system menu.
[[self keyWindow] sendEvent:theEvent];
return;
}
[super sendEvent:theEvent];
}
@end

Expand Down

0 comments on commit ab606d1

Please sign in to comment.