Skip to content

Commit 2994e69

Browse files
committed
impr: Refactor GLFW window hints into individual window files
1 parent 49987b8 commit 2994e69

File tree

6 files changed

+44
-18
lines changed

6 files changed

+44
-18
lines changed

main/gui/include/window.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace hex {
2929
void resize(i32 width, i32 height);
3030

3131
private:
32+
void configureGLFW();
3233
void setupNativeWindow();
3334
void beginNativeWindowFrame();
3435
void endNativeWindowFrame();

main/gui/source/window/linux_window.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,17 @@ namespace hex {
7272
}
7373
}
7474

75+
void Window::configureGLFW() {
76+
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
77+
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
78+
glfwWindowHint(GLFW_DECORATED, ImHexApi::System::isBorderlessWindowModeEnabled() ? GL_FALSE : GL_TRUE);
79+
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
80+
81+
#if defined(GLFW_WAYLAND_APP_ID)
82+
glfwWindowHintString(GLFW_WAYLAND_APP_ID, "imhex");
83+
#endif
84+
}
85+
7586
void Window::initNative() {
7687
log::impl::enableColorPrinting();
7788

main/gui/source/window/macos_window.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ namespace hex {
2020
errorMessageMacos(message.c_str());
2121
}
2222

23+
void Window::configureGLFW() {
24+
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
25+
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
26+
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
27+
glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE);
28+
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, GLFW_TRUE);
29+
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
30+
}
31+
2332
void Window::initNative() {
2433
log::impl::enableColorPrinting();
2534

main/gui/source/window/web_window.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ namespace hex {
4646
}, message.c_str());
4747
}
4848

49+
void Window::configureGLFW() {
50+
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
51+
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
52+
glfwWindowHint(GLFW_DECORATED, GL_FALSE);
53+
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_FALSE);
54+
}
55+
4956
void Window::initNative() {
5057
EM_ASM({
5158
// Save data directory

main/gui/source/window/win_window.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,21 @@ namespace hex {
308308
}
309309
}
310310

311+
void Window::configureGLFW() {
312+
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
313+
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
314+
glfwWindowHint(GLFW_DECORATED, ImHexApi::System::isBorderlessWindowModeEnabled() ? GL_FALSE : GL_TRUE);
315+
316+
// Windows versions before Windows 10 have issues with transparent framebuffers
317+
// causing the entire window to be slightly transparent ignoring all configurations
318+
OSVERSIONINFOA versionInfo = { };
319+
if (::GetVersionExA(&versionInfo) && versionInfo.dwMajorVersion >= 10) {
320+
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
321+
} else {
322+
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_FALSE);
323+
}
324+
}
325+
311326

312327
void Window::initNative() {
313328
if (ImHexApi::System::isDebugBuild()) {

main/gui/source/window/window.cpp

+1-18
Original file line numberDiff line numberDiff line change
@@ -717,25 +717,8 @@ namespace hex {
717717
std::abort();
718718
}
719719

720-
// Set up used OpenGL version
721-
#if defined(OS_MACOS)
722-
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
723-
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
724-
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
725-
glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE);
726-
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, GLFW_TRUE);
727-
#else
728-
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
729-
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
730-
glfwWindowHint(GLFW_DECORATED, ImHexApi::System::isBorderlessWindowModeEnabled() ? GL_FALSE : GL_TRUE);
731-
#endif
732-
733-
#if defined(OS_LINUX) && defined(GLFW_WAYLAND_APP_ID)
734-
glfwWindowHintString(GLFW_WAYLAND_APP_ID, "imhex");
735-
#endif
736-
720+
configureGLFW();
737721
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
738-
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
739722
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
740723
glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_API);
741724

0 commit comments

Comments
 (0)