751eff0edf
### Problem description #### Problem 1 In borderless mode ImHex disables the standard macOS titlebar rendering and input processing. As a result double clicking the titlebar does not trigger the native macOS behavior set in `System Settings -> Desktop & Dock -> Double-click a window's title bar to [Zoom/Minimize/Do nothing]`. #### Problem 2 The ImHex window shows up as blank/transparent when de-minimizing it from the dock. #### Problem 3 Widgets experience ghost hover inputs from the past position of the cursor during live resizing. ### Implementation description ImGui elements consume input events in the order they are drawn. As a result by "drawing" an `InvisibleButton` over the content area of the titlebar we can catch unprocessed clicks in the titlebar area. Connecting this button's double clicks to the native window is then a trivial endeavour. The blank windows was caused by the rendering stack clearing the GL buffer, but proceeding to draw nothing in it. I have short circuited this path. Ghost hover inputs were squelched by consistently moving the ImGui cursor to `0, 0` during a live resize. The OS will dispatch a cursor positioning event once the resizing ends, restoring normal behavior. ### Screenshots N/A ### Additional things N/A --------- Co-authored-by: Nik <werwolv98@gmail.com>
24 lines
605 B
C++
24 lines
605 B
C++
#pragma once
|
|
|
|
#if defined(OS_MACOS)
|
|
|
|
struct GLFWwindow;
|
|
|
|
extern "C" {
|
|
|
|
void errorMessageMacos(const char *message);
|
|
void openWebpageMacos(const char *url);
|
|
bool isMacosSystemDarkModeEnabled();
|
|
bool isMacosFullScreenModeEnabled(GLFWwindow *window);
|
|
float getBackingScaleFactor();
|
|
|
|
void setupMacosWindowStyle(GLFWwindow *window, bool borderlessWindowMode);
|
|
|
|
void enumerateFontsMacos();
|
|
|
|
void macosHandleTitlebarDoubleClickGesture(GLFWwindow *window);
|
|
bool macosIsWindowBeingResizedByUser(GLFWwindow *window);
|
|
}
|
|
|
|
#endif
|