Commit Graph

392 Commits

Author SHA1 Message Date
Camilla Löwy
72366ac9a9 Cocoa: Finish launching NSApp in glfwInit
This moves the remaining bits of NSApplication initialization into
_glfwPlatformInit.  As a side-effect of this, any command-line program
initializing GLFW will get a menu bar, which is not ideal.

If this has happened to you and a bisect led you here, please see the
GLFW_COCOA_MENUBAR init hint introduced in GLFW 3.3.

If this patch is a terrible idea, please get in touch in the 3.4 release
timeframe.

This is a replacement for 6e6805000a,
which attempts to preserve the existing menu bar creation behavior for
the 3.3-stable branch.

Fixes #1649.
2020-03-12 01:56:35 +01:00
Camilla Löwy
5f1631cb0e Check scancode before use in glfwGetKeyName 2020-01-16 23:17:49 +01:00
Camilla Löwy
15d91801b7 Cocoa: Select Vulkan surface extension at runtime
This mostly just follows the pattern established by X11.

Related to #1619.
2020-01-16 21:53:18 +01:00
ByunghoonKim
c5cb4a253a Cocoa: Add support for VK_EXT_metal_surface
This adds optional support for the VK_EXT_metal_surface instance
extension.

Closes #1619.
2020-01-16 05:28:24 +01:00
Camilla Löwy
54e8e0b092 NSGL: Remove problematic swap interval workaround
Fixes #1483.
2019-12-20 09:46:48 +01:00
Camilla Löwy
28773a069e Cocoa: Fix undeclared selector warnings 2019-12-20 09:46:48 +01:00
Camilla Löwy
506a6aafde Formatting 2019-12-11 22:10:00 +01:00
Camilla Löwy
a875a536b7 Cocoa: Fix duplicate conversion of title string 2019-12-11 22:08:56 +01:00
Camilla Löwy
6e6805000a Cocoa: Fix pre-window-creation event processing
Polling the event queue before NSApp had been allowed to finish
launching, in our case by starting our self-terminating run loop,
triggered an assertion inside NSApplication.

This fix, which makes all event processing functions capable of starting
it, makes that assertion less likely.

A more Cocoa-friendly fix would be to finish launching NSApp during
glfwInit and let people annoyed by the menu bar disabled it with
GLFW_COCOA_MENUBAR.  That may not be suitable for 3.3-stable, though.

Fixes #1543.
2019-12-09 22:25:59 +01:00
Camilla Löwy
7dbdd2e6a5 Add more standard cursors
This adds the standard cursors for diagonal and omnidirectional
resize/move and operation-not-allowed.  It also adds new (better?) names
for the horizontal and vertical resize/move and pointing hand cursors.

References:
 - https://developer.apple.com/documentation/appkit/nscursor
 - https://stackoverflow.com/questions/10733228/
 - https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setsystemcursor
 - https://freedesktop.org/wiki/Specifications/cursor-spec/
 - https://tronche.com/gui/x/xlib/appendix/b/

Related to #427.
2019-11-28 22:24:00 +01:00
Camilla Löwy
2c519709be Cocoa: Fix full screen window iconification
Iconification (miniaturization) of undecorated windows stopped working
unless the window has the NSWindowStyleMaskMiniaturizable style.
2019-11-13 14:08:28 +01:00
Camilla Löwy
bac15f9449 Cocoa: Fix multiple methods warning
This fixes a warning due to us using bare ids and
NSCollectionLayoutAnchor having a message with the same name.
2019-11-11 22:49:00 +01:00
Camilla Löwy
c819f27ce3 Cocoa: Process events after window destruction
On macOS a destroyed window remained on screen until the next time
events were processed.  This makes the behavior more consistent with
other platforms.

Fixes #1412.
2019-11-11 22:49:00 +01:00
Camilla Löwy
7f02898264 Cocoa: Fix glfwSetWindowSize anchor point
This makes glfwSetWindowSize use the top-left corner as anchor point
instead of the bottom-left corner.

