From 13cf8986f91a8bb21f22bd29d90711b3db2de811 Mon Sep 17 00:00:00 2001 From: Alex Alabuzhev Date: Thu, 13 Oct 2016 06:36:20 +0000 Subject: [PATCH] fix 4603: don't request data for custom sorting if not needed --- far/changelog | 4 ++++ far/farwinapi.cpp | 4 ++-- far/filelist.cpp | 9 +++++---- far/vbuild.m4 | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/far/changelog b/far/changelog index 7d742566f2..573d2bc947 100644 --- a/far/changelog +++ b/far/changelog @@ -1,3 +1,7 @@ +drkns 13.10.2016 09:33:05 +0200 - build 4822 + +1. Уточнение 4603. Передаём перечисленное в кастомную сортировку только если оно уже считано или будет. + drkns 12.10.2016 23:24:37 +0200 - build 4821 1. 0003304: Вывод на консоль из плагина удваивается за пределами окна diff --git a/far/farwinapi.cpp b/far/farwinapi.cpp index 3435184568..384057019f 100644 --- a/far/farwinapi.cpp +++ b/far/farwinapi.cpp @@ -1674,8 +1674,8 @@ void EnableLowFragmentationHeap() bool GetFileTimeSimple(const string &FileName, LPFILETIME CreationTime, LPFILETIME LastAccessTime, LPFILETIME LastWriteTime, LPFILETIME ChangeTime) { - fs::file dir; - return dir.Open(FileName,FILE_READ_ATTRIBUTES,FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE,nullptr,OPEN_EXISTING) && dir.GetTime(CreationTime,LastAccessTime,LastWriteTime,ChangeTime); + fs::file File; + return File.Open(FileName, FILE_READ_ATTRIBUTES, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING) && File.GetTime(CreationTime, LastAccessTime, LastWriteTime, ChangeTime); } bool GetFileSecurity(const string& Object, SECURITY_INFORMATION RequestedInformation, FAR_SECURITY_DESCRIPTOR& SecurityDescriptor) diff --git a/far/filelist.cpp b/far/filelist.cpp index dd245a43c3..41822c147b 100644 --- a/far/filelist.cpp +++ b/far/filelist.cpp @@ -132,7 +132,6 @@ static void FileListToSortingPanelItem(const FileListItem *arr, int index, Sorti pi.CreationTime=fi.CreationTime; pi.LastAccessTime=fi.AccessTime; pi.ChangeTime=fi.ChangeTime; - pi.NumberOfLinks = fi.NumberOfLinks(FileListPtr); pi.Flags=fi.UserFlags; if (fi.Selected) @@ -148,9 +147,11 @@ static void FileListToSortingPanelItem(const FileListItem *arr, int index, Sorti pi.CRC32=fi.CRC32; pi.Position=fi.Position; //! CHANGED pi.SortGroup=fi.SortGroup - DEFAULT_SORT_GROUP; //! CHANGED - pi.Owner = EmptyToNull(fi.Owner(FileListPtr).data()); - pi.NumberOfStreams=fi.NumberOfStreams(FileListPtr); - pi.StreamsSize=fi.StreamsSize(FileListPtr); + + pi.NumberOfLinks = fi.IsNumberOfLinksRead() || FileListPtr->IsColumnDisplayed(NUMLINK_COLUMN)?fi.NumberOfLinks(FileListPtr) : 0; + pi.Owner = EmptyToNull(fi.IsOwnerRead() || FileListPtr->IsColumnDisplayed(OWNER_COLUMN)? fi.Owner(FileListPtr).data() : L""); + pi.NumberOfStreams = fi.IsNumberOfStreamsRead() || FileListPtr->IsColumnDisplayed(NUMSTREAMS_COLUMN)? fi.NumberOfStreams(FileListPtr) : 0; + pi.StreamsSize = fi.IsStreamsSizeRead() || FileListPtr->IsColumnDisplayed(STREAMSSIZE_COLUMN)? fi.StreamsSize(FileListPtr) : 0; } struct CustomSort diff --git a/far/vbuild.m4 b/far/vbuild.m4 index 00bcce02f9..c36238c6af 100644 --- a/far/vbuild.m4 +++ b/far/vbuild.m4 @@ -1 +1 @@ -m4_define(BUILD,4821)m4_dnl +m4_define(BUILD,4822)m4_dnl