MCPcopy Create free account
hub / github.com/aiekick/ImGuiFileDialog / m_SelectableItem

Method m_SelectableItem

ImGuiFileDialog.cpp:4169–4213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4167}
4168
4169void IGFD::FileDialog::m_SelectableItem(int vRowIdx, std::shared_ptr<FileInfos> vInfos, bool vSelected, const char* vFmt, ...) {
4170 if (!vInfos.use_count()) return;
4171
4172 auto& fdi = m_FileDialogInternal.fileManager;
4173
4174 static ImGuiSelectableFlags selectableFlags = ImGuiSelectableFlags_AllowDoubleClick | ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_SpanAvailWidth;
4175
4176 va_list args;
4177 va_start(args, vFmt);
4178 vsnprintf(fdi.variadicBuffer, MAX_FILE_DIALOG_NAME_BUFFER, vFmt, args);
4179 va_end(args);
4180
4181 float h = 0.0f;
4182#ifdef USE_THUMBNAILS
4183 if (m_DisplayMode == DisplayModeEnum::THUMBNAILS_LIST && !(m_FileDialogInternal.getDialogConfig().flags & ImGuiFileDialogFlags_DisableThumbnailMode)) {
4184 h = DisplayMode_ThumbailsList_ImageHeight;
4185 }
4186#endif // USE_THUMBNAILS
4187 if (m_Selectable(vRowIdx, fdi.variadicBuffer, vSelected, selectableFlags, ImVec2(-1.0f, h))) {
4188 if (vInfos->fileType.isDir()) {
4189 // nav system, selectable cause open directory or select directory
4190 if (ImGui::GetIO().ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard) {
4191 // little fix for get back the mouse behavior in nav system
4192 if (ImGui::IsMouseDoubleClicked(0)) { // 0 -> left mouse button double click
4193 fdi.pathClicked = fdi.SelectDirectory(vInfos);
4194 } else if (fdi.dLGDirectoryMode) { // directory chooser
4195 fdi.SelectOrDeselectFileName(m_FileDialogInternal, vInfos);
4196 } else {
4197 fdi.pathClicked = fdi.SelectDirectory(vInfos);
4198 }
4199 } else { // no nav system => classic behavior
4200 if (ImGui::IsMouseDoubleClicked(0)) { // 0 -> left mouse button double click
4201 fdi.pathClicked = fdi.SelectDirectory(vInfos);
4202 } else if (fdi.dLGDirectoryMode) { // directory chooser
4203 fdi.SelectOrDeselectFileName(m_FileDialogInternal, vInfos);
4204 }
4205 }
4206 } else {
4207 fdi.SelectOrDeselectFileName(m_FileDialogInternal, vInfos);
4208 if (ImGui::IsMouseDoubleClicked(0)) {
4209 m_FileDialogInternal.isOk = true;
4210 }
4211 }
4212 }
4213}
4214
4215void IGFD::FileDialog::m_DisplayFileInfosTooltip(const int32_t& vRowIdx, const int32_t& vColumnIdx, std::shared_ptr<FileInfos> vFileInfos) {
4216 // IsItemHovered is not sufficient since file size have two calls to Text

Callers

nothing calls this directly

Calls 3

isDirMethod · 0.80
SelectDirectoryMethod · 0.80

Tested by

no test coverage detected