|
@@ -30,6 +30,7 @@
|
|
|
// CHANGELOG
|
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
|
// 2025-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
|
|
|
+// 2025-02-21: [Docking] Update monitors and work areas information every frame, as the later may change regardless of monitor changes. (#8415)
|
|
|
// 2024-11-05: [Docking] Added Linux workaround for spurious mouse up events emitted while dragging and creating new viewport. (#3158, #7733, #7922)
|
|
|
// 2024-08-22: moved some OS/backend related function pointers from ImGuiIO to ImGuiPlatformIO:
|
|
|
// - io.GetClipboardTextFn -> platform_io.Platform_GetClipboardTextFn
|
|
@@ -180,7 +181,6 @@ struct ImGui_ImplGlfw_Data
|
|
|
GLFWwindow* KeyOwnerWindows[GLFW_KEY_LAST];
|
|
|
bool InstalledCallbacks;
|
|
|
bool CallbacksChainForAllWindows;
|
|
|
- bool WantUpdateMonitors;
|
|
|
#ifdef EMSCRIPTEN_USE_EMBEDDED_GLFW3
|
|
|
const char* CanvasSelector;
|
|
|
#endif
|
|
@@ -519,8 +519,7 @@ void ImGui_ImplGlfw_CharCallback(GLFWwindow* window, unsigned int c)
|
|
|
|
|
|
void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor*, int)
|
|
|
{
|
|
|
- ImGui_ImplGlfw_Data* bd = ImGui_ImplGlfw_GetBackendData();
|
|
|
- bd->WantUpdateMonitors = true;
|
|
|
+ // This function is technically part of the API even if we stopped using the callback, so leaving it around.
|
|
|
}
|
|
|
|
|
|
#ifdef EMSCRIPTEN_USE_EMBEDDED_GLFW3
|
|
@@ -627,7 +626,6 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw
|
|
|
|
|
|
bd->Window = window;
|
|
|
bd->Time = 0.0;
|
|
|
- bd->WantUpdateMonitors = true;
|
|
|
|
|
|
ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO();
|
|
|
platform_io.Platform_SetClipboardTextFn = [](ImGuiContext*, const char* text) { glfwSetClipboardString(nullptr, text); };
|
|
@@ -910,9 +908,7 @@ static void ImGui_ImplGlfw_UpdateGamepads()
|
|
|
|
|
|
static void ImGui_ImplGlfw_UpdateMonitors()
|
|
|
{
|
|
|
- ImGui_ImplGlfw_Data* bd = ImGui_ImplGlfw_GetBackendData();
|
|
|
ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO();
|
|
|
- bd->WantUpdateMonitors = false;
|
|
|
|
|
|
int monitors_count = 0;
|
|
|
GLFWmonitor** glfw_monitors = glfwGetMonitors(&monitors_count);
|
|
@@ -966,8 +962,7 @@ void ImGui_ImplGlfw_NewFrame()
|
|
|
io.DisplaySize = ImVec2((float)w, (float)h);
|
|
|
if (w > 0 && h > 0)
|
|
|
io.DisplayFramebufferScale = ImVec2((float)display_w / (float)w, (float)display_h / (float)h);
|
|
|
- if (bd->WantUpdateMonitors)
|
|
|
- ImGui_ImplGlfw_UpdateMonitors();
|
|
|
+ ImGui_ImplGlfw_UpdateMonitors();
|
|
|
|
|
|
// Setup time step
|
|
|
// (Accept glfwGetTime() not returning a monotonically increasing value. Seems to happens on disconnecting peripherals and probably on VMs and Emscripten, see #6491, #6189, #6114, #3644)
|