[FarGroup/FarManager] master: From Shmuel: correction of 6725 (600f56b23)

1 view
Skip to first unread message

farg...@farmanager.com

unread,
Sep 17, 2026, 5:01:00 PMSep 17
to farco...@googlegroups.com
Repository : https://github.com/FarGroup/FarManager
On branch : master
Link : https://github.com/FarGroup/FarManager/commit/600f56b235e142ebbd809e2f6a16277d9a201f70

>---------------------------------------------------------------

commit 600f56b235e142ebbd809e2f6a16277d9a201f70
Author: Alex Alabuzhev <alab...@gmail.com>
Date: Thu Sep 17 21:45:03 2026 +0100

From Shmuel: correction of 6725


>---------------------------------------------------------------

600f56b235e142ebbd809e2f6a16277d9a201f70
far/changelog | 5 ++
far/filelist.cpp | 128 ++++++++++++++++++++++++++--------------------
far/vbuild.m4 | 2 +-
plugins/arclite/changelog | 2 +-
4 files changed, 79 insertions(+), 58 deletions(-)

diff --git a/far/changelog b/far/changelog
index 19e694f8e..c17ee25a1 100644
--- a/far/changelog
+++ b/far/changelog
@@ -1,3 +1,8 @@
+--------------------------------------------------------------------------------
+drkns 2026-09-17 21:44:09+01:00 - build 6734
+
+1. From Shmuel: correction of 6725.
+
--------------------------------------------------------------------------------
drkns 2026-09-12 22:51:16+01:00 - build 6733

diff --git a/far/filelist.cpp b/far/filelist.cpp
index 7450c1026..fdaac8579 100644
--- a/far/filelist.cpp
+++ b/far/filelist.cpp
@@ -4139,6 +4139,7 @@ long FileList::SelectFiles(int Mode, string_view const Mask)

