|
@@ -1380,12 +1380,6 @@ ImGuiIO::ImGuiIO()
|
|
|
FontAllowUserScaling = false;
|
|
|
DisplayFramebufferScale = ImVec2(1.0f, 1.0f);
|
|
|
|
|
|
- MouseDoubleClickTime = 0.30f;
|
|
|
- MouseDoubleClickMaxDist = 6.0f;
|
|
|
- MouseDragThreshold = 6.0f;
|
|
|
- KeyRepeatDelay = 0.275f;
|
|
|
- KeyRepeatRate = 0.050f;
|
|
|
-
|
|
|
// Miscellaneous options
|
|
|
MouseDrawCursor = false;
|
|
|
#ifdef __APPLE__
|
|
@@ -1404,6 +1398,13 @@ ImGuiIO::ImGuiIO()
|
|
|
ConfigDebugBeginReturnValueOnce = false;
|
|
|
ConfigDebugBeginReturnValueLoop = false;
|
|
|
|
|
|
+ // Inputs Behaviors
|
|
|
+ MouseDoubleClickTime = 0.30f;
|
|
|
+ MouseDoubleClickMaxDist = 6.0f;
|
|
|
+ MouseDragThreshold = 6.0f;
|
|
|
+ KeyRepeatDelay = 0.275f;
|
|
|
+ KeyRepeatRate = 0.050f;
|
|
|
+
|
|
|
// Platform Functions
|
|
|
// Note: Initialize() will setup default clipboard/ime handlers.
|
|
|
BackendPlatformName = BackendRendererName = NULL;
|
|
@@ -4229,8 +4230,9 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags)
|
|
|
// Test if another item is active (e.g. being dragged)
|
|
|
const ImGuiID id = g.LastItemData.ID;
|
|
|
if ((flags & ImGuiHoveredFlags_AllowWhenBlockedByActiveItem) == 0)
|
|
|
- if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap && g.ActiveId != window->MoveId)
|
|
|
- return false;
|
|
|
+ if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap)
|
|
|
+ if (g.ActiveId != window->MoveId)
|
|
|
+ return false;
|
|
|
|
|
|
// Test if interactions on this window are blocked by an active popup or modal.
|
|
|
// The ImGuiHoveredFlags_AllowWhenBlockedByPopup flag will be tested here.
|
|
@@ -4242,7 +4244,8 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags)
|
|
|
return false;
|
|
|
|
|
|
// Special handling for calling after Begin() which represent the title bar or tab.
|
|
|
- // When the window is skipped/collapsed (SkipItems==true) that last item will never be overwritten so we need to detect the case.
|
|
|
+ // When the window is skipped/collapsed (SkipItems==true) that last item (always ->MoveId submitted by Begin)
|
|
|
+ // will never be overwritten so we need to detect the case.
|
|
|
if (id == window->MoveId && window->WriteAccessed)
|
|
|
return false;
|
|
|
|
|
@@ -4640,9 +4643,10 @@ void ImGui::UpdateMouseMovingWindowEndFrame()
|
|
|
StartMouseMovingWindow(g.HoveredWindow); //-V595
|
|
|
|
|
|
// Cancel moving if clicked outside of title bar
|
|
|
- if (g.IO.ConfigWindowsMoveFromTitleBarOnly && !(root_window->Flags & ImGuiWindowFlags_NoTitleBar))
|
|
|
- if (!root_window->TitleBarRect().Contains(g.IO.MouseClickedPos[0]))
|
|
|
- g.MovingWindow = NULL;
|
|
|
+ if (g.IO.ConfigWindowsMoveFromTitleBarOnly)
|
|
|
+ if (!(root_window->Flags & ImGuiWindowFlags_NoTitleBar))
|
|
|
+ if (!root_window->TitleBarRect().Contains(g.IO.MouseClickedPos[0]))
|
|
|
+ g.MovingWindow = NULL;
|
|
|
|
|
|
// Cancel moving if clicked over an item which was disabled or inhibited by popups (note that we know HoveredId == 0 already)
|
|
|
if (g.HoveredIdIsDisabled)
|
|
@@ -5200,7 +5204,7 @@ static void ImGui::RenderDimmedBackgrounds()
|
|
|
}
|
|
|
else if (dim_bg_for_window_list)
|
|
|
{
|
|
|
- // Draw dimming behind CTRL+Tab target window
|
|
|
+ // Draw dimming behind CTRL+Tab target window and behind CTRL+Tab UI window
|
|
|
RenderDimmedBackgroundBehindWindow(g.NavWindowingTargetAnim, GetColorU32(ImGuiCol_NavWindowingDimBg, g.DimBgRatio));
|
|
|
|
|
|
// Draw border around CTRL+Tab target window
|
|
@@ -5325,9 +5329,6 @@ void ImGui::Render()
|
|
|
g.IO.MetricsRenderWindows = 0;
|
|
|
CallContextHooks(&g, ImGuiContextHookType_RenderPre);
|
|
|
|
|
|
- // Draw modal/window whitening backgrounds
|
|
|
- RenderDimmedBackgrounds();
|
|
|
-
|
|
|
// Add background ImDrawList (for each active viewport)
|
|
|
for (ImGuiViewportP* viewport : g.Viewports)
|
|
|
{
|
|
@@ -5336,6 +5337,9 @@ void ImGui::Render()
|
|
|
AddDrawListToDrawDataEx(&viewport->DrawDataP, viewport->DrawDataBuilder.Layers[0], GetBackgroundDrawList(viewport));
|
|
|
}
|
|
|
|
|
|
+ // Draw modal/window whitening backgrounds
|
|
|
+ RenderDimmedBackgrounds();
|
|
|
+
|
|
|
// Add ImDrawList to render
|
|
|
ImGuiWindow* windows_to_render_top_most[2];
|
|
|
windows_to_render_top_most[0] = (g.NavWindowingTarget && !(g.NavWindowingTarget->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus)) ? g.NavWindowingTarget->RootWindow : NULL;
|
|
@@ -14335,10 +14339,11 @@ static void ImGui::UpdateViewportsNewFrame()
|
|
|
|
|
|
for (ImGuiViewportP* viewport : g.Viewports)
|
|
|
{
|
|
|
- // Lock down space taken by menu bars and status bars, reset the offset for fucntions like BeginMainMenuBar() to alter them again.
|
|
|
- viewport->WorkOffsetMin = viewport->BuildWorkOffsetMin;
|
|
|
- viewport->WorkOffsetMax = viewport->BuildWorkOffsetMax;
|
|
|
- viewport->BuildWorkOffsetMin = viewport->BuildWorkOffsetMax = ImVec2(0.0f, 0.0f);
|
|
|
+ // Lock down space taken by menu bars and status bars
|
|
|
+ // Setup initial value for functions like BeginMainMenuBar(), DockSpaceOverViewport() etc.
|
|
|
+ viewport->WorkInsetMin = viewport->BuildWorkInsetMin;
|
|
|
+ viewport->WorkInsetMax = viewport->BuildWorkInsetMax;
|
|
|
+ viewport->BuildWorkInsetMin = viewport->BuildWorkInsetMax = ImVec2(0.0f, 0.0f);
|
|
|
viewport->UpdateWorkRect();
|
|
|
}
|
|
|
}
|
|
@@ -15762,9 +15767,9 @@ void ImGui::DebugNodeViewport(ImGuiViewportP* viewport)
|
|
|
if (open)
|
|
|
{
|
|
|
ImGuiWindowFlags flags = viewport->Flags;
|
|
|
- BulletText("Main Pos: (%.0f,%.0f), Size: (%.0f,%.0f)\nWorkArea Offset Left: %.0f Top: %.0f, Right: %.0f, Bottom: %.0f",
|
|
|
+ BulletText("Main Pos: (%.0f,%.0f), Size: (%.0f,%.0f)\nWorkArea Inset Left: %.0f Top: %.0f, Right: %.0f, Bottom: %.0f",
|
|
|
viewport->Pos.x, viewport->Pos.y, viewport->Size.x, viewport->Size.y,
|
|
|
- viewport->WorkOffsetMin.x, viewport->WorkOffsetMin.y, viewport->WorkOffsetMax.x, viewport->WorkOffsetMax.y);
|
|
|
+ viewport->WorkInsetMin.x, viewport->WorkInsetMin.y, viewport->WorkInsetMax.x, viewport->WorkInsetMax.y);
|
|
|
BulletText("Flags: 0x%04X =%s%s%s", viewport->Flags,
|
|
|
(flags & ImGuiViewportFlags_IsPlatformWindow) ? " IsPlatformWindow" : "",
|
|
|
(flags & ImGuiViewportFlags_IsPlatformMonitor) ? " IsPlatformMonitor" : "",
|