diff options
author | George Hazan <ghazan@miranda.im> | 2018-03-15 21:05:06 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2018-03-15 21:05:06 +0300 |
commit | 59e6b15f513cc998ce13e9e49e2a6a3ace445ebb (patch) | |
tree | af52b73a17039ed1fbe398ba9f488c26a7071257 /plugins/Clist_modern/src/modern_xptheme.cpp | |
parent | bdaa5cf8b48515af2ac39f3f3245dd1183cbad52 (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/Clist_modern/src/modern_xptheme.cpp')
-rw-r--r-- | plugins/Clist_modern/src/modern_xptheme.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/plugins/Clist_modern/src/modern_xptheme.cpp b/plugins/Clist_modern/src/modern_xptheme.cpp index 6122fa21f6..bff9e8a7fb 100644 --- a/plugins/Clist_modern/src/modern_xptheme.cpp +++ b/plugins/Clist_modern/src/modern_xptheme.cpp @@ -72,14 +72,12 @@ void xpt_FreeThemeHandle(XPTHANDLE xptHandle) void xpt_FreeThemeForWindow(HWND hwnd)
{
mir_cslock lck(xptCS);
- for (int i = 0; i < xptObjectList.getCount();) {
- XPTObject& xptObject = xptObjectList[i];
- if (xptObject.hOwnerWindow == hwnd) {
- _sttXptCloseThemeData(&xptObject);
- xptObjectList.remove(i);
+ auto T = xptObjectList.rev_iter();
+ for (auto &xptObject : T)
+ if (xptObject->hOwnerWindow == hwnd) {
+ _sttXptCloseThemeData(xptObject);
+ xptObjectList.remove(T.indexOf(&xptObject));
}
- else i++;
- }
}
void xpt_OnWM_THEMECHANGED()
|