mirror of
https://github.com/glfw/glfw.git
synced 2025-12-19 21:51:56 +00:00
Compare commits
5 Commits
2dfa98bb94
...
0d91df7942
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d91df7942 | ||
|
|
506c11ba43 | ||
|
|
d30d63313c | ||
|
|
f1284eb884 | ||
|
|
a94c9782d5 |
@ -229,7 +229,7 @@ video tutorials.
|
||||
- Brandon Schaefer
|
||||
- Sebastian Schuberth
|
||||
- Scr3amer
|
||||
- Jan Schuerkamp
|
||||
- Jan Schürkamp
|
||||
- Christian Sdunek
|
||||
- Matt Sealey
|
||||
- Steve Sexton
|
||||
|
||||
@ -129,6 +129,7 @@ information on what to include when reporting a bug.
|
||||
- [Wayland] Bugfix: The fractional scaling related objects were not destroyed
|
||||
- [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517)
|
||||
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
|
||||
- [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727)
|
||||
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
|
||||
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
|
||||
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`
|
||||
|
||||
5
deps/nuklear.h
vendored
5
deps/nuklear.h
vendored
@ -423,6 +423,11 @@ NK_STATIC_ASSERT(sizeof(nk_rune) >= 4);
|
||||
NK_STATIC_ASSERT(sizeof(nk_size) >= sizeof(void*));
|
||||
NK_STATIC_ASSERT(sizeof(nk_ptr) >= sizeof(void*));
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* disable `operands are different enum types` warning on MSVC */
|
||||
#pragma warning( disable: 5287 )
|
||||
#endif
|
||||
|
||||
/* ============================================================================
|
||||
*
|
||||
* API
|
||||
|
||||
@ -1129,6 +1129,7 @@ extern "C" {
|
||||
/*! @brief Win32 specific [window hint](@ref GLFW_WIN32_SHOWDEFAULT_hint).
|
||||
*/
|
||||
#define GLFW_WIN32_SHOWDEFAULT 0x00025002
|
||||
#define GLFW_WIN32_HWND_PARENT 0x00025003
|
||||
/*! @brief Wayland specific
|
||||
* [window hint](@ref GLFW_WAYLAND_APP_ID_hint).
|
||||
*
|
||||
@ -3053,6 +3054,14 @@ GLFWAPI void glfwDefaultWindowHints(void);
|
||||
*/
|
||||
GLFWAPI void glfwWindowHint(int hint, int value);
|
||||
|
||||
/*! @brief Sets the specified window hint to the desired value.
|
||||
*
|
||||
* @since Added in version 3.4.x.
|
||||
*
|
||||
* @ingroup window
|
||||
*/
|
||||
GLFWAPI void glfwWindowHintPointer(int hint, void* value);
|
||||
|
||||
/*! @brief Sets the specified window hint to the desired value.
|
||||
*
|
||||
* This function sets hints for the next call to @ref glfwCreateWindow. The
|
||||
|
||||
@ -425,6 +425,7 @@ struct _GLFWwndconfig
|
||||
struct {
|
||||
GLFWbool keymenu;
|
||||
GLFWbool showDefault;
|
||||
void* handleParent;
|
||||
} win32;
|
||||
struct {
|
||||
char appId[256];
|
||||
|
||||
@ -413,6 +413,7 @@ typedef struct _GLFWlibraryWGL
|
||||
typedef struct _GLFWwindowWin32
|
||||
{
|
||||
HWND handle;
|
||||
HWND handleParent;
|
||||
HICON bigIcon;
|
||||
HICON smallIcon;
|
||||
|
||||
|
||||
@ -46,17 +46,22 @@ static DWORD getWindowStyle(const _GLFWwindow* window)
|
||||
style |= WS_POPUP;
|
||||
else
|
||||
{
|
||||
style |= WS_SYSMENU | WS_MINIMIZEBOX;
|
||||
|
||||
if (window->decorated)
|
||||
if (!window->win32.handleParent)
|
||||
{
|
||||
style |= WS_CAPTION;
|
||||
style |= WS_SYSMENU | WS_MINIMIZEBOX;
|
||||
|
||||
if (window->resizable)
|
||||
style |= WS_MAXIMIZEBOX | WS_THICKFRAME;
|
||||
if (window->decorated)
|
||||
{
|
||||
style |= WS_CAPTION;
|
||||
|
||||
if (window->resizable)
|
||||
style |= WS_MAXIMIZEBOX | WS_THICKFRAME;
|
||||
}
|
||||
else
|
||||
style |= WS_POPUP;
|
||||
}
|
||||
else
|
||||
style |= WS_POPUP;
|
||||
style |= WS_CHILD;
|
||||
}
|
||||
|
||||
return style;
|
||||
@ -1391,7 +1396,7 @@ static int createNativeWindow(_GLFWwindow* window,
|
||||
style,
|
||||
frameX, frameY,
|
||||
frameWidth, frameHeight,
|
||||
NULL, // No parent window
|
||||
(HWND)wndconfig->win32.handleParent,
|
||||
NULL, // No window menu
|
||||
_glfw.win32.instance,
|
||||
(LPVOID) wndconfig);
|
||||
@ -1497,6 +1502,8 @@ GLFWbool _glfwCreateWindowWin32(_GLFWwindow* window,
|
||||
const _GLFWctxconfig* ctxconfig,
|
||||
const _GLFWfbconfig* fbconfig)
|
||||
{
|
||||
window->win32.handleParent = wndconfig->win32.handleParent;
|
||||
|
||||
if (!createNativeWindow(window, wndconfig, fbconfig))
|
||||
return GLFW_FALSE;
|
||||
|
||||
|
||||
12
src/window.c
12
src/window.c
@ -436,6 +436,18 @@ GLFWAPI void glfwWindowHint(int hint, int value)
|
||||
_glfwInputError(GLFW_INVALID_ENUM, "Invalid window hint 0x%08X", hint);
|
||||
}
|
||||
|
||||
GLFWAPI void glfwWindowHintPointer(int hint, void* value)
|
||||
{
|
||||
_GLFW_REQUIRE_INIT();
|
||||
|
||||
switch (hint)
|
||||
{
|
||||
case GLFW_WIN32_HWND_PARENT:
|
||||
_glfw.hints.window.win32.handleParent = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
GLFWAPI void glfwWindowHintString(int hint, const char* value)
|
||||
{
|
||||
assert(value != NULL);
|
||||
|
||||
@ -1267,17 +1267,21 @@ static void handleEvents(double* timeout)
|
||||
|
||||
if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8)
|
||||
{
|
||||
for (uint64_t i = 0; i < repeats; i++)
|
||||
if(_glfw.wl.keyboardFocus)
|
||||
{
|
||||
_glfwInputKey(_glfw.wl.keyboardFocus,
|
||||
translateKey(_glfw.wl.keyRepeatScancode),
|
||||
_glfw.wl.keyRepeatScancode,
|
||||
GLFW_PRESS,
|
||||
_glfw.wl.xkb.modifiers);
|
||||
inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode);
|
||||
for (uint64_t i = 0; i < repeats; i++)
|
||||
{
|
||||
_glfwInputKey(_glfw.wl.keyboardFocus,
|
||||
translateKey(_glfw.wl.keyRepeatScancode),
|
||||
_glfw.wl.keyRepeatScancode,
|
||||
GLFW_PRESS,
|
||||
_glfw.wl.xkb.modifiers);
|
||||
inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode);
|
||||
}
|
||||
|
||||
event = GLFW_TRUE;
|
||||
}
|
||||
|
||||
event = GLFW_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user