Skip to content

Commit 4b82b54

Browse files
committed
[ADD] : add a flag for have the filename input optional. so the dialog can be validated even if the filename input is empty
1 parent 5829270 commit 4b82b54

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

ImGuiFileDialog.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4017,7 +4017,8 @@ void IGFD::FileDialog::m_DisplayPathPopup(ImVec2 vSize) {
40174017

40184018
bool IGFD::FileDialog::m_DrawOkButton() {
40194019
auto& fdFile = m_FileDialogInternal.fileManager;
4020-
if (m_FileDialogInternal.canWeContinue && strlen(fdFile.fileNameBuffer)) {
4020+
if (m_FileDialogInternal.canWeContinue && strlen(fdFile.fileNameBuffer) || //
4021+
m_FileDialogInternal.getDialogConfig().flags & ImGuiFileDialogFlags_OptionalFileName) { // optional
40214022
if (IMGUI_BUTTON(okButtonString "##validationdialog", ImVec2(okButtonWidth, 0.0f)) || m_FileDialogInternal.isOk) {
40224023
m_FileDialogInternal.isOk = true;
40234024
return true;

ImGuiFileDialog.h

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -83,27 +83,28 @@ enum IGFD_FileStyleFlags_ // by evaluation / priority order
8383

8484
typedef int ImGuiFileDialogFlags; // -> enum ImGuiFileDialogFlags_
8585
enum ImGuiFileDialogFlags_ {
86-
ImGuiFileDialogFlags_None = 0, // define none default flag
87-
ImGuiFileDialogFlags_ConfirmOverwrite = (1 << 0), // show confirm to overwrite dialog
88-
ImGuiFileDialogFlags_DontShowHiddenFiles = (1 << 1), // dont show hidden file (file starting with a .)
89-
ImGuiFileDialogFlags_DisableCreateDirectoryButton = (1 << 2), // disable the create directory button
90-
ImGuiFileDialogFlags_HideColumnType = (1 << 3), // hide column file type
91-
ImGuiFileDialogFlags_HideColumnSize = (1 << 4), // hide column file size
92-
ImGuiFileDialogFlags_HideColumnDate = (1 << 5), // hide column file date
93-
ImGuiFileDialogFlags_NoDialog = (1 << 6), // let the dialog embedded in your own imgui begin / end scope
94-
ImGuiFileDialogFlags_ReadOnlyFileNameField = (1 << 7), // don't let user type in filename field for file open style dialogs
95-
ImGuiFileDialogFlags_CaseInsensitiveExtentionFiltering = (1 << 8), // the file extentions filtering will not take into account the case
96-
ImGuiFileDialogFlags_Modal = (1 << 9), // modal
97-
ImGuiFileDialogFlags_DisableThumbnailMode = (1 << 10), // disable the thumbnail mode
98-
ImGuiFileDialogFlags_DisablePlaceMode = (1 << 11), // disable the place mode
99-
ImGuiFileDialogFlags_DisableQuickPathSelection = (1 << 12), // disable the quick path selection
100-
ImGuiFileDialogFlags_ShowDevicesButton = (1 << 13), // show the devices selection button
101-
ImGuiFileDialogFlags_NaturalSorting = (1 << 14), // enable the antural sorting for filenames and extentions, slower than standard sorting
86+
ImGuiFileDialogFlags_None = 0, // define none default flag
87+
ImGuiFileDialogFlags_ConfirmOverwrite = (1 << 0), // show confirm to overwrite dialog
88+
ImGuiFileDialogFlags_DontShowHiddenFiles = (1 << 1), // dont show hidden file (file starting with a .)
89+
ImGuiFileDialogFlags_DisableCreateDirectoryButton = (1 << 2), // disable the create directory button
90+
ImGuiFileDialogFlags_HideColumnType = (1 << 3), // hide column file type
91+
ImGuiFileDialogFlags_HideColumnSize = (1 << 4), // hide column file size
92+
ImGuiFileDialogFlags_HideColumnDate = (1 << 5), // hide column file date
93+
ImGuiFileDialogFlags_NoDialog = (1 << 6), // let the dialog embedded in your own imgui begin / end scope
94+
ImGuiFileDialogFlags_ReadOnlyFileNameField = (1 << 7), // don't let user type in filename field for file open style dialogs
95+
ImGuiFileDialogFlags_CaseInsensitiveExtentionFiltering = (1 << 8), // the file extentions filtering will not take into account the case
96+
ImGuiFileDialogFlags_Modal = (1 << 9), // modal
97+
ImGuiFileDialogFlags_DisableThumbnailMode = (1 << 10), // disable the thumbnail mode
98+
ImGuiFileDialogFlags_DisablePlaceMode = (1 << 11), // disable the place mode
99+
ImGuiFileDialogFlags_DisableQuickPathSelection = (1 << 12), // disable the quick path selection
100+
ImGuiFileDialogFlags_ShowDevicesButton = (1 << 13), // show the devices selection button
101+
ImGuiFileDialogFlags_NaturalSorting = (1 << 14), // enable the antural sorting for filenames and extentions, slower than standard sorting
102+
ImGuiFileDialogFlags_OptionalFileName = (1 << 15), // the input filename is optional, so the dialog can be validated even if the filebname input is empty
102103

103104
// default behavior when no flags is defined. seems to be the more common cases
104105
ImGuiFileDialogFlags_Default = ImGuiFileDialogFlags_ConfirmOverwrite | //
105-
ImGuiFileDialogFlags_Modal | //
106-
ImGuiFileDialogFlags_HideColumnType
106+
ImGuiFileDialogFlags_Modal | //
107+
ImGuiFileDialogFlags_HideColumnType
107108
};
108109

109110
// flags used for GetFilePathName(flag) or GetSelection(flag)

0 commit comments

Comments
 (0)