MCPcopy Create free account
hub / github.com/bluescan/tacentview / TreeNodeRecursive

Method TreeNodeRecursive

Src/FileDialog.cpp:893–1021  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

891
892
893void FileDialog::TreeNodeRecursive(TreeNode* node, tStringItem* selPathItemName, bool setYScrollToSel)
894{
895 // There were two ways to implement hidden. Invalidate everything and enumerate the filesystem objects again (less memory)
896 // or the implemented method: enumerate hidden and non-hidden always, and just display or not based on the hidden flag.
897 // This way, everything will be snappy when toggling hidden on/off.
898 if (!ConfigShowHidden && node->Hidden)
899 return;
900
901 bool isSelected = (SelectedNode == node);
902 int flags =
903 ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_DefaultOpen |
904 ((node->Children.GetNumItems() == 0) ? ImGuiTreeNodeFlags_Leaf : 0) |
905 (isSelected ? ImGuiTreeNodeFlags_Selected : 0) |
906 (isSelected ? ImGuiTreeNodeFlags_AllowItemOverlap : 0);
907
908 bool populate = false;
909 bool setScroll = false;
910 if (selPathItemName)
911 {
912 if (*selPathItemName == node->Name)
913 {
914 node->NextOpen = true;
915 selPathItemName = selPathItemName->Next();
916 SelectedNode = node;
917 SelectedNode->SortingDirty = true;
918 if (setYScrollToSel)
919 setScroll = true;
920 }
921 else
922 {
923 selPathItemName = nullptr;
924 setYScrollToSel = false;
925 }
926 }
927
928 // This is the magic that's needed if you select from the right-hand panel.
929 if (node->NextOpen)
930 {
931 ImGui::SetNextItemOpen(true);
932 node->NextOpen = false;
933 populate = true;
934 }
935
936 bool isOpen = ImGui::TreeNodeEx(node->Name.Chr(), flags);
937 bool isClicked = ImGui::IsItemClicked();
938
939 // If selected we need a button for adding to bookmarks.
940 if (isSelected)
941 {
942 ImGui::SameLine();
943 if (ImGui::SmallButton(" > ##BookmarkAdd"))
944 ImGui::OpenPopup("DirContextMenu");
945
946 if (ImGui::BeginPopup("DirContextMenu"))
947 {
948 if (ImGui::MenuItem("Add Bookmark"))
949 {
950 tList<tStringItem> bookmarkItems;

Callers

nothing calls this directly

Calls 2

DepthMethod · 0.80
AppendChildMethod · 0.80

Tested by

no test coverage detected