mirror of
https://github.com/Drezil/imgui.git
synced 2024-12-19 06:26:35 +00:00
Viewports: Fixed being unable to refocus windows when ConfigViewportsNoTaskBarIcon + ConfigViewportsNoDecoration are enabled. (#2420, #1542) [@PathogenDavid] + comments.
This commit is contained in:
parent
b1af4d36ce
commit
7ba774a440
12
imgui.cpp
12
imgui.cpp
@ -5611,13 +5611,19 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|||||||
|
|
||||||
// Update common viewport flags
|
// Update common viewport flags
|
||||||
ImGuiViewportFlags viewport_flags = (window->Viewport->Flags) & ~(ImGuiViewportFlags_TopMost | ImGuiViewportFlags_NoTaskBarIcon | ImGuiViewportFlags_NoDecoration);
|
ImGuiViewportFlags viewport_flags = (window->Viewport->Flags) & ~(ImGuiViewportFlags_TopMost | ImGuiViewportFlags_NoTaskBarIcon | ImGuiViewportFlags_NoDecoration);
|
||||||
|
const bool is_short_lived_floating_window = (flags & (ImGuiWindowFlags_ChildMenu | ImGuiWindowFlags_Tooltip | ImGuiWindowFlags_Popup)) != 0;
|
||||||
if (flags & ImGuiWindowFlags_Tooltip)
|
if (flags & ImGuiWindowFlags_Tooltip)
|
||||||
viewport_flags |= ImGuiViewportFlags_TopMost;
|
viewport_flags |= ImGuiViewportFlags_TopMost;
|
||||||
if (g.IO.ConfigViewportsNoTaskBarIcon || (flags & (ImGuiWindowFlags_ChildMenu | ImGuiWindowFlags_Tooltip | ImGuiWindowFlags_Popup)) != 0)
|
if (g.IO.ConfigViewportsNoTaskBarIcon || is_short_lived_floating_window)
|
||||||
viewport_flags |= ImGuiViewportFlags_NoTaskBarIcon;
|
viewport_flags |= ImGuiViewportFlags_NoTaskBarIcon;
|
||||||
if (g.IO.ConfigViewportsNoDecoration || (flags & (ImGuiWindowFlags_ChildMenu | ImGuiWindowFlags_Tooltip | ImGuiWindowFlags_Popup)) != 0)
|
if (g.IO.ConfigViewportsNoDecoration || is_short_lived_floating_window)
|
||||||
viewport_flags |= ImGuiViewportFlags_NoDecoration;
|
viewport_flags |= ImGuiViewportFlags_NoDecoration;
|
||||||
if ((viewport_flags & ImGuiViewportFlags_NoDecoration) && (viewport_flags & ImGuiViewportFlags_NoTaskBarIcon))
|
|
||||||
|
// For popups and menus that may be protruding out of their parent viewport, we enable _NoFocusOnClick so that clicking on them
|
||||||
|
// won't steal the OS focus away from their parent window (which may be reflected in OS the title bar decoration).
|
||||||
|
// Setting _NoFocusOnClick would technically prevent us from bringing back to front in case they are being covered by an OS window from a different app,
|
||||||
|
// but it shouldn't be much of a problem considering those are already popups that are closed when clicking elsewhere.
|
||||||
|
if (is_short_lived_floating_window)
|
||||||
viewport_flags |= ImGuiViewportFlags_NoFocusOnAppearing | ImGuiViewportFlags_NoFocusOnClick;
|
viewport_flags |= ImGuiViewportFlags_NoFocusOnAppearing | ImGuiViewportFlags_NoFocusOnClick;
|
||||||
|
|
||||||
// We can overwrite viewport flags using ImGuiWindowClass (advanced users)
|
// We can overwrite viewport flags using ImGuiWindowClass (advanced users)
|
||||||
|
Loading…
Reference in New Issue
Block a user