Apple's documentation of [NSScreen screens] mentions that, "The
(screens) array should not be cached. Screens can be added, removed,
or dynamically reconfigured at any time." Because of this, we simply
obtain the screen from a displayID whenever we need it.
Fixes#492.
Closes#493.
Fixed incorrect error types. Added missing error string prefixes.
Removed some invalid or superfluous error emissions. Clarified some
error strings. Joined error string lines to aid grep. Replaced some
generic error strings with specific ones. Documentation work.
Fixes#450.
Changed the window states (focused, iconified and visible) to query the
system directly.
THIS IS A BREAKING CHANGE, although a fairly obscure one. It affects
applications that both care about telling actual key events from
synthetic ones, and are implemented in a non-self-synchronizing way, and
that poll the GLFW_FOCUSED window attribute instead of using the window
focus callback.
If you maintain one of these, please feel free to drop me an email and
I'll help any way I can to transition your application to 3.1.
Fixes#189.
Fixes#204.
Poor use of cursor rectangles broke Lion full screen and led to rect
reset loop. Cursor image is now updated only with the existing
enter/exit detection NSTrackingArea.
Fixes#339.
Fixes#375.
The menu bar for non-bundled applications did not become visible until
it had lost and regained focus. This is fixed (somehow) by letting the
NSApplication run loop start and stop.
Technique by scoopr.
When natural scrolling is disabled on OS X, the X-axis of the scroll
offsets is inverted compared to the direction on Windows. The X11
scrolling directions are unspecified and so have been aligned with the
Windows port. Natural scrolling inverts both axes on both OS X and X11,
so the issue remains when the feature is enabled.
This inverts the provided X-axis scroll offset, making "unnatural"
scroll data align with the Windows and X11 ports and "natual" scroll
data be fully inverted and aligned with its counterpart on X11.
Fixes#239.
We need to invoke both [NSCursor set] and [NSView addCursorRect].
First call is responsible for changing the cursor if it's inside the
view; second call is responsible for keeping the cursor the same if it's
outside.
Don't implement resetCursorRects: this occasionally hides the cursor
since an empty cursor is assigned to the window rectangle. Implementing
this method is not required since OS displays the window cursor
correctly by default.
Don't reset cursor mode when window loses focus: once again, OS handles
this correctly, and this means that the window cursor state is restored
when window gains focus again.