Commit Graph

433 Commits

Author SHA1 Message Date
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
Camilla Löwy
58cc4b2c5c Move full screen cursor centering to shared code 2018-02-07 16:47:00 +01:00
Camilla Löwy
cfb5cb8805 Add comment 2018-02-07 16:46:58 +01:00
Camilla Löwy
1d75b205cb Cleanup
Allow window creation despite video mode setting failure.

Video mode setting failure is ignored the rest of the time and the
desired video mode has never been a hard constraint anyway.
2018-02-07 16:46:58 +01:00
Camilla Löwy
973bf29622 Remove use of non-standard function strdup
Related to #873.
2018-01-17 11:56:35 +01:00
Camilla Löwy
ee9dffcd66 Add GLFW_HOVERED for polling cursor hover state
This window attribute corresponds to the cursor enter/leave callback.

Fixes #1166.
2018-01-09 18:02:52 +01:00
Camilla Löwy
370eac3c48 Add glfwSetWindowContentScaleCallback
Related to #677.
Related to #1115.
2018-01-09 18:00:22 +01:00
Camilla Löwy
9da2285b14 Cocoa: Make frame autosave hint a string 2017-12-19 15:08:28 +01:00
Camilla Löwy
0e8c4ea7ce Add lock key modifier bits input mode
This adds the GLFW_MOD_CAPS_LOCK and GLFW_MOD_NUM_LOCK modifier bits.
Set the GLFW_LOCK_KEY_MODS input mode to enable these for all callbacks
that receive modifier bits.

Fixes #946.
2017-12-06 18:01:34 +01:00
Stephen Gowen
bb13275b72 Cocoa: Fix Xcode Warnings
Closes #1132.
2017-11-20 18:04:05 +01:00
Camilla Löwy
1fe319d234 Cocoa: Filter out duplicate size events
Fixes #1085.
2017-11-16 11:56:06 +01:00
Camilla Löwy
8b81a03a5a Cocoa: Remove double resize of full screen window
Related to #1085.
2017-11-16 11:37:00 +01:00
Camilla Löwy
11e47f08b1 Add glfwGetWindowOpacity and glfwSetWindowOpacity
This adds support for setting the opacity of the whole window, including
any decorations.

Fixes #1089.
2017-11-15 15:46:01 +01:00
Camilla Löwy
31cbb20ba2 Deprecate window parameter of clipboard functions 2017-11-10 02:52:16 +01:00
Camilla Löwy
bf09dba95b Cleanup 2017-10-26 18:05:56 +02:00
Camilla Löwy
16bf872117 Add content scale queries
This adds glfwGetWindowContentScale and glfwGetMonitorContentScale for
querying the recommended drawing scale factor for DPI-aware rendering.

Parts of this patch are based on code by @ferreiradaselva.

Fixes #235.
Fixes #439.
Fixes #677.
Fixes #845.
Fixes #898.
2017-10-26 17:26:36 +02:00
Camilla Löwy
5aeb37d1b8 Cocoa: Fix window title being lost when untitled
The window title was lost and could not be updated while the window did
not have NSWindowStyleMaskTitled set.

Fixes #1082.
2017-09-28 19:04:11 +02:00
Camilla Löwy
da68ec56c3 Cocoa: Start using instancetype
The first tiny step towards using more modern Objective-C.
2017-09-28 19:03:50 +02:00
Camilla Löwy
32e78aeb2e Add GLFW_TRANSPARENT attribute and documentation
This completes support for window framebuffer transparency on Windows,
macOS and X11.  Note that the hint/attribute may be renamed before
release to clarify its relationship to GLFW_OPACITY.

Fixes #197.
Closes #1079.
Related to #663.
Related to #715.
Related to #723.
Related to #1078.
2017-09-27 21:54:04 +02:00
Bailey Cosier
93e66661d3 Cleanup
This is an extract of a commit, minimally edited to ensure it compiles.

Closes #1078.
Related to #197.
2017-09-27 21:33:03 +02:00
Cem Karan
ac009a5f5c Cocoa: Implement GLFW_TRANSPARENT
This is an extract of a commit, minimally edited to ensure it compiles.

