From 8afa4c6ea86de94e9cd798955a92ead75fd15534 Mon Sep 17 00:00:00 2001 From: Orden4 Date: Fri, 1 Sep 2023 02:32:00 +0200 Subject: [PATCH] Fix dragging tab performance issue while Document List is displayed Fix #13479, fix #12632, close #14080 --- .../VerticalFileSwitcherListView.cpp | 9 ++++++--- .../VerticalFileSwitcher/VerticalFileSwitcherListView.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.cpp b/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.cpp index 06eb12066..8489662e9 100644 --- a/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.cpp +++ b/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.cpp @@ -352,7 +352,7 @@ int VerticalFileSwitcherListView::add(BufferID bufferID, int iView) } -void VerticalFileSwitcherListView::remove(int index) +void VerticalFileSwitcherListView::remove(int index, bool del) { LVITEM item{}; item.mask = LVIF_PARAM; @@ -360,7 +360,9 @@ void VerticalFileSwitcherListView::remove(int index) ListView_GetItem(_hSelf, &item); TaskLstFnStatus *tlfs = (TaskLstFnStatus *)item.lParam; delete tlfs; - ListView_DeleteItem(_hSelf, index); + + if (del) + ListView_DeleteItem(_hSelf, index); } void VerticalFileSwitcherListView::removeAll() @@ -369,8 +371,9 @@ void VerticalFileSwitcherListView::removeAll() for (int i = nbItem - 1; i >= 0 ; --i) { - remove(i); + remove(i, false); } + ListView_DeleteAllItems(_hSelf); HWND colHeader = reinterpret_cast(SendMessage(_hSelf, LVM_GETHEADER, 0, 0)); int columnCount = static_cast(SendMessage(colHeader, HDM_GETITEMCOUNT, 0, 0)); diff --git a/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.h b/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.h index fd6986aa8..2c65e53a4 100644 --- a/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.h +++ b/PowerEditor/src/WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.h @@ -88,7 +88,7 @@ protected: int find(BufferID bufferID, int iView) const; int add(BufferID bufferID, int iView); - void remove(int index); + void remove(int index, bool del = true); void removeAll(); void selectCurrentItem() const { ListView_SetItemState(_hSelf, _currentIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);