summaryrefslogtreecommitdiff
path: root/plugins/Popup
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-03-15 21:05:06 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-03-15 21:05:06 +0300
commit59e6b15f513cc998ce13e9e49e2a6a3ace445ebb (patch)
treeaf52b73a17039ed1fbe398ba9f488c26a7071257 /plugins/Popup
parentbdaa5cf8b48515af2ac39f3f3245dd1183cbad52 (diff)
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
Diffstat (limited to 'plugins/Popup')
-rw-r--r--plugins/Popup/src/popup_thread.cpp9
-rw-r--r--plugins/Popup/src/services.cpp2
2 files changed, 7 insertions, 4 deletions
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;
}