Code: Select all
Index: filelist.hpp
===================================================================
--- filelist.hpp (revision 6317)
+++ filelist.hpp (working copy)
@@ -81,6 +81,7 @@
DWORD ReparseTag;
string strCustomData;
+ bool CustomDataLoaded;
void Clear()
{
@@ -113,6 +114,7 @@
strShortName.Clear();
ReparseTag=0;
strCustomData.Clear();
+ CustomDataLoaded=false;
}
FileListItem& operator=(const FileListItem &fliCopy)
@@ -147,6 +149,7 @@
strName = fliCopy.strName;
strShortName = fliCopy.strShortName;
strCustomData = fliCopy.strCustomData;
+ CustomDataLoaded = fliCopy.CustomDataLoaded;
}
return *this;
Index: ctrlobj.cpp
===================================================================
--- ctrlobj.cpp (revision 6317)
+++ ctrlobj.cpp (working copy)
@@ -116,8 +116,9 @@
{
string strOldTitle;
Console.GetTitle(strOldTitle);
+ // Позвать перед FrameManager->PluginCommit(), иначе в панелях не загрузятся C0
+ Plugins.LoadPlugins();
FrameManager->PluginCommit();
- Plugins.LoadPlugins();
Console.SetTitle(strOldTitle);
}
Macro.LoadMacros();
Index: filelist.cpp
===================================================================
--- filelist.cpp (revision 6317)
+++ filelist.cpp (working copy)
@@ -316,6 +316,13 @@
hSortPlugin=(PanelMode==PLUGIN_PANEL && hPlugin && static_cast<PluginHandle*>(hPlugin)->pPlugin->HasCompare()) ? hPlugin:nullptr;
+ if (PanelMode!=PLUGIN_PANEL && ListSortMode==BY_CUSTOMDATA)
+ {
+ for (int i=0; i < FileCount; i++)
+ if (!ListData[i]->CustomDataLoaded)
+ CtrlObject->Plugins.GetCustomData(ListData[i]);
+ }
+
far_qsort(ListData,FileCount,sizeof(*ListData),SortList);
if (KeepPosition)
Index: farlang.templ.m4
===================================================================
--- farlang.templ.m4 (revision 6317)
+++ farlang.templ.m4 (working copy)
@@ -14604,6 +14604,15 @@
"WyЕ›wietl NAZWY_PLIKГ“W &jako nazwy_plikГіw"
"archivos en mayГєsculas mostrarlos con minГєs&culas"
+MEditPanelModePreloadC0Data
+"Загружать данные в колонку C&0 для всех файлов"
+"Preload C&0 data for all files"
+upd:"Preload C&0 data for all files"
+upd:"Preload C&0 data for all files"
+upd:"Preload C&0 data for all files"
+upd:"Preload C&0 data for all files"
+upd:"Preload C&0 data for all files"
+
MEditPanelReadHelp
" Нажмите F1, чтобы получить информацию по настройке "
" Read online help for instructions "
Index: panel.hpp
===================================================================
--- panel.hpp (revision 6317)
+++ panel.hpp (working copy)
@@ -59,6 +59,7 @@
PVS_FOLDERUPPERCASE = 0x00000008,
PVS_FILELOWERCASE = 0x00000010,
PVS_FILEUPPERTOLOWERCASE = 0x00000020,
+ PVS_PRELOADC0DATA = 0x00000040,
};
enum
Index: flmodes.cpp
===================================================================
--- flmodes.cpp (revision 6317)
+++ flmodes.cpp (working copy)
@@ -120,13 +120,14 @@
MD_CHECKBOX_FOLDERUPPERCASE,
MD_CHECKBOX_FILESLOWERCASE,
MD_CHECKBOX_UPPERTOLOWERCASE,
+ MD_CHECKBOX_PRELOADC0DATA,
MD_SEPARATOR2,
MD_BUTTON_OK,
MD_BUTTON_CANCEL,
} ;
FarDialogItem ModeDlgData[]=
{
- {DI_DOUBLEBOX, 3, 1,72,15,0,nullptr,nullptr,0,ModeListMenu[ModeNumber].Name},
+ {DI_DOUBLEBOX, 3, 1,72,16,0,nullptr,nullptr,0,ModeListMenu[ModeNumber].Name},
{DI_TEXT, 5, 2, 0, 2,0,nullptr,nullptr,0,MSG(MEditPanelModeTypes)},
{DI_EDIT, 5, 3,35, 3,0,nullptr,nullptr,DIF_FOCUS,L""},
{DI_TEXT, 5, 4, 0, 4,0,nullptr,nullptr,0,MSG(MEditPanelModeWidths)},
@@ -142,9 +143,10 @@
{DI_CHECKBOX, 5,10, 0,10,0,nullptr,nullptr,0,MSG(MEditPanelModeFoldersUpperCase)},
{DI_CHECKBOX, 5,11, 0,11,0,nullptr,nullptr,0,MSG(MEditPanelModeFilesLowerCase)},
{DI_CHECKBOX, 5,12, 0,12,0,nullptr,nullptr,0,MSG(MEditPanelModeUpperToLowerCase)},
- {DI_TEXT, 3,13, 0,13,0,nullptr,nullptr,DIF_SEPARATOR,L""},
- {DI_BUTTON, 0,14, 0,14,0,nullptr,nullptr,DIF_DEFAULTBUTTON|DIF_CENTERGROUP,MSG(MOk)},
- {DI_BUTTON, 0,14, 0,14,0,nullptr,nullptr,DIF_CENTERGROUP,MSG(MCancel)},
+ {DI_CHECKBOX, 5,13, 0,13,0,nullptr,nullptr,0,MSG(MEditPanelModePreloadC0Data)},
+ {DI_TEXT, 3,14, 0,14,0,nullptr,nullptr,DIF_SEPARATOR,L""},
+ {DI_BUTTON, 0,15, 0,15,0,nullptr,nullptr,DIF_DEFAULTBUTTON|DIF_CENTERGROUP,MSG(MOk)},
+ {DI_BUTTON, 0,15, 0,15,0,nullptr,nullptr,DIF_CENTERGROUP,MSG(MCancel)},
};
MakeDialogItemsEx(ModeDlgData,ModeDlg);
int ExitCode;
@@ -162,13 +164,14 @@
ModeDlg[MD_CHECKBOX_FOLDERUPPERCASE].Selected=(NewSettings.Flags&PVS_FOLDERUPPERCASE)?1:0;
ModeDlg[MD_CHECKBOX_FILESLOWERCASE].Selected=(NewSettings.Flags&PVS_FILELOWERCASE)?1:0;
ModeDlg[MD_CHECKBOX_UPPERTOLOWERCASE].Selected=(NewSettings.Flags&PVS_FILEUPPERTOLOWERCASE)?1:0;
+ ModeDlg[MD_CHECKBOX_PRELOADC0DATA].Selected=(NewSettings.Flags&PVS_PRELOADC0DATA)?1:0;
ViewSettingsToText(NewSettings.ColumnType,NewSettings.ColumnWidth,NewSettings.ColumnWidthType,
NewSettings.ColumnCount,ModeDlg[2].strData,ModeDlg[4].strData);
ViewSettingsToText(NewSettings.StatusColumnType,NewSettings.StatusColumnWidth,NewSettings.StatusColumnWidthType,
NewSettings.StatusColumnCount,ModeDlg[6].strData,ModeDlg[8].strData);
{
Dialog Dlg(ModeDlg,ARRAYSIZE(ModeDlg));
- Dlg.SetPosition(-1,-1,76,17);
+ Dlg.SetPosition(-1,-1,76,18);
Dlg.SetHelp(L"PanelViewModes");
Dlg.Process();
ExitCode=Dlg.GetExitCode();
@@ -190,6 +193,8 @@
NewSettings.Flags|=PVS_FILELOWERCASE;
if (ModeDlg[MD_CHECKBOX_UPPERTOLOWERCASE].Selected)
NewSettings.Flags|=PVS_FILEUPPERTOLOWERCASE;
+ if (ModeDlg[MD_CHECKBOX_PRELOADC0DATA].Selected)
+ NewSettings.Flags|=PVS_PRELOADC0DATA;
TextToViewSettings(ModeDlg[MD_EDITTYPES].strData,ModeDlg[MD_EDITWIDTHS].strData,NewSettings.ColumnType,
NewSettings.ColumnWidth,NewSettings.ColumnWidthType,NewSettings.ColumnCount);
TextToViewSettings(ModeDlg[MD_EDITSTATUSTYPES].strData,ModeDlg[MD_EDITSTATUSWIDTHS].strData,NewSettings.StatusColumnType,
Index: plugins.cpp
===================================================================
--- plugins.cpp (revision 6317)
+++ plugins.cpp (working copy)
@@ -2236,4 +2236,6 @@
pPlugin->FreeCustomData(CustomData);
}
}
+
+ ListItem->CustomDataLoaded = true;
}
Index: flupdate.cpp
===================================================================
--- flupdate.cpp (revision 6317)
+++ flupdate.cpp (working copy)
@@ -262,7 +262,7 @@
::FindFile Find(strCurDir+L"\\"+L"*",true);
DWORD FindErrorCode = ERROR_SUCCESS;
bool UseFilter=Filter->IsEnabledOnPanel();
- bool ReadCustomData=IsColumnDisplayed(CUSTOM_COLUMN0)!=0;
+ bool ReadCustomData=IsColumnDisplayed(CUSTOM_COLUMN0)!=0 && (SortMode==BY_CUSTOMDATA || (ViewSettings.Flags&PVS_PRELOADC0DATA));
DWORD StartTime = GetTickCount();
Index: flshow.cpp
===================================================================
--- flshow.cpp (revision 6317)
+++ flshow.cpp (working copy)
@@ -416,9 +416,19 @@
ShowTotalSize(Info);
}
+ string strLastDir;
+ if (GetMode()!=PLUGIN_PANEL && IsColumnDisplayed(CUSTOM_COLUMN0))
+ {
+ apiGetCurrentDirectory(strLastDir);
+ apiSetCurrentDirectory(strCurDir);
+ }
+
ShowList(FALSE,0);
ShowSelectedSize();
+ if (!strLastDir.IsEmpty())
+ apiSetCurrentDirectory(strLastDir);
+
if (Opt.ShowPanelScrollbar)
{
SetColor(COL_PANELSCROLLBAR);
Index: macro.cpp
===================================================================
--- macro.cpp (revision 6317)
+++ macro.cpp (working copy)
@@ -3925,6 +3925,11 @@
Ret=TVar((__int64)FileTimeToUI64(&filelistItem.ChangeTime));
break;
case 22: // CustomData
+ if (PanelMode==NORMAL_PANEL && !filelistItem.CustomDataLoaded)
+ {
+ //Maximus: BUGBUG: требуется установка текущей папки для панели (это может быть пассивная панель!)
+ CtrlObject->Plugins.GetCustomData(&filelistItem);
+ }
Ret=TVar(filelistItem.strCustomData);
break;
}