mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Fixed tooltip in own viewport over modal from being incorrectly dimmed. (#4729)
Normally we would aim to ensure that g.Windows[] gets maintained to reflect display layer but it is presently non trivial.
This commit is contained in:
parent
2080d12bd9
commit
b50b22d787
@ -99,16 +99,6 @@ Other changes:
|
|||||||
Note that Linux/Mac still have inconsistent support for multi-viewports. If you want to help see https://github.com/ocornut/imgui/issues/2117.
|
Note that Linux/Mac still have inconsistent support for multi-viewports. If you want to help see https://github.com/ocornut/imgui/issues/2117.
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
VERSION 1.86 WIP (In Progress)
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
Docking+Viewports Branch:
|
|
||||||
|
|
||||||
- Docking: Revert removal of io.ConfigDockingWithShift config option (removed in 1.83). (#4643)
|
|
||||||
- Backends: Made it possible to shutdown default Platform Backends before the Renderer backends. (#4656)
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
VERSION 1.86 WIP (In Progress)
|
VERSION 1.86 WIP (In Progress)
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
@ -154,9 +144,12 @@ Other Changes:
|
|||||||
|
|
||||||
Docking+Viewports Branch:
|
Docking+Viewports Branch:
|
||||||
|
|
||||||
|
- Docking: Revert removal of io.ConfigDockingWithShift config option (removed in 1.83). (#4643)
|
||||||
- Viewports: Made it possible to explicitly assign ImGuiWindowClass::ParentViewportId to 0 in order
|
- Viewports: Made it possible to explicitly assign ImGuiWindowClass::ParentViewportId to 0 in order
|
||||||
to ensure a window is not parented. Previously this would use the global default (which might be 0,
|
to ensure a window is not parented. Previously this would use the global default (which might be 0,
|
||||||
but not always as it would depend on io.ConfigViewportsNoDefaultParent). (#3152, #2871)
|
but not always as it would depend on io.ConfigViewportsNoDefaultParent). (#3152, #2871)
|
||||||
|
- Viewports: Fixed tooltip in own viewport over modal from being incorrectly dimmed. (#4729)
|
||||||
|
- Backends: Made it possible to shutdown default Platform Backends before the Renderer backends. (#4656)
|
||||||
- Disabled: Fixed nested BeginDisabled()/EndDisabled() bug in Docking branch due to bad merge. (#4655, #4452, #4453, #4462)
|
- Disabled: Fixed nested BeginDisabled()/EndDisabled() bug in Docking branch due to bad merge. (#4655, #4452, #4453, #4462)
|
||||||
|
|
||||||
|
|
||||||
|
18
imgui.cpp
18
imgui.cpp
@ -4534,11 +4534,15 @@ static void AddWindowToDrawData(ImGuiWindow* window, int layer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Layer is locked for the root window, however child windows may use a different viewport (e.g. extruding menu)
|
static inline int GetWindowDisplayLayer(ImGuiWindow* window)
|
||||||
static void AddRootWindowToDrawData(ImGuiWindow* window)
|
|
||||||
{
|
{
|
||||||
int layer = (window->Flags & ImGuiWindowFlags_Tooltip) ? 1 : 0;
|
return (window->Flags & ImGuiWindowFlags_Tooltip) ? 1 : 0;
|
||||||
AddWindowToDrawData(window, layer);
|
}
|
||||||
|
|
||||||
|
// Layer is locked for the root window, however child windows may use a different viewport (e.g. extruding menu)
|
||||||
|
static inline void AddRootWindowToDrawData(ImGuiWindow* window)
|
||||||
|
{
|
||||||
|
AddWindowToDrawData(window, GetWindowDisplayLayer(window));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawDataBuilder::FlattenIntoSingleLayer()
|
void ImDrawDataBuilder::FlattenIntoSingleLayer()
|
||||||
@ -7303,6 +7307,12 @@ bool ImGui::IsWindowChildOf(ImGuiWindow* window, ImGuiWindow* potential_parent,
|
|||||||
bool ImGui::IsWindowAbove(ImGuiWindow* potential_above, ImGuiWindow* potential_below)
|
bool ImGui::IsWindowAbove(ImGuiWindow* potential_above, ImGuiWindow* potential_below)
|
||||||
{
|
{
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
|
|
||||||
|
// It would be saner to ensure that display layer is always reflected in the g.Windows[] order, which would likely requires altering all manipulations of that array
|
||||||
|
const int display_layer_delta = GetWindowDisplayLayer(potential_above) - GetWindowDisplayLayer(potential_below);
|
||||||
|
if (display_layer_delta != 0)
|
||||||
|
return display_layer_delta > 0;
|
||||||
|
|
||||||
for (int i = g.Windows.Size - 1; i >= 0; i--)
|
for (int i = g.Windows.Size - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
ImGuiWindow* candidate_window = g.Windows[i];
|
ImGuiWindow* candidate_window = g.Windows[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user