At 12:03 -0700 02/10/08, [EMAIL PROTECTED] wrote: >From: "Daniel Weber" <[EMAIL PROTECTED]> >Date: Thu, 2 Oct 2008 11:15:40 -0700 >Message-ID: <[EMAIL PROTECTED]> > >I have a single nsview that draws the main content area for my application >and a bottom statusbar. This was done instead of using two different views >so the user can move objects from the statusbar to the main content area, >all with core animation effects. The view is not opaque. The problem I'm >having, though, is that I want the user to be able to drag the window when >the mouse is down on the statusbar, but not the main content area. In other >words, if the mousedown is within the statusbar's rectangle I want to return >YES for mouseDownCanMoveWindow. But if the mousedown is within the main >content area rectangle, I want to return NO. I have already tried setting a >flag in the mouseDown method and then returning that >in mouseDownCanMoveWindow. But it doesn't work. I guess mouseDown is not >called before mouseDownCanMoveWindow. Anyway, does anyone have any other >suggestions for this?
I had that very same problem in RBSplitView. The only solution I found is to always return NO in mouseDownCanMoveWindow, then move the window "manually" inside mouseDown like this: - (void)mouseDown:(NSEvent*)theEvent { NSWindow* window = [self window]; NSPoint where = [theEvent locationInWindow]; if (...test for your rect here...) { where = [window convertBaseToScreen:where]; NSPoint origin = [window frame].origin; // Now we loop handling mouse events until we get a mouse up event. while ((theEvent = [NSApp nextEventMatchingMask:NSLeftMouseDownMask|NSLeftMouseDraggedMask|NSLeftMouseUpMask untilDate:[NSDate distantFuture] inMode:NSEventTrackingRunLoopMode dequeue:YES])&&([theEvent type]!=NSLeftMouseUp)) { // Set up a local autorelease pool for the loop to prevent buildup of temporary objects. NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSPoint now = [window convertBaseToScreen:[theEvent locationInWindow]]; origin.x += now.x-where.x; origin.y += now.y-where.y; // Move the window by the mouse displacement since the last event. [window setFrameOrigin:origin]; where = now; [pool release]; } } } -- Rainer Brockerhoff <[EMAIL PROTECTED]> Belo Horizonte, Brazil "In the affairs of others even fools are wise In their own business even sages err." Weblog: http://www.brockerhoff.net/bb/viewtopic.php _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]