mirror of
https://github.com/glfw/glfw.git
synced 2024-11-26 06:14:35 +00:00
Add init/window hints/attributes to set Cocoa windows' tabbing mode
Closes #1250
This commit is contained in:
parent
57cbded076
commit
85d3c6f1ec
@ -98,6 +98,7 @@ video tutorials.
|
|||||||
- IntellectualKitty
|
- IntellectualKitty
|
||||||
- Aaron Jacobs
|
- Aaron Jacobs
|
||||||
- JannikGM
|
- JannikGM
|
||||||
|
- Andreas O. Jansen
|
||||||
- Erik S. V. Jansson
|
- Erik S. V. Jansson
|
||||||
- jjYBdx4IL
|
- jjYBdx4IL
|
||||||
- Toni Jovanoski
|
- Toni Jovanoski
|
||||||
|
@ -121,6 +121,8 @@ information on what to include when reporting a bug.
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
- Added `GLFW_COCOA_TABBING_MODE` window hint for specifying a window's tabbing mode (#1250)
|
||||||
|
- Added `GLFW_COCOA_ALLOW_AUTO_TABBING` init hint for enabling and disabling application-wide window tabbing (#1250)
|
||||||
- Added `GLFW_PLATFORM` init hint for runtime platform selection (#1958)
|
- Added `GLFW_PLATFORM` init hint for runtime platform selection (#1958)
|
||||||
- Added `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`,
|
- Added `GLFW_ANY_PLATFORM`, `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`,
|
||||||
`GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` and `GLFW_PLATFORM_NULL` symbols to
|
`GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` and `GLFW_PLATFORM_NULL` symbols to
|
||||||
|
@ -320,6 +320,30 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
#define GLFW_FALSE 0
|
#define GLFW_FALSE 0
|
||||||
|
|
||||||
|
|
||||||
|
/*! @brief Zero.
|
||||||
|
*
|
||||||
|
* This is only semantic sugar for the number 0.
|
||||||
|
*
|
||||||
|
* @ingroup init
|
||||||
|
*/
|
||||||
|
#define GLFW_NEVER 0
|
||||||
|
/*! @brief One.
|
||||||
|
*
|
||||||
|
* This is only semantic sugar for the number 1.
|
||||||
|
*
|
||||||
|
* @ingroup init
|
||||||
|
*/
|
||||||
|
#define GLFW_AUTO 1
|
||||||
|
/*! @brief Two.
|
||||||
|
*
|
||||||
|
* This is only semantic sugar for the number 2.
|
||||||
|
*
|
||||||
|
* @ingroup init
|
||||||
|
*/
|
||||||
|
#define GLFW_ALWAYS 2
|
||||||
|
|
||||||
|
|
||||||
/*! @name Key and button actions
|
/*! @name Key and button actions
|
||||||
* @{ */
|
* @{ */
|
||||||
/*! @brief The key or mouse button was released.
|
/*! @brief The key or mouse button was released.
|
||||||
@ -1108,6 +1132,11 @@ extern "C" {
|
|||||||
* [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint).
|
* [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint).
|
||||||
*/
|
*/
|
||||||
#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003
|
#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003
|
||||||
|
/*! @brief macOS specific
|
||||||
|
* [window hint](@ref GLFW_COCOA_TABBING_MODE_hint).
|
||||||
|
* [attribute](@ref GLFW_COCOA_TABBING_MODE_attrib).
|
||||||
|
*/
|
||||||
|
#define GLFW_COCOA_TABBING_MODE 0x00023004
|
||||||
/*! @brief X11 specific
|
/*! @brief X11 specific
|
||||||
* [window hint](@ref GLFW_X11_CLASS_NAME_hint).
|
* [window hint](@ref GLFW_X11_CLASS_NAME_hint).
|
||||||
*/
|
*/
|
||||||
@ -1302,6 +1331,11 @@ extern "C" {
|
|||||||
* macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint).
|
* macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint).
|
||||||
*/
|
*/
|
||||||
#define GLFW_COCOA_MENUBAR 0x00051002
|
#define GLFW_COCOA_MENUBAR 0x00051002
|
||||||
|
/*! @brief macOS specific init hint.
|
||||||
|
*
|
||||||
|
* macOS specific [init hint](@ref GLFW_COCOA_ALLOW_AUTO_TABBING_hint).
|
||||||
|
*/
|
||||||
|
#define GLFW_COCOA_ALLOW_AUTO_TABBING 0x00051003
|
||||||
/*! @brief X11 specific init hint.
|
/*! @brief X11 specific init hint.
|
||||||
*
|
*
|
||||||
* X11 specific [init hint](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint).
|
* X11 specific [init hint](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint).
|
||||||
@ -4015,9 +4049,10 @@ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
|
|||||||
* The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
|
* The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
|
||||||
* [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
|
* [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
|
||||||
* [GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
|
* [GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
|
||||||
* [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and
|
* [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib),
|
||||||
* [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib).
|
* [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib),
|
||||||
* [GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_attrib)
|
* [GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_attrib) and
|
||||||
|
* [GLFW_COCOA_TABBING_MODE](@ref GLFW_COCOA_TABBING_MODE_attrib).
|
||||||
*
|
*
|
||||||
* Some of these attributes are ignored for full screen windows. The new
|
* Some of these attributes are ignored for full screen windows. The new
|
||||||
* value will take effect if the window is later made windowed.
|
* value will take effect if the window is later made windowed.
|
||||||
@ -4027,7 +4062,7 @@ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
|
|||||||
*
|
*
|
||||||
* @param[in] window The window to set the attribute for.
|
* @param[in] window The window to set the attribute for.
|
||||||
* @param[in] attrib A supported window attribute.
|
* @param[in] attrib A supported window attribute.
|
||||||
* @param[in] value `GLFW_TRUE` or `GLFW_FALSE`.
|
* @param[in] value `GLFW_TRUE`, `GLFW_FALSE` `GLFW_NEVER`, `GLFW_ALWAYS` or `GLFW_AUTO`.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
||||||
* GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref
|
* GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref
|
||||||
|
@ -551,12 +551,14 @@ GLFWbool _glfwConnectCocoa(int platformID, _GLFWplatform* platform)
|
|||||||
_glfwWindowMaximizedCocoa,
|
_glfwWindowMaximizedCocoa,
|
||||||
_glfwWindowHoveredCocoa,
|
_glfwWindowHoveredCocoa,
|
||||||
_glfwFramebufferTransparentCocoa,
|
_glfwFramebufferTransparentCocoa,
|
||||||
|
_glfwWindowTabbingModeCocoa,
|
||||||
_glfwGetWindowOpacityCocoa,
|
_glfwGetWindowOpacityCocoa,
|
||||||
_glfwSetWindowResizableCocoa,
|
_glfwSetWindowResizableCocoa,
|
||||||
_glfwSetWindowDecoratedCocoa,
|
_glfwSetWindowDecoratedCocoa,
|
||||||
_glfwSetWindowFloatingCocoa,
|
_glfwSetWindowFloatingCocoa,
|
||||||
_glfwSetWindowOpacityCocoa,
|
_glfwSetWindowOpacityCocoa,
|
||||||
_glfwSetWindowMousePassthroughCocoa,
|
_glfwSetWindowMousePassthroughCocoa,
|
||||||
|
_glfwSetWindowTabbingModeCocoa,
|
||||||
_glfwPollEventsCocoa,
|
_glfwPollEventsCocoa,
|
||||||
_glfwWaitEventsCocoa,
|
_glfwWaitEventsCocoa,
|
||||||
_glfwWaitEventsTimeoutCocoa,
|
_glfwWaitEventsTimeoutCocoa,
|
||||||
@ -640,6 +642,9 @@ int _glfwInitCocoa(void)
|
|||||||
if (_glfw.hints.init.ns.menubar)
|
if (_glfw.hints.init.ns.menubar)
|
||||||
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
|
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
|
||||||
|
|
||||||
|
if (!_glfw.hints.init.ns.autoTabbing)
|
||||||
|
[NSWindow setAllowsAutomaticWindowTabbing:NO];
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return GLFW_TRUE;
|
||||||
|
|
||||||
} // autoreleasepool
|
} // autoreleasepool
|
||||||
|
@ -241,12 +241,14 @@ GLFWbool _glfwWindowVisibleCocoa(_GLFWwindow* window);
|
|||||||
GLFWbool _glfwWindowMaximizedCocoa(_GLFWwindow* window);
|
GLFWbool _glfwWindowMaximizedCocoa(_GLFWwindow* window);
|
||||||
GLFWbool _glfwWindowHoveredCocoa(_GLFWwindow* window);
|
GLFWbool _glfwWindowHoveredCocoa(_GLFWwindow* window);
|
||||||
GLFWbool _glfwFramebufferTransparentCocoa(_GLFWwindow* window);
|
GLFWbool _glfwFramebufferTransparentCocoa(_GLFWwindow* window);
|
||||||
|
char _glfwWindowTabbingModeCocoa(_GLFWwindow* window);
|
||||||
void _glfwSetWindowResizableCocoa(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowResizableCocoa(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowDecoratedCocoa(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowDecoratedCocoa(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowFloatingCocoa(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowFloatingCocoa(_GLFWwindow* window, GLFWbool enabled);
|
||||||
float _glfwGetWindowOpacityCocoa(_GLFWwindow* window);
|
float _glfwGetWindowOpacityCocoa(_GLFWwindow* window);
|
||||||
void _glfwSetWindowOpacityCocoa(_GLFWwindow* window, float opacity);
|
void _glfwSetWindowOpacityCocoa(_GLFWwindow* window, float opacity);
|
||||||
void _glfwSetWindowMousePassthroughCocoa(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowMousePassthroughCocoa(_GLFWwindow* window, GLFWbool enabled);
|
||||||
|
void _glfwSetWindowTabbingModeCocoa(_GLFWwindow* window, char value);
|
||||||
|
|
||||||
void _glfwSetRawMouseMotionCocoa(_GLFWwindow *window, GLFWbool enabled);
|
void _glfwSetRawMouseMotionCocoa(_GLFWwindow *window, GLFWbool enabled);
|
||||||
GLFWbool _glfwRawMouseMotionSupportedCocoa(void);
|
GLFWbool _glfwRawMouseMotionSupportedCocoa(void);
|
||||||
|
@ -885,10 +885,7 @@ static GLFWbool createNativeWindow(_GLFWwindow* window,
|
|||||||
[window->ns.object setAcceptsMouseMovedEvents:YES];
|
[window->ns.object setAcceptsMouseMovedEvents:YES];
|
||||||
[window->ns.object setRestorable:NO];
|
[window->ns.object setRestorable:NO];
|
||||||
|
|
||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200
|
_glfwSetWindowTabbingModeCocoa(window, wndconfig->ns.tabbingMode);
|
||||||
if ([window->ns.object respondsToSelector:@selector(setTabbingMode:)])
|
|
||||||
[window->ns.object setTabbingMode:NSWindowTabbingModeDisallowed];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_glfwGetWindowSizeCocoa(window, &window->ns.width, &window->ns.height);
|
_glfwGetWindowSizeCocoa(window, &window->ns.width, &window->ns.height);
|
||||||
_glfwGetFramebufferSizeCocoa(window, &window->ns.fbWidth, &window->ns.fbHeight);
|
_glfwGetFramebufferSizeCocoa(window, &window->ns.fbWidth, &window->ns.fbHeight);
|
||||||
@ -1876,6 +1873,46 @@ const char* _glfwGetClipboardStringCocoa(void)
|
|||||||
} // autoreleasepool
|
} // autoreleasepool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _glfwSetWindowTabbingModeCocoa(_GLFWwindow* window, const char mode)
|
||||||
|
{
|
||||||
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200
|
||||||
|
if ([window->ns.object respondsToSelector:@selector(setTabbingMode:)]) {
|
||||||
|
NSWindowTabbingMode tabbingMode;
|
||||||
|
|
||||||
|
switch (mode) {
|
||||||
|
case GLFW_NEVER:
|
||||||
|
tabbingMode = NSWindowTabbingModeDisallowed;
|
||||||
|
break;
|
||||||
|
case GLFW_AUTO:
|
||||||
|
tabbingMode = NSWindowTabbingModeAutomatic;
|
||||||
|
break;
|
||||||
|
case GLFW_ALWAYS:
|
||||||
|
tabbingMode = NSWindowTabbingModePreferred;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
[window->ns.object setTabbingMode:tabbingMode];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
char _glfwWindowTabbingModeCocoa(_GLFWwindow* window)
|
||||||
|
{
|
||||||
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200
|
||||||
|
if ([window->ns.object respondsToSelector:@selector(tabbingMode:)]) {
|
||||||
|
switch ([window->ns.object tabbingMode]) {
|
||||||
|
case NSWindowTabbingModeDisallowed:
|
||||||
|
return GLFW_NEVER;
|
||||||
|
case NSWindowTabbingModeAutomatic:
|
||||||
|
return GLFW_AUTO;
|
||||||
|
case NSWindowTabbingModePreferred:
|
||||||
|
return GLFW_ALWAYS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
EGLenum _glfwGetEGLPlatformCocoa(EGLint** attribs)
|
EGLenum _glfwGetEGLPlatformCocoa(EGLint** attribs)
|
||||||
{
|
{
|
||||||
if (_glfw.egl.ANGLE_platform_angle)
|
if (_glfw.egl.ANGLE_platform_angle)
|
||||||
|
@ -57,7 +57,8 @@ static _GLFWinitconfig _glfwInitHints =
|
|||||||
NULL, // vkGetInstanceProcAddr function
|
NULL, // vkGetInstanceProcAddr function
|
||||||
{
|
{
|
||||||
GLFW_TRUE, // macOS menu bar
|
GLFW_TRUE, // macOS menu bar
|
||||||
GLFW_TRUE // macOS bundle chdir
|
GLFW_TRUE, // macOS bundle chdir
|
||||||
|
GLFW_FALSE // macOS NSWindow auto tabbing
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
GLFW_TRUE, // X11 XCB Vulkan surface
|
GLFW_TRUE, // X11 XCB Vulkan surface
|
||||||
@ -476,6 +477,9 @@ GLFWAPI void glfwInitHint(int hint, int value)
|
|||||||
case GLFW_COCOA_MENUBAR:
|
case GLFW_COCOA_MENUBAR:
|
||||||
_glfwInitHints.ns.menubar = value;
|
_glfwInitHints.ns.menubar = value;
|
||||||
return;
|
return;
|
||||||
|
case GLFW_COCOA_ALLOW_AUTO_TABBING:
|
||||||
|
_glfwInitHints.ns.autoTabbing = value ? GLFW_TRUE : GLFW_FALSE;
|
||||||
|
return;
|
||||||
case GLFW_X11_XCB_VULKAN_SURFACE:
|
case GLFW_X11_XCB_VULKAN_SURFACE:
|
||||||
_glfwInitHints.x11.xcbVulkanSurface = value;
|
_glfwInitHints.x11.xcbVulkanSurface = value;
|
||||||
return;
|
return;
|
||||||
|
@ -375,6 +375,7 @@ struct _GLFWinitconfig
|
|||||||
struct {
|
struct {
|
||||||
GLFWbool menubar;
|
GLFWbool menubar;
|
||||||
GLFWbool chdir;
|
GLFWbool chdir;
|
||||||
|
GLFWbool autoTabbing;
|
||||||
} ns;
|
} ns;
|
||||||
struct {
|
struct {
|
||||||
GLFWbool xcbVulkanSurface;
|
GLFWbool xcbVulkanSurface;
|
||||||
@ -407,6 +408,7 @@ struct _GLFWwndconfig
|
|||||||
GLFWbool scaleToMonitor;
|
GLFWbool scaleToMonitor;
|
||||||
struct {
|
struct {
|
||||||
GLFWbool retina;
|
GLFWbool retina;
|
||||||
|
char tabbingMode;
|
||||||
char frameName[256];
|
char frameName[256];
|
||||||
} ns;
|
} ns;
|
||||||
struct {
|
struct {
|
||||||
@ -729,12 +731,14 @@ struct _GLFWplatform
|
|||||||
GLFWbool (*windowMaximized)(_GLFWwindow*);
|
GLFWbool (*windowMaximized)(_GLFWwindow*);
|
||||||
GLFWbool (*windowHovered)(_GLFWwindow*);
|
GLFWbool (*windowHovered)(_GLFWwindow*);
|
||||||
GLFWbool (*framebufferTransparent)(_GLFWwindow*);
|
GLFWbool (*framebufferTransparent)(_GLFWwindow*);
|
||||||
|
char (*windowTabbingMode)(_GLFWwindow*);
|
||||||
float (*getWindowOpacity)(_GLFWwindow*);
|
float (*getWindowOpacity)(_GLFWwindow*);
|
||||||
void (*setWindowResizable)(_GLFWwindow*,GLFWbool);
|
void (*setWindowResizable)(_GLFWwindow*,GLFWbool);
|
||||||
void (*setWindowDecorated)(_GLFWwindow*,GLFWbool);
|
void (*setWindowDecorated)(_GLFWwindow*,GLFWbool);
|
||||||
void (*setWindowFloating)(_GLFWwindow*,GLFWbool);
|
void (*setWindowFloating)(_GLFWwindow*,GLFWbool);
|
||||||
void (*setWindowOpacity)(_GLFWwindow*,float);
|
void (*setWindowOpacity)(_GLFWwindow*,float);
|
||||||
void (*setWindowMousePassthrough)(_GLFWwindow*,GLFWbool);
|
void (*setWindowMousePassthrough)(_GLFWwindow*,GLFWbool);
|
||||||
|
void (*setWindowTabbingMode)(_GLFWwindow*,char);
|
||||||
void (*pollEvents)(void);
|
void (*pollEvents)(void);
|
||||||
void (*waitEvents)(void);
|
void (*waitEvents)(void);
|
||||||
void (*waitEventsTimeout)(double);
|
void (*waitEventsTimeout)(double);
|
||||||
|
@ -96,12 +96,14 @@ GLFWbool _glfwConnectNull(int platformID, _GLFWplatform* platform)
|
|||||||
_glfwWindowMaximizedNull,
|
_glfwWindowMaximizedNull,
|
||||||
_glfwWindowHoveredNull,
|
_glfwWindowHoveredNull,
|
||||||
_glfwFramebufferTransparentNull,
|
_glfwFramebufferTransparentNull,
|
||||||
|
_glfwWindowTabbingModeNull,
|
||||||
_glfwGetWindowOpacityNull,
|
_glfwGetWindowOpacityNull,
|
||||||
_glfwSetWindowResizableNull,
|
_glfwSetWindowResizableNull,
|
||||||
_glfwSetWindowDecoratedNull,
|
_glfwSetWindowDecoratedNull,
|
||||||
_glfwSetWindowFloatingNull,
|
_glfwSetWindowFloatingNull,
|
||||||
_glfwSetWindowOpacityNull,
|
_glfwSetWindowOpacityNull,
|
||||||
_glfwSetWindowMousePassthroughNull,
|
_glfwSetWindowMousePassthroughNull,
|
||||||
|
_glfwSetWindowTabbingModeNull,
|
||||||
_glfwPollEventsNull,
|
_glfwPollEventsNull,
|
||||||
_glfwWaitEventsNull,
|
_glfwWaitEventsNull,
|
||||||
_glfwWaitEventsTimeoutNull,
|
_glfwWaitEventsTimeoutNull,
|
||||||
|
@ -105,10 +105,12 @@ void _glfwMaximizeWindowNull(_GLFWwindow* window);
|
|||||||
GLFWbool _glfwWindowMaximizedNull(_GLFWwindow* window);
|
GLFWbool _glfwWindowMaximizedNull(_GLFWwindow* window);
|
||||||
GLFWbool _glfwWindowHoveredNull(_GLFWwindow* window);
|
GLFWbool _glfwWindowHoveredNull(_GLFWwindow* window);
|
||||||
GLFWbool _glfwFramebufferTransparentNull(_GLFWwindow* window);
|
GLFWbool _glfwFramebufferTransparentNull(_GLFWwindow* window);
|
||||||
|
char _glfwWindowTabbingModeNull(_GLFWwindow* window);
|
||||||
void _glfwSetWindowResizableNull(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowResizableNull(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowDecoratedNull(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowDecoratedNull(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowFloatingNull(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowFloatingNull(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowMousePassthroughNull(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowMousePassthroughNull(_GLFWwindow* window, GLFWbool enabled);
|
||||||
|
void _glfwSetWindowTabbingModeNull(_GLFWwindow* window, char value);
|
||||||
float _glfwGetWindowOpacityNull(_GLFWwindow* window);
|
float _glfwGetWindowOpacityNull(_GLFWwindow* window);
|
||||||
void _glfwSetWindowOpacityNull(_GLFWwindow* window, float opacity);
|
void _glfwSetWindowOpacityNull(_GLFWwindow* window, float opacity);
|
||||||
void _glfwSetRawMouseMotionNull(_GLFWwindow *window, GLFWbool enabled);
|
void _glfwSetRawMouseMotionNull(_GLFWwindow *window, GLFWbool enabled);
|
||||||
|
@ -551,6 +551,15 @@ const char* _glfwGetClipboardStringNull(void)
|
|||||||
return _glfw.null.clipboardString;
|
return _glfw.null.clipboardString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _glfwSetWindowTabbingModeNull(_GLFWwindow* window, char value)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
char _glfwWindowTabbingModeNull(_GLFWwindow* window)
|
||||||
|
{
|
||||||
|
return GLFW_NEVER;
|
||||||
|
}
|
||||||
|
|
||||||
EGLenum _glfwGetEGLPlatformNull(EGLint** attribs)
|
EGLenum _glfwGetEGLPlatformNull(EGLint** attribs)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -661,12 +661,14 @@ GLFWbool _glfwConnectWin32(int platformID, _GLFWplatform* platform)
|
|||||||
_glfwWindowMaximizedWin32,
|
_glfwWindowMaximizedWin32,
|
||||||
_glfwWindowHoveredWin32,
|
_glfwWindowHoveredWin32,
|
||||||
_glfwFramebufferTransparentWin32,
|
_glfwFramebufferTransparentWin32,
|
||||||
|
_glfwWindowTabbingModeWin32,
|
||||||
_glfwGetWindowOpacityWin32,
|
_glfwGetWindowOpacityWin32,
|
||||||
_glfwSetWindowResizableWin32,
|
_glfwSetWindowResizableWin32,
|
||||||
_glfwSetWindowDecoratedWin32,
|
_glfwSetWindowDecoratedWin32,
|
||||||
_glfwSetWindowFloatingWin32,
|
_glfwSetWindowFloatingWin32,
|
||||||
_glfwSetWindowOpacityWin32,
|
_glfwSetWindowOpacityWin32,
|
||||||
_glfwSetWindowMousePassthroughWin32,
|
_glfwSetWindowMousePassthroughWin32,
|
||||||
|
_glfwSetWindowTabbingModeWin32,
|
||||||
_glfwPollEventsWin32,
|
_glfwPollEventsWin32,
|
||||||
_glfwWaitEventsWin32,
|
_glfwWaitEventsWin32,
|
||||||
_glfwWaitEventsTimeoutWin32,
|
_glfwWaitEventsTimeoutWin32,
|
||||||
|
@ -566,12 +566,14 @@ GLFWbool _glfwWindowVisibleWin32(_GLFWwindow* window);
|
|||||||
GLFWbool _glfwWindowMaximizedWin32(_GLFWwindow* window);
|
GLFWbool _glfwWindowMaximizedWin32(_GLFWwindow* window);
|
||||||
GLFWbool _glfwWindowHoveredWin32(_GLFWwindow* window);
|
GLFWbool _glfwWindowHoveredWin32(_GLFWwindow* window);
|
||||||
GLFWbool _glfwFramebufferTransparentWin32(_GLFWwindow* window);
|
GLFWbool _glfwFramebufferTransparentWin32(_GLFWwindow* window);
|
||||||
|
char _glfwWindowTabbingModeWin32(_GLFWwindow* window);
|
||||||
void _glfwSetWindowResizableWin32(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowResizableWin32(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowDecoratedWin32(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowDecoratedWin32(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowFloatingWin32(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowFloatingWin32(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowMousePassthroughWin32(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowMousePassthroughWin32(_GLFWwindow* window, GLFWbool enabled);
|
||||||
float _glfwGetWindowOpacityWin32(_GLFWwindow* window);
|
float _glfwGetWindowOpacityWin32(_GLFWwindow* window);
|
||||||
void _glfwSetWindowOpacityWin32(_GLFWwindow* window, float opacity);
|
void _glfwSetWindowOpacityWin32(_GLFWwindow* window, float opacity);
|
||||||
|
void _glfwSetWindowTabbingModeWin32(_GLFWwindow* window, char value);
|
||||||
|
|
||||||
void _glfwSetRawMouseMotionWin32(_GLFWwindow *window, GLFWbool enabled);
|
void _glfwSetRawMouseMotionWin32(_GLFWwindow *window, GLFWbool enabled);
|
||||||
GLFWbool _glfwRawMouseMotionSupportedWin32(void);
|
GLFWbool _glfwRawMouseMotionSupportedWin32(void);
|
||||||
|
@ -2373,6 +2373,16 @@ const char* _glfwGetClipboardStringWin32(void)
|
|||||||
return _glfw.win32.clipboardString;
|
return _glfw.win32.clipboardString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _glfwSetWindowTabbingModeWin32(_GLFWwindow* window, char value)
|
||||||
|
{
|
||||||
|
// Silently ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
char _glfwWindowTabbingModeWin32(_GLFWwindow* window)
|
||||||
|
{
|
||||||
|
return GLFW_NEVER;
|
||||||
|
}
|
||||||
|
|
||||||
EGLenum _glfwGetEGLPlatformWin32(EGLint** attribs)
|
EGLenum _glfwGetEGLPlatformWin32(EGLint** attribs)
|
||||||
{
|
{
|
||||||
if (_glfw.egl.ANGLE_platform_angle)
|
if (_glfw.egl.ANGLE_platform_angle)
|
||||||
|
11
src/window.c
11
src/window.c
@ -293,6 +293,8 @@ void glfwDefaultWindowHints(void)
|
|||||||
|
|
||||||
// The default is to use full Retina resolution framebuffers
|
// The default is to use full Retina resolution framebuffers
|
||||||
_glfw.hints.window.ns.retina = GLFW_TRUE;
|
_glfw.hints.window.ns.retina = GLFW_TRUE;
|
||||||
|
|
||||||
|
_glfw.hints.window.ns.tabbingMode = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI void glfwWindowHint(int hint, int value)
|
GLFWAPI void glfwWindowHint(int hint, int value)
|
||||||
@ -385,6 +387,9 @@ GLFWAPI void glfwWindowHint(int hint, int value)
|
|||||||
case GLFW_COCOA_GRAPHICS_SWITCHING:
|
case GLFW_COCOA_GRAPHICS_SWITCHING:
|
||||||
_glfw.hints.context.nsgl.offline = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.context.nsgl.offline = value ? GLFW_TRUE : GLFW_FALSE;
|
||||||
return;
|
return;
|
||||||
|
case GLFW_COCOA_TABBING_MODE:
|
||||||
|
_glfw.hints.window.ns.tabbingMode = value;
|
||||||
|
return;
|
||||||
case GLFW_SCALE_TO_MONITOR:
|
case GLFW_SCALE_TO_MONITOR:
|
||||||
_glfw.hints.window.scaleToMonitor = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.scaleToMonitor = value ? GLFW_TRUE : GLFW_FALSE;
|
||||||
return;
|
return;
|
||||||
@ -902,6 +907,8 @@ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* handle, int attrib)
|
|||||||
return window->context.release;
|
return window->context.release;
|
||||||
case GLFW_CONTEXT_NO_ERROR:
|
case GLFW_CONTEXT_NO_ERROR:
|
||||||
return window->context.noerror;
|
return window->context.noerror;
|
||||||
|
case GLFW_COCOA_TABBING_MODE:
|
||||||
|
return _glfw.platform.windowTabbingMode(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib);
|
_glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib);
|
||||||
@ -949,6 +956,10 @@ GLFWAPI void glfwSetWindowAttrib(GLFWwindow* handle, int attrib, int value)
|
|||||||
window->mousePassthrough = value;
|
window->mousePassthrough = value;
|
||||||
_glfw.platform.setWindowMousePassthrough(window, value);
|
_glfw.platform.setWindowMousePassthrough(window, value);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case GLFW_COCOA_TABBING_MODE:
|
||||||
|
_glfw.platform.setWindowTabbingMode(window, value);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib);
|
_glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib);
|
||||||
|
@ -442,12 +442,14 @@ GLFWbool _glfwConnectWayland(int platformID, _GLFWplatform* platform)
|
|||||||
_glfwWindowMaximizedWayland,
|
_glfwWindowMaximizedWayland,
|
||||||
_glfwWindowHoveredWayland,
|
_glfwWindowHoveredWayland,
|
||||||
_glfwFramebufferTransparentWayland,
|
_glfwFramebufferTransparentWayland,
|
||||||
|
_glfwWindowTabbingModeWayland,
|
||||||
_glfwGetWindowOpacityWayland,
|
_glfwGetWindowOpacityWayland,
|
||||||
_glfwSetWindowResizableWayland,
|
_glfwSetWindowResizableWayland,
|
||||||
_glfwSetWindowDecoratedWayland,
|
_glfwSetWindowDecoratedWayland,
|
||||||
_glfwSetWindowFloatingWayland,
|
_glfwSetWindowFloatingWayland,
|
||||||
_glfwSetWindowOpacityWayland,
|
_glfwSetWindowOpacityWayland,
|
||||||
_glfwSetWindowMousePassthroughWayland,
|
_glfwSetWindowMousePassthroughWayland,
|
||||||
|
_glfwSetWindowTabbingModeWayland,
|
||||||
_glfwPollEventsWayland,
|
_glfwPollEventsWayland,
|
||||||
_glfwWaitEventsWayland,
|
_glfwWaitEventsWayland,
|
||||||
_glfwWaitEventsTimeoutWayland,
|
_glfwWaitEventsTimeoutWayland,
|
||||||
|
@ -469,12 +469,14 @@ GLFWbool _glfwWindowVisibleWayland(_GLFWwindow* window);
|
|||||||
GLFWbool _glfwWindowMaximizedWayland(_GLFWwindow* window);
|
GLFWbool _glfwWindowMaximizedWayland(_GLFWwindow* window);
|
||||||
GLFWbool _glfwWindowHoveredWayland(_GLFWwindow* window);
|
GLFWbool _glfwWindowHoveredWayland(_GLFWwindow* window);
|
||||||
GLFWbool _glfwFramebufferTransparentWayland(_GLFWwindow* window);
|
GLFWbool _glfwFramebufferTransparentWayland(_GLFWwindow* window);
|
||||||
|
char _glfwWindowTabbingModeWayland(_GLFWwindow* window);
|
||||||
void _glfwSetWindowResizableWayland(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowResizableWayland(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowDecoratedWayland(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowDecoratedWayland(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowFloatingWayland(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowFloatingWayland(_GLFWwindow* window, GLFWbool enabled);
|
||||||
float _glfwGetWindowOpacityWayland(_GLFWwindow* window);
|
float _glfwGetWindowOpacityWayland(_GLFWwindow* window);
|
||||||
void _glfwSetWindowOpacityWayland(_GLFWwindow* window, float opacity);
|
void _glfwSetWindowOpacityWayland(_GLFWwindow* window, float opacity);
|
||||||
void _glfwSetWindowMousePassthroughWayland(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowMousePassthroughWayland(_GLFWwindow* window, GLFWbool enabled);
|
||||||
|
void _glfwSetWindowTabbingModeWayland(_GLFWwindow* window, char value);
|
||||||
|
|
||||||
void _glfwSetRawMouseMotionWayland(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetRawMouseMotionWayland(_GLFWwindow* window, GLFWbool enabled);
|
||||||
GLFWbool _glfwRawMouseMotionSupportedWayland(void);
|
GLFWbool _glfwRawMouseMotionSupportedWayland(void);
|
||||||
|
@ -2775,6 +2775,16 @@ const char* _glfwGetClipboardStringWayland(void)
|
|||||||
return _glfw.wl.clipboardString;
|
return _glfw.wl.clipboardString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _glfwSetWindowTabbingModeWayland(_GLFWwindow* window, const char mode)
|
||||||
|
{
|
||||||
|
// Silently ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
char _glfwWindowTabbingModeWayland(_GLFWwindow* window)
|
||||||
|
{
|
||||||
|
return GLFW_NEVER;
|
||||||
|
}
|
||||||
|
|
||||||
EGLenum _glfwGetEGLPlatformWayland(EGLint** attribs)
|
EGLenum _glfwGetEGLPlatformWayland(EGLint** attribs)
|
||||||
{
|
{
|
||||||
if (_glfw.egl.EXT_platform_base && _glfw.egl.EXT_platform_wayland)
|
if (_glfw.egl.EXT_platform_base && _glfw.egl.EXT_platform_wayland)
|
||||||
|
@ -1232,12 +1232,14 @@ GLFWbool _glfwConnectX11(int platformID, _GLFWplatform* platform)
|
|||||||
_glfwWindowMaximizedX11,
|
_glfwWindowMaximizedX11,
|
||||||
_glfwWindowHoveredX11,
|
_glfwWindowHoveredX11,
|
||||||
_glfwFramebufferTransparentX11,
|
_glfwFramebufferTransparentX11,
|
||||||
|
_glfwWindowTabbingModeX11,
|
||||||
_glfwGetWindowOpacityX11,
|
_glfwGetWindowOpacityX11,
|
||||||
_glfwSetWindowResizableX11,
|
_glfwSetWindowResizableX11,
|
||||||
_glfwSetWindowDecoratedX11,
|
_glfwSetWindowDecoratedX11,
|
||||||
_glfwSetWindowFloatingX11,
|
_glfwSetWindowFloatingX11,
|
||||||
_glfwSetWindowOpacityX11,
|
_glfwSetWindowOpacityX11,
|
||||||
_glfwSetWindowMousePassthroughX11,
|
_glfwSetWindowMousePassthroughX11,
|
||||||
|
_glfwSetWindowTabbingModeX11,
|
||||||
_glfwPollEventsX11,
|
_glfwPollEventsX11,
|
||||||
_glfwWaitEventsX11,
|
_glfwWaitEventsX11,
|
||||||
_glfwWaitEventsTimeoutX11,
|
_glfwWaitEventsTimeoutX11,
|
||||||
|
@ -928,12 +928,14 @@ GLFWbool _glfwWindowVisibleX11(_GLFWwindow* window);
|
|||||||
GLFWbool _glfwWindowMaximizedX11(_GLFWwindow* window);
|
GLFWbool _glfwWindowMaximizedX11(_GLFWwindow* window);
|
||||||
GLFWbool _glfwWindowHoveredX11(_GLFWwindow* window);
|
GLFWbool _glfwWindowHoveredX11(_GLFWwindow* window);
|
||||||
GLFWbool _glfwFramebufferTransparentX11(_GLFWwindow* window);
|
GLFWbool _glfwFramebufferTransparentX11(_GLFWwindow* window);
|
||||||
|
char _glfwWindowTabbingModeX11(_GLFWwindow* window);
|
||||||
void _glfwSetWindowResizableX11(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowResizableX11(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowDecoratedX11(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowDecoratedX11(_GLFWwindow* window, GLFWbool enabled);
|
||||||
void _glfwSetWindowFloatingX11(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowFloatingX11(_GLFWwindow* window, GLFWbool enabled);
|
||||||
float _glfwGetWindowOpacityX11(_GLFWwindow* window);
|
float _glfwGetWindowOpacityX11(_GLFWwindow* window);
|
||||||
void _glfwSetWindowOpacityX11(_GLFWwindow* window, float opacity);
|
void _glfwSetWindowOpacityX11(_GLFWwindow* window, float opacity);
|
||||||
void _glfwSetWindowMousePassthroughX11(_GLFWwindow* window, GLFWbool enabled);
|
void _glfwSetWindowMousePassthroughX11(_GLFWwindow* window, GLFWbool enabled);
|
||||||
|
void _glfwSetWindowTabbingModeX11(_GLFWwindow* window, char value);
|
||||||
|
|
||||||
void _glfwSetRawMouseMotionX11(_GLFWwindow *window, GLFWbool enabled);
|
void _glfwSetRawMouseMotionX11(_GLFWwindow *window, GLFWbool enabled);
|
||||||
GLFWbool _glfwRawMouseMotionSupportedX11(void);
|
GLFWbool _glfwRawMouseMotionSupportedX11(void);
|
||||||
|
@ -3082,6 +3082,16 @@ const char* _glfwGetClipboardStringX11(void)
|
|||||||
return getSelectionString(_glfw.x11.CLIPBOARD);
|
return getSelectionString(_glfw.x11.CLIPBOARD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _glfwSetWindowTabbingModeX11(_GLFWwindow* window, const char mode)
|
||||||
|
{
|
||||||
|
// Silently ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
char _glfwWindowTabbingModeX11(_GLFWwindow* window)
|
||||||
|
{
|
||||||
|
return GLFW_NEVER;
|
||||||
|
}
|
||||||
|
|
||||||
EGLenum _glfwGetEGLPlatformX11(EGLint** attribs)
|
EGLenum _glfwGetEGLPlatformX11(EGLint** attribs)
|
||||||
{
|
{
|
||||||
if (_glfw.egl.ANGLE_platform_angle)
|
if (_glfw.egl.ANGLE_platform_angle)
|
||||||
|
Loading…
Reference in New Issue
Block a user