From 59e6b15f513cc998ce13e9e49e2a6a3ace445ebb Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 15 Mar 2018 21:05:06 +0300 Subject: LIST<> iterators: - new method LIST::removeItem added to save a pointer to removed record; - code cleaning related to the fact that LIST::remove() shall be the last operation inside an iterator, because otherwise the reference to it will point to a record next to deleted one; - a few remaining cycles converted to iterators --- plugins/Popup/src/popup_thread.cpp | 9 ++++++--- plugins/Popup/src/services.cpp | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'plugins/Popup') diff --git a/plugins/Popup/src/popup_thread.cpp b/plugins/Popup/src/popup_thread.cpp index 75e306a0b8..5caede1cf1 100644 --- a/plugins/Popup/src/popup_thread.cpp +++ b/plugins/Popup/src/popup_thread.cpp @@ -179,9 +179,12 @@ static LRESULT CALLBACK PopupThreadManagerWndProc(HWND hwnd, UINT message, WPARA break; case UTM_REMOVE_WINDOW: - for (int i = popupList.getCount() - 1; i >= 0; i--) - if (popupList[i] == wnd) - popupList.remove(i); + { + auto T = popupList.rev_iter(); + for (auto &it : T) + if (it == wnd) + popupList.remove(T.indexOf(&it)); + } RepositionPopups(); --nPopups; diff --git a/plugins/Popup/src/services.cpp b/plugins/Popup/src/services.cpp index b1d659d241..e6f09614cc 100644 --- a/plugins/Popup/src/services.cpp +++ b/plugins/Popup/src/services.cpp @@ -419,7 +419,7 @@ INT_PTR Popup_UnregisterPopupClass(WPARAM, LPARAM lParam) for (auto &it : gTreeData) if (it == ptd) { - gTreeData.remove(it); + gTreeData.removeItem(&it); FreePopupClass(ptd); return 0; } -- cgit v1.2.3