Fixes #1553.
2019-09-06 16:57:37 +02:00
Camilla Löwy
56ca0cb3b3 Unify key name string handling
This makes key names per-key static strings for all supported platforms.

Fixes #1200.
2019-08-27 19:29:56 +02:00
Camilla Löwy
3262c29440 Cocoa: Cleanup
This makes the Cocoa _glfwPlatformSetWindowMonitor consistent with its
X11 and Win32 counterparts.
2019-06-27 18:14:48 +02:00
Camilla Löwy
0c6b505619 Convert some declarations to C99 style 2019-06-27 18:13:29 +02:00
Camilla Löwy
56aad76b16 Add C dialect reminders to each source file
Files built for Win32 must use C89 style declarations for compatibility
with VS 2010 and 2012, which are still supported by GLFW.
2019-05-24 14:43:49 +02:00
Camilla Löwy
a337c56848 Start 3.4 2019-04-16 23:08:39 +02:00
Camilla Löwy
ab118b2529 Fix copyright years (somewhat) 2019-04-15 20:50:00 +02:00
Camilla Löwy
0e74265426 Cocoa: Fix cursor hover test 2019-04-15 14:52:17 +02:00
Camilla Löwy
3c3981a4f0 Cocoa: Fix coordinate transformations
Window relative mouse locations provided via NSWindow and NSEvent are
based at 0,1 while screen relative locations use 0,0.  Incorrect
handling of this had crept into other coordinate transformations.  Note
that most of these errors canceled each other out, so the reported
positions of windows, monitors and work areas are unaffected.  This
corrects the cursor position for glfwGetCursorPos and glfwSetCursorPos.

Fixes #1461.
2019-04-15 14:52:17 +02:00
Camilla Löwy
cad22cb2f6 Cocoa: Fix missing check for selector
Fixes #1457.
2019-03-27 20:04:43 +01:00
Camilla Löwy
980fc9b52f Cocoa: Apply retina window hint to Metal layer
Related to #1340.
2019-03-27 17:14:30 +01:00
Camilla Löwy
e108c0de0d Cocoa: Explicitly set layer on surface creation
Implicitly setting the layer doesn't work when there is already a layer.
Our view is now layer-hosting for Vulkan.

Fixes #1340.
2019-03-27 16:28:16 +01:00
Camilla Löwy
056c5d3f90 Cleanup 2019-03-27 01:26:39 +01:00
Camilla Löwy
8d7e5cdb49 NSGL: Update current display for display link
This solution of one display link per window is far from ideal but is
still better than no solution.

As a side-effect this fixes swap interval breaking being ignored for
occluded windows on earlier versions of macOS.

Fixes #680.
Fixes #1337.
Related to #1417.
Fixes #1435.
2019-03-05 20:22:00 +01:00
Camilla Löwy
4e3204d86d Cocoa: Replace global autorelease pool with blocks
This is another small step towards having GLFW play nice with other
toolkits sharing the same process, including AppKit.

Any macOS platform function that touches Cocoa must now wrap itself in
an autoreleasepool block.

Since GLFW no longer provides an autoreleasepool outside of its
functions, THIS MAY BREAK EXISTING CODE MIXING GLFW AND COCOA.  Sorry!
Please add your own autoreleasepool blocks as needed.

Fixes #1107.
Closes #1114.
2019-03-05 20:11:20 +01:00
Camilla Löwy
9883cb64f0 Cocoa: Disable shadow for transparent framebuffer 2019-03-05 20:03:29 +01:00
Camilla Löwy
4b20fb705b Cocoa: Fix work area using NS screen coordinates
Related to #1322.
2019-03-05 17:41:32 +01:00
Camilla Löwy
1155c83013 Rename raw input to raw mouse motion, cleanup
This renames 'raw input' to 'raw mouse motion' as there are other kinds
of raw input.  The update path is restructured to avoid reinitializing
all of disabled cursor mode.  Modification of shared state is moved out
into shared code.  Raw mouse motion is disabled by default for
compatibility.