Closes #663.
Related to #197.
2017-09-27 21:33:03 +02:00
Camilla Löwy
58a247b26d Cocoa: Fix some characters not repeating
Fixes #1010.
2017-08-23 19:10:35 +02:00
Camilla Löwy
ce5e649d3b Cleanup
Move global data to library struct.  Simplify semantics.  Update
changelog.

Related to #1028.
2017-08-23 13:24:05 +02:00
Sergey Tikhomirov
80e4922b5e Cocoa: Hide cursor instead of using blank image
When cursor isn't in normal mode and should be hidden, use [NSCursor hide]
method instead of setting it to blank image. This should prevent
situations when hidden cursor becomes visible after system notification
was shown.

Fixes #971.
Closes #1028.
2017-08-23 08:44:56 +03:00
Camilla Löwy
ab2247f8f3 Cocoa: Fix string object being updated incorrectly
Fixes #1050.
2017-08-06 23:27:58 +02:00
Camilla Löwy
82284b86eb Cleanup
Thanks to glfwGetKeyScancode we can now pass only a scancode to the
platform layer for glfwGetKeyName.
2017-07-13 01:26:06 +02:00
ryogo.yoshimura
4dee58d480 Cocoa: Fix conversion between NSPoint and CGPoint
GLFW still supports versions of macOS before these became the same
underlying type.

Closes #1023.
2017-06-08 16:39:02 +02:00
Camilla Löwy
018ae69b33 Cleanup
Related to #985.
2017-05-16 15:43:28 +02:00
Konstantin Käfer
d1d08ef99f Cocoa: Fix EGL support
This adds support for using GLFW with EGL backends on macOS.  While EGL
isn't available by default on macOS, there are third-party
implementations like SwiftShader.

The addition of MoltenVK support added an override to makeBackingLayer.
In non-Vulkan mode, this means that we are returning nil from that
function.  The NSGL implementation creates this layer manually later on,
but other OpenGL backends don't necessarily do that.

Closes #985.
2017-05-16 15:42:19 +02:00
Felipe Ferreira da Silva
412eb6a611 Add glfwRequestWindowAttention
Related to #988.
2017-05-11 13:36:39 +02:00
Camilla Berglund
7410346c5c Cocoa: Allow undecorated windows to become main 2017-03-16 15:46:21 +01:00
Camilla Löwy
3d8aa53573 Cocoa: Fix full screen window not being restorable
Once a full screen window was iconified, it would appear to restore but
then disappear.

Fixes #848.
2017-03-15 01:27:46 +01:00
Camilla Löwy
7c88c92778 Cocoa: Fix window rect on leaving video mode
Fixes #748.
2017-03-14 21:23:48 +01:00
Camilla Löwy
7a8516d296 Cleanup 2017-03-01 04:36:00 +01:00
Camilla Löwy
c50aba1335 Cocoa: Add support for MainMenu.nib loading 2017-03-01 04:36:00 +01:00
Camilla Löwy
6d9a58bfef Add glfwInitHint
This allows setting hints that control how the library is initialized,
transforming more compile-time options into run-time ones.
2017-03-01 04:35:41 +01:00
Camilla Löwy
e9560ef021 Add GLFW_OSMESA_CONTEXT_API
This allows the creation of OpenGL contexts via OSMesa on existing
platforms.  It does not add a compile- or link-time dependency on
OSMesa.

Fixes #281.
2017-02-28 20:38:10 +01:00
Camilla Löwy
ce8fe645f4 Cleanup 2017-02-26 22:22:53 +01:00
Camilla Löwy
77a8f103d8 Add GLFW_COCOA_GRAPHICS_SWICTHING
This provides control over whether the context should participate in
macOS Automatic Graphics Switching.

Closes #377.
Closes #935.
2017-02-10 01:29:29 +01:00
Camilla Löwy
5a74b5008d Cleanup
Related to #842.
2017-02-06 15:16:27 +01:00
Liam Middlebrook
72ac5badb0 Add GLFW_CENTER_CURSOR
Adds a hint for controlling whether the cursor is centered over newly
created full screen windows.

