Skip to content

Commit 1c10723

Browse files
committed
[FIX] fix issue with regex parsing. now regex support internal coma
1 parent 6cc430a commit 1c10723

1 file changed

Lines changed: 5 additions & 11 deletions

File tree

ImGuiFileDialog.cpp

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1262,7 +1262,7 @@ void IGFD::FilterManager::ParseFilters(const char* vFilters) {
12621262
std::string word;
12631263
std::string filter_name;
12641264

1265-
char last_split_char = 0;
1265+
char last_char = 0;
12661266
for (char c : dLGFilters) {
12671267
if (c == '{') {
12681268
if (regex_started) {
@@ -1274,7 +1274,6 @@ void IGFD::FilterManager::ParseFilters(const char* vFilters) {
12741274
filter_name.clear();
12751275
word.clear();
12761276
}
1277-
last_split_char = c;
12781277
} else if (c == '}') {
12791278
if (regex_started) {
12801279
word += c;
@@ -1291,20 +1290,18 @@ void IGFD::FilterManager::ParseFilters(const char* vFilters) {
12911290
started = false;
12921291
}
12931292
}
1294-
last_split_char = c;
12951293
} else if (c == '(') {
12961294
word += c;
1297-
if (last_split_char == '(') {
1295+
if (last_char == '(') {
12981296
regex_started = true;
12991297
}
13001298
parenthesis_started = true;
13011299
if (!started) {
13021300
filter_name += c;
13031301
}
1304-
last_split_char = c;
13051302
} else if (c == ')') {
13061303
word += c;
1307-
if (last_split_char == ')') {
1304+
if (last_char == ')') {
13081305
if (regex_started) {
13091306
if (started) {
13101307
m_ParsedFilters.back().addCollectionFilter(word, true);
@@ -1331,18 +1328,14 @@ void IGFD::FilterManager::ParseFilters(const char* vFilters) {
13311328
if (!started) {
13321329
filter_name += c;
13331330
}
1334-
last_split_char = c;
13351331
} else if (c == '.') {
13361332
word += c;
13371333
if (!started) {
13381334
filter_name += c;
13391335
}
1340-
last_split_char = c;
13411336
} else if (c == ',') {
13421337
if (regex_started) {
1343-
regex_started = false;
1344-
word.clear();
1345-
filter_name.clear();
1338+
word += c;
13461339
} else {
13471340
if (started) {
13481341
if (word.size() > 1U && word[0] == '.') {
@@ -1370,6 +1363,7 @@ void IGFD::FilterManager::ParseFilters(const char* vFilters) {
13701363
filter_name += c;
13711364
}
13721365
}
1366+
last_char = c;
13731367
}
13741368

13751369
if (started) {

0 commit comments

Comments
 (0)