236 return true; |
236 return true; |
237 } |
237 } |
238 |
238 |
239 - (BOOL)handleStateEvent:(id)sender { |
239 - (BOOL)handleStateEvent:(id)sender { |
240 NSWindow *activeWindow = [NSApp keyWindow]; |
240 NSWindow *activeWindow = [NSApp keyWindow]; |
241 NSMenuItem *item = (NSMenuItem*)sender; |
241 int state = [sender state] ? NSOffState : NSOnState; |
242 int state = [item state] ? NSOffState : NSOnState; |
|
243 |
242 |
244 UiEvent event; |
243 UiEvent event; |
245 event.intval = state; |
244 event.intval = state; |
246 event.eventdata = NULL; |
245 event.eventdata = NULL; |
247 if([activeWindow class] == [UiCocoaWindow class]) { |
246 if([activeWindow class] == [UiCocoaWindow class]) { |
248 event.obj = [(UiCocoaWindow*)activeWindow object]; |
247 event.obj = [(UiCocoaWindow*)activeWindow object]; |
249 event.window = event.obj->window; |
248 event.window = event.obj->window; |
250 event.document = event.obj->ctx->document; |
249 event.document = event.obj->ctx->document; |
251 // update state in window data |
250 // if the sender is a menu item, we have to save the state for this |
|
251 // window |
252 UiMenuItem *wmi = [(UiCocoaWindow*)activeWindow getMenuItem: sender]; |
252 UiMenuItem *wmi = [(UiCocoaWindow*)activeWindow getMenuItem: sender]; |
253 wmi->state = state; |
253 if(wmi) { |
|
254 // update state in window data |
|
255 wmi->state = state; |
|
256 } |
254 } else { |
257 } else { |
255 event.window = NULL; |
258 event.window = NULL; |
256 event.document = NULL; |
259 event.document = NULL; |
257 } |
260 } |
258 if(callback) { |
261 if(callback) { |
259 callback(&event, data); |
262 callback(&event, data); |
260 } |
263 } |
261 [item setState: state]; |
264 [sender setState: state]; |
|
265 |
|
266 return true; |
|
267 } |
|
268 |
|
269 - (BOOL)handleToggleEvent:(id)sender { |
|
270 NSWindow *activeWindow = [NSApp keyWindow]; |
|
271 |
|
272 UiEvent event; |
|
273 event.intval = [sender state]; |
|
274 event.eventdata = NULL; |
|
275 if([activeWindow class] == [UiCocoaWindow class]) { |
|
276 event.obj = [(UiCocoaWindow*)activeWindow object]; |
|
277 event.window = event.obj->window; |
|
278 event.document = event.obj->ctx->document; |
|
279 } else { |
|
280 event.window = NULL; |
|
281 event.document = NULL; |
|
282 } |
|
283 if(callback) { |
|
284 callback(&event, data); |
|
285 } |
262 |
286 |
263 return true; |
287 return true; |
264 } |
288 } |
265 |
289 |
266 @end |
290 @end |