Fixes #749.
Closes #842.
2017-02-06 15:16:26 +01:00
Camilla Löwy
221451b817 Cleanup 2017-01-10 15:46:00 +01:00
Camilla Löwy
ec410fb6fe Cocoa: Enable EGL 2017-01-02 15:32:55 +01:00
Camilla Löwy
04f559e28d Restructure monitor enumeration
This way is both kinder on event-based enumeration and less work to
unwind allocations for when properly implementing GLFW_OUT_OF_MEMORY.
2017-01-02 06:03:02 +01:00
Camilla Löwy
ecda05af29 Cocoa: Implement window cascading
Related to #195.
2017-01-02 04:49:16 +01:00
Camilla Löwy
4661315192 Add GLFW_COCOA_FRAME_AUTOSAVE
Fixes #195.
2017-01-01 19:58:34 +01:00
Camilla Löwy
58ceab5f1e Add GLFW_COCOA_RETINA_FRAMEBUFFER
Look, a can of worms!  I wonder what's inside.

This adds the first platform specific window hint, transforming
a compile-time option to a run-time per-window one.
2016-12-08 16:56:05 +01:00
Camilla Löwy
9e56099edd Add glfwSetWindowAttrib
This function allows updating the GLFW_DECORATED, GLFW_RESIZABLE,
GLFW_FLOATING and GLFW_AUTO_ICONIFY attributes for existing windows.

Fixes #537.
2016-12-06 15:59:18 +01:00
Camilla Löwy
f4d0c83181 Paperwork done 2016-11-30 14:00:41 +01:00
Camilla Berglund
e94d16667b Cocoa: Add basic support for Vulkan via MoltenVK
This adds basic support for MoltenVK, a Vulkan implementation on top of
Metal, on macOS 10.11 and later.  It looks for MoltenVK in the process
via RTLD_DEFAULT symbol lookup if _GLFW_VULKAN_STATIC is disabled.

glfwCreateWindowSurface now creates and sets a CAMetalLayer for the
window content view, which is required for MoltenVK to function.

You must help CMake find MoltenVK for the Vulkan test to be built.

Fixes #870.
2016-11-01 21:39:54 +01:00
Camilla Berglund
8d6f265441 Update default name from OS X to macOS
Note that earlier releases are still referred to by their proper names;
OS X <version> or Mac OS X <version>.
2016-10-20 00:53:37 +02:00
Sergey Tikhomirov
967e837c73 Cocoa: Fix 'first responder' error on macOS 10.12
Error message is displayed during the startup because Cocoa view is set
as the first responder for window but this view isn't in this window
(actually it is not in any window at all).

Fixes #876.
Closes #883.
2016-10-16 13:58:52 +02:00
Mário Freitas
238ebb600d Cocoa: Fix assert on disabling window aspect ratio
When disabling window aspect ratio, a system assert would trigger.  The
correct way to disable window aspect ratio is to set a resize increment.

Closes #852.
2016-10-14 01:05:23 +02:00
Camilla Berglund
73ddbc3acd Cocoa: Add workaround for hasty deprecation 2016-10-09 13:11:52 +02:00
Camilla Berglund
7f9840cecf Cocoa: Fix macOS 10.12 deprecation warnings 2016-10-09 01:39:31 +02:00
Camilla Berglund
c156b50e4c Add glfwSetWindowMaximizeCallback
Fixes #778.
2016-09-29 01:24:56 +02:00
Camilla Berglund
e6a32db7b9 Cleanup 2016-09-07 16:49:29 +02:00
Camilla Berglund
bb3cb8f233 Cleanup
Clean up code and documentation for glfwGetKeyScancode and add
implementation for Wayland and Mir.

Related to #830.
2016-09-07 16:46:48 +02:00
Michael Stocker
e745b0dd47 Add glfwGetKeyScancode
Allows retrieval of platform scancode from GLFW_KEY_*.  Implemented for
Win32, Cocoa and X11.  Stubs for Mir and Wayland.

Closes #830.
2016-09-07 16:38:22 +02:00
Camilla Berglund
5ff7d9505f Simplify Vulkan extension checks
Related to #478.
2016-09-07 16:31:18 +02:00