MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / m_SelectableItem

Method m_SelectableItem

external/ImGuiFileDialog/ImGuiFileDialog.cpp:4234–4278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4232}
4233
4234void IGFD::FileDialog::m_SelectableItem(int vRowIdx, std::shared_ptr<FileInfos> vInfos, bool vSelected, const char* vFmt, ...) {
4235 if (!vInfos.use_count()) return;
4236
4237 auto& fdi = m_FileDialogInternal.fileManager;
4238
4239 static ImGuiSelectableFlags selectableFlags = ImGuiSelectableFlags_AllowDoubleClick | ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_SpanAvailWidth;
4240
4241 va_list args;
4242 va_start(args, vFmt);
4243 vsnprintf(fdi.variadicBuffer, MAX_FILE_DIALOG_NAME_BUFFER, vFmt, args);
4244 va_end(args);
4245
4246 float h = 0.0f;
4247#ifdef USE_THUMBNAILS
4248 if (m_DisplayMode == DisplayModeEnum::THUMBNAILS_LIST && !(m_FileDialogInternal.getDialogConfig().flags & ImGuiFileDialogFlags_DisableThumbnailMode)) {
4249 h = DisplayMode_ThumbailsList_ImageHeight;
4250 }
4251#endif // USE_THUMBNAILS
4252 if (m_Selectable(vRowIdx, fdi.variadicBuffer, vSelected, selectableFlags, ImVec2(-1.0f, h))) {
4253 if (vInfos->fileType.isDir()) {
4254 // nav system, selectable cause open directory or select directory
4255 if (ImGui::GetIO().ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard) {
4256 // little fix for get back the mouse behavior in nav system
4257 if (ImGui::IsMouseDoubleClicked(0)) { // 0 -> left mouse button double click
4258 fdi.pathClicked = fdi.SelectDirectory(vInfos);
4259 } else if (fdi.dLGDirectoryMode) { // directory chooser
4260 fdi.SelectOrDeselectFileName(m_FileDialogInternal, vInfos);
4261 } else {
4262 fdi.pathClicked = fdi.SelectDirectory(vInfos);
4263 }
4264 } else { // no nav system => classic behavior
4265 if (ImGui::IsMouseDoubleClicked(0)) { // 0 -> left mouse button double click
4266 fdi.pathClicked = fdi.SelectDirectory(vInfos);
4267 } else if (fdi.dLGDirectoryMode) { // directory chooser
4268 fdi.SelectOrDeselectFileName(m_FileDialogInternal, vInfos);
4269 }
4270 }
4271 } else {
4272 fdi.SelectOrDeselectFileName(m_FileDialogInternal, vInfos);
4273 if (ImGui::IsMouseDoubleClicked(0)) {
4274 m_FileDialogInternal.isOk = true;
4275 }
4276 }
4277 }
4278}
4279
4280void IGFD::FileDialog::m_DisplayFileInfosTooltip(const int32_t& vRowIdx, const int32_t& vColumnIdx, std::shared_ptr<FileInfos> vFileInfos) {
4281 // IsItemHovered is not sufficient since file size have two calls to Text

Callers

nothing calls this directly

Calls 4

ImVec2Function · 0.85
isDirMethod · 0.80
SelectDirectoryMethod · 0.80

Tested by

no test coverage detected