diff --git a/imgui.cpp b/imgui.cpp index 5bdfbee6d..118aee6a5 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -3791,6 +3791,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 fecda0a36..44d53ea31 100644 --- a/imgui.h +++ b/imgui.h @@ -1835,6 +1835,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 76b01888a..ef85d4c46 100644 --- a/imgui_widgets.cpp +++ b/imgui_widgets.cpp @@ -7052,9 +7052,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);