Related to #1401.
2019-02-22 13:04:11 +01:00
Nathan Poirier
9e29f556fd Add GLFW_RAW_INPUT and glfwRawInputSupported
This adds runtime per-window control of whether accelerated or raw mouse
motion is provided when the cursor is disabled.

Fixes #1400.
Closes #1401.
2019-02-22 13:04:11 +01:00
Camilla Löwy
530b37f4db Cocoa: Disable automatic tabbing for GLFW windows
Related to #1250.
2019-01-31 00:20:24 +01:00
Camilla Löwy
d5ab3e919a Cleanup
Replace client area with content area.
2019-01-25 12:46:46 +01:00
iamCaveLamp
a46104ee69 Removed duplicates of centerCursor function 2019-01-22 20:17:35 +01:00
Camilla Löwy
ea7eb2ddab Cocoa: Move app delegate and menu creation to init
The application delegate needs to be set at init to receive monitor
events before window creation.  Menu creation is moved to
applicationWillFinishLaunching: to play nicer with other toolkits in the
same process.

Related to #1317.
2019-01-11 01:05:00 +01:00
Camilla Löwy
9a9568212c Cocoa: Move slightly towards modern Objective-C 2019-01-10 23:20:56 +01:00
Keith Bauer
c4903d9267 Cocoa: Fix half of all key events for Caps Lock
This adds reporting of those Caps Lock key events that cause the lock
state to change.

The full fix involving IOHID is being worked on in #1368.

Related to #1368.
Closes #1373.
2018-12-25 21:39:48 +01:00
Andrew Belt
cc621765e5 Cocoa: Accept focusing mouse click as input
This makes the behavior on macOS consistent with other platforms.

Fixes #1209.
Closes #1386.
2018-12-25 20:50:50 +01:00
Camilla Löwy
17a15a20f2 Cocoa: Move to modern Objective-C literals 2018-12-25 18:52:56 +01:00
Camilla Löwy
c3ed70a4b7 Cocoa: Add NSApplicationDelegate protocol 2018-12-25 18:35:09 +01:00
Camilla Löwy
88c5edb409 Cocoa: Remove subclassing of NSApplication
This removes the GLFW NSApplication subclass as a step towards better
coexistence with other libraries that touch Cocoa.

This moves application object creation to platform init to allow event
processing before window creation.

Related to #1317.
2018-12-25 18:13:59 +01:00
Camilla Löwy
f680001b95 Cocoa: Remove superfluous compatibility macro 2018-11-27 21:44:20 +01:00
Camilla Löwy
18145a7f3d Cocoa: Use NSURLs for drag and drop
Fixes #1377.
2018-11-27 21:44:20 +01:00
Camilla Löwy
5595fa3ae6 Cocoa: Fix OpenGL rendering not being displayed
Fix based on information provided by @rcgordon.

Fixes #1334.
Closes #1346.
2018-10-26 16:24:16 +02:00
Camilla Löwy
6dfc12a439 Cocoa: Fix some macOS 10.14 deprecation warnings 2018-10-26 15:19:48 +02:00
Camilla Löwy
50eccd298a Fix cursor mode application for unfocused windows
Fixes #1239.
Fixes #1247.
2018-04-25 21:49:26 +02:00
Camilla Löwy
2884915000 Cocoa: Set CAMetalLayer contents scale from window
Fixes #1229.
2018-03-20 19:58:39 +01:00
Camilla Löwy
5f8108e8a9 Cocoa: Fix SDK version numbers
The pattern for version 10.10 and later was incorrectly applied to
version number for 10.8.

Fixes #1232.
2018-03-20 01:03:37 +01:00
Camilla Löwy
77879736af Cocoa: Event polling did not initialize AppKit
Fixes #1218.
2018-03-01 02:23:27 +01:00