mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-28 07:47:03 -05:00
impr: Refactor GLFW window hints into individual window files
This commit is contained in:
@@ -29,6 +29,7 @@ namespace hex {
|
||||
void resize(i32 width, i32 height);
|
||||
|
||||
private:
|
||||
void configureGLFW();
|
||||
void setupNativeWindow();
|
||||
void beginNativeWindowFrame();
|
||||
void endNativeWindowFrame();
|
||||
|
||||
@@ -72,6 +72,17 @@ namespace hex {
|
||||
}
|
||||
}
|
||||
|
||||
void Window::configureGLFW() {
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
||||
glfwWindowHint(GLFW_DECORATED, ImHexApi::System::isBorderlessWindowModeEnabled() ? GL_FALSE : GL_TRUE);
|
||||
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
|
||||
|
||||
#if defined(GLFW_WAYLAND_APP_ID)
|
||||
glfwWindowHintString(GLFW_WAYLAND_APP_ID, "imhex");
|
||||
#endif
|
||||
}
|
||||
|
||||
void Window::initNative() {
|
||||
log::impl::enableColorPrinting();
|
||||
|
||||
|
||||
@@ -20,6 +20,15 @@ namespace hex {
|
||||
errorMessageMacos(message.c_str());
|
||||
}
|
||||
|
||||
void Window::configureGLFW() {
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE);
|
||||
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, GLFW_TRUE);
|
||||
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
|
||||
}
|
||||
|
||||
void Window::initNative() {
|
||||
log::impl::enableColorPrinting();
|
||||
|
||||
|
||||
@@ -46,6 +46,13 @@ namespace hex {
|
||||
}, message.c_str());
|
||||
}
|
||||
|
||||
void Window::configureGLFW() {
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
||||
glfwWindowHint(GLFW_DECORATED, GL_FALSE);
|
||||
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_FALSE);
|
||||
}
|
||||
|
||||
void Window::initNative() {
|
||||
EM_ASM({
|
||||
// Save data directory
|
||||
|
||||
@@ -308,6 +308,21 @@ namespace hex {
|
||||
}
|
||||
}
|
||||
|
||||
void Window::configureGLFW() {
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
||||
glfwWindowHint(GLFW_DECORATED, ImHexApi::System::isBorderlessWindowModeEnabled() ? GL_FALSE : GL_TRUE);
|
||||
|
||||
// Windows versions before Windows 10 have issues with transparent framebuffers
|
||||
// causing the entire window to be slightly transparent ignoring all configurations
|
||||
OSVERSIONINFOA versionInfo = { };
|
||||
if (::GetVersionExA(&versionInfo) && versionInfo.dwMajorVersion >= 10) {
|
||||
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
|
||||
} else {
|
||||
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Window::initNative() {
|
||||
if (ImHexApi::System::isDebugBuild()) {
|
||||
|
||||
@@ -717,25 +717,8 @@ namespace hex {
|
||||
std::abort();
|
||||
}
|
||||
|
||||
// Set up used OpenGL version
|
||||
#if defined(OS_MACOS)
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE);
|
||||
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, GLFW_TRUE);
|
||||
#else
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
||||
glfwWindowHint(GLFW_DECORATED, ImHexApi::System::isBorderlessWindowModeEnabled() ? GL_FALSE : GL_TRUE);
|
||||
#endif
|
||||
|
||||
#if defined(OS_LINUX) && defined(GLFW_WAYLAND_APP_ID)
|
||||
glfwWindowHintString(GLFW_WAYLAND_APP_ID, "imhex");
|
||||
#endif
|
||||
|
||||
configureGLFW();
|
||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
||||
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
|
||||
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
|
||||
glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_API);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user