multifilter Filter(this, FFT_SELECT);
bool bUseFilter = false;
+ bool SkipPath = true;
static auto strPrevMask = L"*.*"s;
/* $ 20.05.2002 IS
При обработке маски, если работаем с именем файла на панели,
@@ -4166,82 +4167,97 @@ long FileList::SelectFiles(int Mode, string_view const Mask)
const auto DataLock = lock_data();
auto& m_ListData = *DataLock;

- const auto& strCurName = PointToName(m_ListData[m_CurFile].AlternateOrNormal(m_ShowShortNames));
-
- if (Mode==SELECT_ADDEXT || Mode==SELECT_REMOVEEXT)
+ switch (Mode)
{
- const auto [Name, Ext] = name_ext(strCurName);
+ case SELECT_INVERT:
+ case SELECT_INVERTALL:
+ case SELECT_INVERTFILES:
+ break;

- if (!Ext.empty())
- {
- // Учтем тот момент, что расширение может содержать символы-разделители
- strRawMask = far::format(L"\"*{}\""sv, Ext);
- WrapBrackets=true;
- }
- else
+ case SELECT_ADDEXT:
+ case SELECT_REMOVEEXT:
{
- strMask = L"*."sv;
+ const auto& strCurName = PointToName(m_ListData[m_CurFile].AlternateOrNormal(m_ShowShortNames));
+ const auto [Name, Ext] = name_ext(strCurName);
+
+ if (!Ext.empty())
+ {
+ // Учтем тот момент, что расширение может содержать символы-разделители
+ strRawMask = far::format(L"\"*{}\""sv, Ext);
+ WrapBrackets = true;
+ }
+ else
+ {
+ strMask = L"*."sv;
+ }
+ Mode = Mode == SELECT_ADDEXT? SELECT_ADD : SELECT_REMOVE;
}
- Mode=(Mode==SELECT_ADDEXT)? SELECT_ADD:SELECT_REMOVE;
- }
- else
- {
- if (Mode==SELECT_ADDNAME || Mode==SELECT_REMOVENAME)
+ break;
+
+ case SELECT_ADDNAME:
+ case SELECT_REMOVENAME:
{
- // Учтем тот момент, что имя может содержать символы-разделители
+ const auto& strCurName = PointToName(m_ListData[m_CurFile].AlternateOrNormal(m_ShowShortNames));
const auto [Name, Ext] = name_ext(strCurName);
- strRawMask = far::format(L"\"{}.*\""sv, Name);
- WrapBrackets=true;
- Mode=(Mode==SELECT_ADDNAME) ? SELECT_ADD:SELECT_REMOVE;
+ // Учтем тот момент, что имя может содержать символы-разделители
+ strRawMask = far::format(LR"("{}.*")"sv, Name);
+ WrapBrackets = true;
+ Mode = Mode == SELECT_ADDNAME? SELECT_ADD : SELECT_REMOVE;
}
- else
+ break;
+
+ case SELECT_ADD:
+ case SELECT_REMOVE:
{
- if (Mode==SELECT_ADD || Mode==SELECT_REMOVE)
+ SkipPath = false;
+ SelectDlg[sf_edit].strData = strPrevMask;
+ SelectDlg[sf_doublebox].strData = msg(Mode == SELECT_ADD? lng::MSelectTitle : lng::MUnselectTitle);
+
{
- SelectDlg[sf_edit].strData = strPrevMask;
- SelectDlg[sf_doublebox].strData = msg(Mode == SELECT_ADD? lng::MSelectTitle : lng::MUnselectTitle);
+ const auto Dlg = Dialog::create(SelectDlg);
+ Dlg->SetHelp(L"SelectFiles"sv);
+ Dlg->SetPosition({ -1, -1, 55, 7 });
+ Dlg->SetId(Mode == SELECT_ADD? SelectDialogId : UnSelectDialogId);

+ for (;;)
{
- const auto Dlg = Dialog::create(SelectDlg);
- Dlg->SetHelp(L"SelectFiles"sv);
- Dlg->SetPosition({ -1, -1, 55, 7 });
- Dlg->SetId(Mode==SELECT_ADD?SelectDialogId:UnSelectDialogId);
+ Dlg->ClearDone();
+ Dlg->Process();

- for (;;)
+ if (Dlg->GetExitCode() == sf_button_filter)
{
- Dlg->ClearDone();
- Dlg->Process();
-
- if (Dlg->GetExitCode() == sf_button_filter)
- {
- filters::EditFilters(Filter.area(), Filter.panel());
- //Рефреш текущему времени для фильтра сразу после выхода из диалога
- Filter.UpdateCurrentTime();
- bUseFilter = true;
- break;
- }
+ filters::EditFilters(Filter.area(), Filter.panel());
+ //Рефреш текущему времени для фильтра сразу после выхода из диалога
+ Filter.UpdateCurrentTime();
+ bUseFilter = true;
+ break;
+ }

- if (Dlg->GetExitCode() != sf_button_ok)
- return 0;
+ if (Dlg->GetExitCode() != sf_button_ok)
+ return 0;

- strMask = SelectDlg[sf_edit].strData;
+ strMask = SelectDlg[sf_edit].strData;

- if (FileMask.assign(strMask)) // Проверим вводимые пользователем маски на ошибки
- {
- strPrevMask = strMask;
- break;
- }
+ if (FileMask.assign(strMask)) // Проверим вводимые пользователем маски на ошибки
+ {
+ strPrevMask = strMask;
+ break;
}
}
}
- else if (Mode==SELECT_ADDMASK || Mode==SELECT_REMOVEMASK || Mode==SELECT_INVERTMASK)
- {
- strMask = Mask;
+ }
+ break;

- if (!FileMask.assign(strMask)) // Проверим маски на ошибки
- return 0;
- }
+ case SELECT_ADDMASK:
+ case SELECT_REMOVEMASK:
+ case SELECT_INVERTMASK:
+ {
+ strMask = Mask;
+
+ if (!FileMask.assign(strMask)) // Проверим маски на ошибки
+ return 0;
}
+ break;
}

SaveSelection();
@@ -4272,7 +4288,7 @@ long FileList::SelectFiles(int Mode, string_view const Mask)
Mode != SELECT_INVERT &&
Mode != SELECT_INVERTALL &&
Mode != SELECT_INVERTFILES &&
- !(bUseFilter? Filter.FileInFilter(i) : FileMask.check(PointToName(i.AlternateOrNormal(m_ShowShortNames))))
+ !(bUseFilter? Filter.FileInFilter(i) : FileMask.check(SkipPath? PointToName(i.AlternateOrNormal(m_ShowShortNames)) : i.AlternateOrNormal(m_ShowShortNames)))
)
continue;

diff --git a/far/vbuild.m4 b/far/vbuild.m4
index 9b6ecdf17..e901f6eba 100644
--- a/far/vbuild.m4
+++ b/far/vbuild.m4
@@ -1 +1 @@
-6733
+6734
diff --git a/plugins/arclite/changelog b/plugins/arclite/changelog
index 3fc20298f..1b25dfe19 100644
--- a/plugins/arclite/changelog
+++ b/plugins/arclite/changelog
@@ -1,6 +1,6 @@
drkns 2026-09-14 20:58:30+01:00 - build 357

-1. Enable hotkeys in UI comboboxes.
+1. gh-1130: Enable hotkeys in UI comboboxes.

MZK 2026-09-08 22:20:59-04:00



Reply all
Reply to author
Forward
0 new messages