diff --git a/imgui.cpp b/imgui.cpp index ae4ad95aa..ad0cef4c2 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -3697,6 +3697,7 @@ const char* ImGui::GetStyleColorName(ImGuiCol idx) case ImGuiCol_Header: return "Header"; case ImGuiCol_HeaderHovered: return "HeaderHovered"; case ImGuiCol_HeaderActive: return "HeaderActive"; + case ImGuiCol_HeaderSelected: return "HeaderSelected"; case ImGuiCol_Separator: return "Separator"; case ImGuiCol_SeparatorHovered: return "SeparatorHovered"; case ImGuiCol_SeparatorActive: return "SeparatorActive"; diff --git a/imgui.h b/imgui.h index fe0938867..ef30bfb57 100644 --- a/imgui.h +++ b/imgui.h @@ -1798,6 +1798,7 @@ enum ImGuiCol_ ImGuiCol_Header, // Header* colors are used for CollapsingHeader, TreeNode, Selectable, MenuItem ImGuiCol_HeaderHovered, ImGuiCol_HeaderActive, + ImGuiCol_HeaderSelected, ImGuiCol_Separator, ImGuiCol_SeparatorHovered, ImGuiCol_SeparatorActive, diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp index d3c769c92..66c72dce1 100644 --- a/imgui_widgets.cpp +++ b/imgui_widgets.cpp @@ -6880,9 +6880,14 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l else { // Unframed typed for tree nodes - if (hovered || selected) + if (selected) { - const ImU32 bg_col = GetColorU32((held && hovered) ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header); + const ImU32 bg_col = GetColorU32(ImGuiCol_HeaderSelected); + RenderFrame(frame_bb.Min, frame_bb.Max, bg_col, false); + } + if (hovered) + { + const ImU32 bg_col = GetColorU32((held && hovered) ? ImGuiCol_HeaderActive : ImGuiCol_HeaderHovered); RenderFrame(frame_bb.Min, frame_bb.Max, bg_col, false); } RenderNavCursor(frame_bb, id, nav_render_cursor_flags);