Re: Strange toolbar/view/resize cursor interaction
Re: Strange toolbar/view/resize cursor interaction
- Subject: Re: Strange toolbar/view/resize cursor interaction
- From: Ken Thomases <email@hidden>
- Date: Mon, 21 Apr 2014 18:03:54 -0500
On Apr 21, 2014, at 5:23 PM, Eric Shepherd wrote:
> On Mon, Apr 21, 2014 at 3:43 AM, Quincey Morris <email@hidden> wrote:
>
>> … IIRC the methods that convert between a window’s
>> content size and its frame size don’t take the toolbar into account, which
>> means that they work with a "content size” that isn’t actually the content
>> *view* size, and correcting the calculation requires the assumption of
>> extrinsic information.
That shouldn't be. I haven't confirmed empirically, but the docs for -[NSWindow contentRectForFrameRect:] and -frameRectForContentRect: are quite explicit that they *do* take the toolbar into account and that's how they differ from the +contentRectForFrameRect:styleMask: and +frameRectForContentRect:styleMask: class methods.
>> It strikes me as plausible that an OpenGL view might
>> need to make such a conversion, and that it was never implemented to deal
>> with the presence of a toolbar.
>
> I think this is the problem. I added code to dump the Y-coordinate of my
> mouse while I move it around in the NSOpenGLView, and sure enough, it's
> reaching the value that should be the bottom edge well above the bottom.
> The same happens at the top, where the mouse reaches the edge of the view
> but the Y value is not what it should be at the edge.
This sounds like a symptom of the same issue that's causing the strange cursor behavior, but I very much doubt that the NSOpenGLView can be responsible for either.
In case you missed it, Noah Desch reported no problems using an NSOpenGLView in a window with a toolbar. I'm pretty sure some Apple sample projects use NSOpenGLViews in windows with toolbars, too.
> Is there a responsible way to get the current height of the toolbar so I
> can use that to adjust the calculations here?
Apple documents the technique in Toolbar Programming Topics for Cocoa: Techniques for Toolbar Management – Calculating a Toolbar’s Height: <https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Toolbars/Tasks/DeterminingOverflow.html#//apple_ref/doc/uid/20000859-SW2>.
The technique relies on the fact that +contentRectForFrameRect:styleMask: does *not* take the toolbar into account but the content view's frame does. In your case, I bet the latter assumption is broken just like everything else.
Did you see my recent question as to whether you're using a custom subclass of NSWindow that might accidentally override important properties inherited from NSWindow? I didn't see an answer.
Regards,
Ken
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden