ui/cocoa/toolkit.m

changeset 49
a80ba8741be6
parent 48
0b8ac9d6d473
equal deleted inserted replaced
48:0b8ac9d6d473 49:a80ba8741be6
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

mercurial