Skip navigation.
 
mlCustom-view cursor changing
FROM : John Stiles
DATE : Tue Nov 27 22:46:46 2007

I have a custom NSView subclass which overrides -mouseDown:,
-mouseDragged: and -mouseUp:. In response to dragging, the control can
resize itself and some ancillary views in the window (within a limited
range, of course). Conceptually it's a lot like a split view.

I am trying to change the cursor when the drag starts by calling
[myCursor push] inside -mouseDown:, and restoring it via [NSCursor pop]
inside -mouseUp:. I'm finding that if I just click and release, this
works great.

However, dragging does not work as expected. When -mouseDragged: is
called and I change various views' bounds (via setFrame), suddenly the
cursor pops back to being an arrow cursor.

This appears to be happening because some view I'm using is posting a
notification saying that it needs to reset its cursor rects. When I set
a breakpoint on -[NSCursor set], I get this:

#0    0x911034d6 in -[NSCursor set]
#1    0x913dbafd in -[NSWindow resetCursorRects]
#2    0x91108315 in _handleInvalidCursorRectsNote
#3    0x90f039e2 in __CFRunLoopDoObservers
#4    0x90f04d45 in CFRunLoopRunSpecific
#5    0x90f05d38 in CFRunLoopRunInMode
#6    0x92cf28a4 in RunCurrentEventLoopInMode
#7    0x92cf25f6 in ReceiveNextEventCommon
#8    0x92cf2531 in BlockUntilNextEventMatchingListInMode
#9    0x9107cd5b in _DPSNextEvent
#10    0x9107c6a0 in -[NSApplication
nextEventMatchingMask:untilDate:inMode:dequeue:]
#11    0x910756d1 in -[NSApplication run]

I don't know exactly how to solve this, though. I'm definitely not
posting anything like this, and the other views involved are all
standard OS X NSViews (e.g. in this case there are NSOutlineViews,
NSButtons and NSTextViews… not exactly rocket science).

Has anyone seen this before and maybe found a workaround? Maybe I need
to do something to enable "live-resize mode" in my mouseDown/mouseUp
methods?

I notice that I'm not alone—Xcode has the same problem when dragging its
splitter in the main project window.

Related mailsAuthorDate
mlCustom-view cursor changing John Stiles Nov 27, 22:46
mlRe: Custom-view cursor changing John Stiles Nov 27, 23:05
mlRe: Custom-view cursor changing Uli Kusterer Nov 28, 13:03
mlRe: Custom-view cursor changing John Stiles Nov 28, 18:16
mlRe: Custom-view cursor changing Alastair Houghton Nov 28, 18:31