diff -r 0b8ac9d6d473 -r a80ba8741be6 ui/cocoa/toolkit.m --- a/ui/cocoa/toolkit.m Mon May 19 21:15:43 2014 +0200 +++ b/ui/cocoa/toolkit.m Tue May 20 13:29:53 2014 +0200 @@ -238,8 +238,7 @@ - (BOOL)handleStateEvent:(id)sender { NSWindow *activeWindow = [NSApp keyWindow]; - NSMenuItem *item = (NSMenuItem*)sender; - int state = [item state] ? NSOffState : NSOnState; + int state = [sender state] ? NSOffState : NSOnState; UiEvent event; event.intval = state; @@ -248,9 +247,13 @@ event.obj = [(UiCocoaWindow*)activeWindow object]; event.window = event.obj->window; event.document = event.obj->ctx->document; - // update state in window data + // if the sender is a menu item, we have to save the state for this + // window UiMenuItem *wmi = [(UiCocoaWindow*)activeWindow getMenuItem: sender]; - wmi->state = state; + if(wmi) { + // update state in window data + wmi->state = state; + } } else { event.window = NULL; event.document = NULL; @@ -258,7 +261,28 @@ if(callback) { callback(&event, data); } - [item setState: state]; + [sender setState: state]; + + return true; +} + +- (BOOL)handleToggleEvent:(id)sender { + NSWindow *activeWindow = [NSApp keyWindow]; + + UiEvent event; + event.intval = [sender state]; + event.eventdata = NULL; + if([activeWindow class] == [UiCocoaWindow class]) { + event.obj = [(UiCocoaWindow*)activeWindow object]; + event.window = event.obj->window; + event.document = event.obj->ctx->document; + } else { + event.window = NULL; + event.document = NULL; + } + if(callback) { + callback(&event, data); + } return true; }