From 97846e5e80ca89b0307d740e71cd488895ac42c6 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 23 Jul 2023 21:08:23 +0300 Subject: let boolean variables inside ClcGroup be boolean --- src/core/stdclist/src/clcpaint.cpp | 4 ++-- src/mir_app/src/clc.cpp | 12 ++++++------ src/mir_app/src/clc.h | 1 - src/mir_app/src/clcidents.cpp | 14 +++++++------- src/mir_app/src/clcitems.cpp | 28 ++++++++++++++-------------- src/mir_app/src/clcmsgs.cpp | 22 +++++++++++++++------- src/mir_app/src/clcutils.cpp | 37 ++++++++++++++++++------------------- src/mir_app/src/clistcore.cpp | 1 - src/mir_app/src/clistgroups.cpp | 26 ++++++++++++++++++++++++-- src/mir_app/src/menu_groups.cpp | 2 +- src/mir_app/src/mir_app.def | 3 +++ src/mir_app/src/mir_app64.def | 3 +++ 12 files changed, 93 insertions(+), 60 deletions(-) (limited to 'src') diff --git a/src/core/stdclist/src/clcpaint.cpp b/src/core/stdclist/src/clcpaint.cpp index d2e59b1878..f6cbfbd5a1 100644 --- a/src/core/stdclist/src/clcpaint.cpp +++ b/src/core/stdclist/src/clcpaint.cpp @@ -312,7 +312,7 @@ void PaintClc(HWND hwnd, struct ClcData *dat, HDC hdc, RECT * rcPaint) // icon if (cc->type == CLCIT_GROUP) - iImage = cc->group->expanded ? IMAGE_GROUPOPEN : IMAGE_GROUPSHUT; + iImage = cc->group->bExpanded ? IMAGE_GROUPOPEN : IMAGE_GROUPSHUT; else if (cc->type == CLCIT_CONTACT) iImage = cc->iImage; @@ -423,7 +423,7 @@ void PaintClc(HWND hwnd, struct ClcData *dat, HDC hdc, RECT * rcPaint) index++; y += dat->rowHeight; - if (cc->type == CLCIT_GROUP && cc->group->expanded) { + if (cc->type == CLCIT_GROUP && cc->group->bExpanded) { group = cc->group; indent++; group->scanIndex = 0; diff --git a/src/mir_app/src/clc.cpp b/src/mir_app/src/clc.cpp index 0266b7bcf3..ecc1409a75 100644 --- a/src/mir_app/src/clc.cpp +++ b/src/mir_app/src/clc.cpp @@ -391,7 +391,7 @@ LRESULT CALLBACK fnContactListControlWndProc(HWND hwnd, UINT uMsg, WPARAM wParam else eq = !mir_wstrcmp(szFullName, ptrW(mir_utf8decodeW(dbcws->value.pszVal + 1))); - if (eq && (contact->group->hideOffline != 0) == ((dbcws->value.pszVal[0] & GROUPF_HIDEOFFLINE) != 0)) + if (eq && contact->group->bHideOffline == ((dbcws->value.pszVal[0] & GROUPF_HIDEOFFLINE) != 0)) break; //only expanded has changed: no action reqd } } @@ -498,7 +498,7 @@ LRESULT CALLBACK fnContactListControlWndProc(HWND hwnd, UINT uMsg, WPARAM wParam else { // item in list already if (contact->iImage == (uint16_t)lParam) break; - if (!shouldShow && !(style & CLS_NOHIDEOFFLINE) && (style & CLS_HIDEOFFLINE || group->hideOffline)) { + if (!shouldShow && !(style & CLS_NOHIDEOFFLINE) && (style & CLS_HIDEOFFLINE || group->bHideOffline)) { if (dat->selection >= 0 && g_clistApi.pfnGetRowByIndex(dat, dat->selection, &selcontact, nullptr) != -1) hSelItem = Clist_ContactToHItem(selcontact); Clist_RemoveItemFromGroup(hwnd, group, contact, (style & CLS_CONTACTLIST) == 0); @@ -709,7 +709,7 @@ LRESULT CALLBACK fnContactListControlWndProc(HWND hwnd, UINT uMsg, WPARAM wParam if (changeGroupExpand == 1) { switch (contact->type) { case CLCIT_GROUP: - if (contact->group->expanded) + if (contact->group->bExpanded) break; __fallthrough; case CLCIT_CONTACT: @@ -721,7 +721,7 @@ LRESULT CALLBACK fnContactListControlWndProc(HWND hwnd, UINT uMsg, WPARAM wParam } if (contact->type == CLCIT_GROUP) - g_clistApi.pfnSetGroupExpand(hwnd, dat, contact->group, changeGroupExpand == 2); + Clist_SetGroupExpand(hwnd, dat, contact->group, changeGroupExpand == 2); return 0; } @@ -904,7 +904,7 @@ LBL_MoveSelection: ClcGroup *selgroup; ClcContact *selcontact; dat->selection = g_clistApi.pfnGetRowByIndex(dat, dat->selection, &selcontact, &selgroup); - g_clistApi.pfnSetGroupExpand(hwnd, dat, contact->group, -1); + Clist_SetGroupExpand(hwnd, dat, contact->group, -1); if (dat->selection != -1) { dat->selection = g_clistApi.pfnGetRowsPriorTo(&dat->list, selgroup, selgroup->cl.indexOf(selcontact)); @@ -1245,7 +1245,7 @@ LBL_MoveSelection: Clist_GroupDelete(contact->groupId); break; case POPUP_GROUPHIDEOFFLINE: - Clist_GroupSetFlags(contact->groupId, MAKELPARAM(contact->group->hideOffline ? 0 : GROUPF_HIDEOFFLINE, GROUPF_HIDEOFFLINE)); + Clist_GroupSetFlags(contact->groupId, MAKELPARAM(contact->group->bHideOffline ? 0 : GROUPF_HIDEOFFLINE, GROUPF_HIDEOFFLINE)); break; } diff --git a/src/mir_app/src/clc.h b/src/mir_app/src/clc.h index f5ebfc5e87..8f792d958a 100644 --- a/src/mir_app/src/clc.h +++ b/src/mir_app/src/clc.h @@ -76,7 +76,6 @@ LRESULT fnProcessExternalMessages(HWND hwnd, ClcData *dat, UINT msg, WPARAM wPar int fnHitTest(HWND hwnd, ClcData *dat, int testx, int testy, ClcContact **contact, ClcGroup **group, uint32_t * flags); void fnScrollTo(HWND hwnd, ClcData *dat, int desty, int noSmooth); void fnRecalcScrollBar(HWND hwnd, ClcData *dat); -void fnSetGroupExpand(HWND hwnd, ClcData *dat, ClcGroup *group, int newState); int fnFindRowByText(HWND hwnd, ClcData *dat, const wchar_t *text, int prefixOk); void fnBeginRenameSelection(HWND hwnd, ClcData *dat); diff --git a/src/mir_app/src/clcidents.cpp b/src/mir_app/src/clcidents.cpp index 83497cf50d..8359e596b7 100644 --- a/src/mir_app/src/clcidents.cpp +++ b/src/mir_app/src/clcidents.cpp @@ -62,7 +62,7 @@ int fnGetRowsPriorTo(ClcGroup *group, ClcGroup *subgroup, int contactIndex) if (cc->type == CLCIT_GROUP) { if (cc->group == subgroup && contactIndex == -1) return count - 1; - if (cc->group->expanded) { + if (cc->group->bExpanded) { group = cc->group; group->scanIndex = 0; continue; @@ -90,7 +90,7 @@ ClcContact* fnFindItem(uint32_t dwItem, ClcContact *cc) MIR_APP_DLL(bool) Clist_FindItem(HWND hwnd, ClcData *dat, uint32_t dwItem, ClcContact **contact, ClcGroup **subgroup, int *isVisible) { int index = 0; - int nowVisible = 1; + bool nowVisible = true; ClcGroup *group = &dat->list; group->scanIndex = 0; @@ -99,10 +99,10 @@ MIR_APP_DLL(bool) Clist_FindItem(HWND hwnd, ClcData *dat, uint32_t dwItem, ClcCo if ((group = group->parent) == nullptr) break; - nowVisible = 1; + nowVisible = true; for (ClcGroup *tgroup = group; tgroup; tgroup = tgroup->parent) - if (!group->expanded) { - nowVisible = 0; + if (!group->bExpanded) { + nowVisible = false; break; } group->scanIndex++; @@ -142,7 +142,7 @@ MIR_APP_DLL(bool) Clist_FindItem(HWND hwnd, ClcData *dat, uint32_t dwItem, ClcCo if (cc->type == CLCIT_GROUP) { group = cc->group; group->scanIndex = 0; - nowVisible &= group->expanded; + nowVisible &= group->bExpanded; continue; } group->scanIndex++; @@ -180,7 +180,7 @@ int fnGetRowByIndex(ClcData *dat, int testindex, ClcContact **contact, ClcGroup return index; } index++; - if (cc->type == CLCIT_GROUP && cc->group->expanded) { + if (cc->type == CLCIT_GROUP && cc->group->bExpanded) { group = cc->group; group->scanIndex = 0; continue; diff --git a/src/mir_app/src/clcitems.cpp b/src/mir_app/src/clcitems.cpp index eef6b57d56..d786fe5599 100644 --- a/src/mir_app/src/clcitems.cpp +++ b/src/mir_app/src/clcitems.cpp @@ -70,8 +70,8 @@ ClcGroup* fnAddGroup(HWND hwnd, ClcData *dat, const wchar_t *szName, uint32_t fl if (pNextField == nullptr && flags != (uint32_t)-1) { cc->groupId = (uint16_t)groupId; group = cc->group; - group->expanded = (flags & GROUPF_EXPANDED) != 0; - group->hideOffline = (flags & GROUPF_HIDEOFFLINE) != 0; + group->bExpanded = (flags & GROUPF_EXPANDED) != 0; + group->bHideOffline = (flags & GROUPF_HIDEOFFLINE) != 0; group->groupId = groupId; } else group = cc->group; @@ -96,12 +96,11 @@ ClcGroup* fnAddGroup(HWND hwnd, ClcData *dat, const wchar_t *szName, uint32_t fl group = cc->group; if (flags == (uint32_t)-1 || pNextField != nullptr) { - group->expanded = 0; - group->hideOffline = 0; + group->bExpanded = group->bHideOffline = false; } else { - group->expanded = (flags & GROUPF_EXPANDED) != 0; - group->hideOffline = (flags & GROUPF_HIDEOFFLINE) != 0; + group->bExpanded = (flags & GROUPF_EXPANDED) != 0; + group->bHideOffline = (flags & GROUPF_HIDEOFFLINE) != 0; } group->groupId = pNextField ? 0 : groupId; group->totalMembers = 0; @@ -264,7 +263,7 @@ void fnAddContactToTree(HWND hwnd, ClcData *dat, MCONTACT hContact, int updateTo } if (checkHideOffline) { - if (Clist_IsHiddenMode(dat, status) && (style & CLS_HIDEOFFLINE || group->hideOffline)) { + if (Clist_IsHiddenMode(dat, status) && (style & CLS_HIDEOFFLINE || group->bHideOffline)) { if (updateTotalCount) group->totalMembers++; return; @@ -349,8 +348,8 @@ void fnRebuildEntireList(HWND hwnd, ClcData *dat) { uint32_t style = GetWindowLongPtr(hwnd, GWL_STYLE); - dat->list.expanded = 1; - dat->list.hideOffline = db_get_b(0, "CLC", "HideOfflineRoot", 0) && (style & CLS_USEGROUPS); + dat->list.bExpanded = true; + dat->list.bHideOffline = db_get_b(0, "CLC", "HideOfflineRoot", 0) && (style & CLS_USEGROUPS); dat->list.cl.destroy(); dat->list.totalMembers = 0; dat->selection = -1; @@ -391,7 +390,7 @@ void fnRebuildEntireList(HWND hwnd, ClcData *dat) if (wcsstr(lowered_name, lowered_search)) g_clistApi.pfnAddContactToGroup(dat, group, hContact); } - else if (!(style & CLS_NOHIDEOFFLINE) && (style & CLS_HIDEOFFLINE || group->hideOffline)) { + else if (!(style & CLS_NOHIDEOFFLINE) && (style & CLS_HIDEOFFLINE || group->bHideOffline)) { char *szProto = Proto_GetBaseAccountName(hContact); if (szProto == nullptr) { if (!Clist_IsHiddenMode(dat, ID_STATUS_OFFLINE) || g_clistApi.pfnIsVisibleContact(pce, group)) @@ -451,7 +450,7 @@ int fnGetGroupContentsCount(ClcGroup *group, int visibleOnly) } ClcContact *cc = group->cl[group->scanIndex]; - if (cc->type == CLCIT_GROUP && (!visibleOnly || cc->group->expanded)) { + if (cc->type == CLCIT_GROUP && (!visibleOnly || cc->group->bExpanded)) { group = cc->group; group->scanIndex = 0; count += group->cl.getCount(); @@ -606,7 +605,8 @@ struct SavedContactState_t struct SavedGroupState_t { - int groupId, expanded; + int groupId; + bool bExpanded, bSaveExpanded; }; struct SavedInfoState_t @@ -646,7 +646,7 @@ MIR_APP_DLL(void) Clist_SaveStateAndRebuildList(HWND hwnd, ClcData *dat) SavedGroupState_t *p = new SavedGroupState_t; p->groupId = group->groupId; - p->expanded = group->expanded; + p->bExpanded = group->bExpanded; saveGroup.insert(p); continue; } @@ -687,7 +687,7 @@ MIR_APP_DLL(void) Clist_SaveStateAndRebuildList(HWND hwnd, ClcData *dat) SavedGroupState_t tmp, *p; tmp.groupId = group->groupId; if ((p = saveGroup.find(&tmp)) != nullptr) - group->expanded = p->expanded; + group->bExpanded = p->bExpanded; continue; } else if (cc->type == CLCIT_CONTACT) { diff --git a/src/mir_app/src/clcmsgs.cpp b/src/mir_app/src/clcmsgs.cpp index b2b889245d..6d7b076ed0 100644 --- a/src/mir_app/src/clcmsgs.cpp +++ b/src/mir_app/src/clcmsgs.cpp @@ -100,7 +100,7 @@ LRESULT fnProcessExternalMessages(HWND hwnd, ClcData *dat, UINT msg, WPARAM wPar break; for (ClcGroup *tgroup = group; tgroup; tgroup = tgroup->parent) - g_clistApi.pfnSetGroupExpand(hwnd, dat, tgroup, 1); + Clist_SetGroupExpand(hwnd, dat, tgroup, 1); Clist_EnsureVisible(hwnd, dat, g_clistApi.pfnGetRowsPriorTo(&dat->list, group, group->cl.indexOf(contact)), 0); break; @@ -108,12 +108,20 @@ LRESULT fnProcessExternalMessages(HWND hwnd, ClcData *dat, UINT msg, WPARAM wPar if (wParam) { if (Clist_FindItem(hwnd, dat, wParam, &contact)) if (contact->type == CLCIT_GROUP) - g_clistApi.pfnSetGroupExpand(hwnd, dat, contact->group, lParam); + Clist_SetGroupExpand(hwnd, dat, contact->group, lParam); } else { - for (auto &it: dat->list.cl) - if (it->type == CLCIT_GROUP) - g_clistApi.pfnSetGroupExpand(hwnd, dat, it->group, lParam); + for (auto &it : dat->list.cl) { + if (it->type == CLCIT_GROUP) { + auto *pGroup = it->group; + if (lParam == -1) { + uint32_t flags; + if (Clist_GroupGetName(pGroup->groupId, &flags)) + Clist_SetGroupExpand(hwnd, dat, pGroup, (flags & GROUPF_EXPANDED) != 0); + } + else Clist_SetGroupExpand(hwnd, dat, it->group, lParam); + } + } } break; @@ -146,7 +154,7 @@ LRESULT fnProcessExternalMessages(HWND hwnd, ClcData *dat, UINT msg, WPARAM wPar return CLE_INVALID; if (contact->type != CLCIT_GROUP) return CLE_INVALID; - return contact->group->expanded; + return contact->group->bExpanded; case CLM_SETEXTRASPACE: dat->extraColumnSpacing = (int)wParam; @@ -303,7 +311,7 @@ LRESULT fnProcessExternalMessages(HWND hwnd, ClcData *dat, UINT msg, WPARAM wPar break; for (ClcGroup *tgroup = group; tgroup; tgroup = tgroup->parent) - g_clistApi.pfnSetGroupExpand(hwnd, dat, tgroup, 1); + Clist_SetGroupExpand(hwnd, dat, tgroup, 1); dat->selection = g_clistApi.pfnGetRowsPriorTo(&dat->list, group, group->cl.indexOf(contact)); Clist_EnsureVisible(hwnd, dat, dat->selection, 0); break; diff --git a/src/mir_app/src/clcutils.cpp b/src/mir_app/src/clcutils.cpp index 1cd238ffc6..34a012ae34 100644 --- a/src/mir_app/src/clcutils.cpp +++ b/src/mir_app/src/clcutils.cpp @@ -287,42 +287,41 @@ void fnRecalcScrollBar(HWND hwnd, ClcData *dat) SendMessage(GetParent(hwnd), WM_NOTIFY, 0, (LPARAM)&nm); } -void fnSetGroupExpand(HWND hwnd, ClcData *dat, ClcGroup *group, int newState) +MIR_APP_DLL(void) Clist_SetGroupExpand(HWND hwnd, ClcData *dat, ClcGroup *group, int newState) { - int contentCount; - int groupy; - int newY, posY; - RECT clRect; - NMCLISTCONTROL nm; - if (newState == -1) - group->expanded ^= 1; + group->bExpanded = !group->bExpanded; else { - if (group->expanded == (newState != 0)) + if (group->bExpanded == (newState != 0)) return; - group->expanded = newState != 0; + group->bExpanded = newState != 0; } + g_clistApi.pfnInvalidateRect(hwnd, nullptr, FALSE); - contentCount = g_clistApi.pfnGetGroupContentsCount(group, 1); - groupy = g_clistApi.pfnGetRowsPriorTo(&dat->list, group, -1); + int contentCount = g_clistApi.pfnGetGroupContentsCount(group, 1); + int groupy = g_clistApi.pfnGetRowsPriorTo(&dat->list, group, -1); if (dat->selection > groupy && dat->selection < groupy + contentCount) dat->selection = groupy; + + RECT clRect; GetClientRect(hwnd, &clRect); - newY = dat->yScroll; - posY = g_clistApi.pfnGetRowBottomY(dat, groupy + contentCount); + int newY = dat->yScroll; + int posY = g_clistApi.pfnGetRowBottomY(dat, groupy + contentCount); if (posY >= newY + clRect.bottom) newY = posY - clRect.bottom; posY = g_clistApi.pfnGetRowTopY(dat, groupy); if (newY > posY) newY = posY; g_clistApi.pfnRecalcScrollBar(hwnd, dat); - if (group->expanded) + if (group->bExpanded) g_clistApi.pfnScrollTo(hwnd, dat, newY, 0); + + NMCLISTCONTROL nm; nm.hdr.code = CLN_EXPANDED; nm.hdr.hwndFrom = hwnd; nm.hdr.idFrom = GetDlgCtrlID(hwnd); nm.hItem = (HANDLE)group->groupId; - nm.action = group->expanded; + nm.action = group->bExpanded; SendMessage(GetParent(hwnd), WM_NOTIFY, 0, (LPARAM)&nm); } @@ -339,7 +338,7 @@ MIR_APP_DLL(void) Clist_DoSelectionDefaultAction(HWND hwnd, ClcData *dat) return; if (contact->type == CLCIT_GROUP) - g_clistApi.pfnSetGroupExpand(hwnd, dat, contact->group, -1); + Clist_SetGroupExpand(hwnd, dat, contact->group, -1); if (contact->type == CLCIT_CONTACT) Clist_ContactDoubleClicked(contact->hContact); @@ -375,11 +374,11 @@ int fnFindRowByText(HWND hwnd, ClcData *dat, const wchar_t *text, int prefixOk) ClcGroup *contactGroup = group; int contactScanIndex = group->scanIndex; for (; group; group = group->parent) - g_clistApi.pfnSetGroupExpand(hwnd, dat, group, 1); + Clist_SetGroupExpand(hwnd, dat, group, 1); return g_clistApi.pfnGetRowsPriorTo(&dat->list, contactGroup, contactScanIndex); } if (cc->type == CLCIT_GROUP) { - if (!(dat->exStyle & CLS_EX_QUICKSEARCHVISONLY) || cc->group->expanded) { + if (!(dat->exStyle & CLS_EX_QUICKSEARCHVISONLY) || cc->group->bExpanded) { group = cc->group; group->scanIndex = 0; continue; diff --git a/src/mir_app/src/clistcore.cpp b/src/mir_app/src/clistcore.cpp index 99d52d3966..77800b9113 100644 --- a/src/mir_app/src/clistcore.cpp +++ b/src/mir_app/src/clistcore.cpp @@ -87,7 +87,6 @@ void InitClistCore() g_clistApi.pfnHitTest = fnHitTest; g_clistApi.pfnScrollTo = fnScrollTo; g_clistApi.pfnRecalcScrollBar = fnRecalcScrollBar; - g_clistApi.pfnSetGroupExpand = fnSetGroupExpand; g_clistApi.pfnFindRowByText = fnFindRowByText; g_clistApi.pfnBeginRenameSelection = fnBeginRenameSelection; g_clistApi.pfnIsVisibleContact = fnIsVisibleContact; diff --git a/src/mir_app/src/clistgroups.cpp b/src/mir_app/src/clistgroups.cpp index 79d320515b..4c37179feb 100644 --- a/src/mir_app/src/clistgroups.cpp +++ b/src/mir_app/src/clistgroups.cpp @@ -32,13 +32,16 @@ struct CGroupInternal CGroupInternal(int _id, const wchar_t *_name) : groupId(_id), groupName(mir_wstrdup(_name)) - {} + { + bSaveExpanded = (groupName[0] & GROUPF_EXPANDED) != 0; + } ~CGroupInternal() { mir_free(groupName); } - int groupId, oldId; + int groupId, oldId = -1; + bool bSaveExpanded; wchar_t *groupName; void save() @@ -398,6 +401,25 @@ MIR_APP_DLL(int) Clist_GroupRename(MGROUP hGroup, const wchar_t *ptszNewName) ///////////////////////////////////////////////////////////////////////////////////////// +MIR_APP_DLL(void) Clist_GroupSaveExpanded() +{ + for (auto &it : arByIds) + it->bSaveExpanded = (it->groupName[0] & GROUPF_EXPANDED) != 0; +} + +MIR_APP_DLL(void) Clist_GroupRestoreExpanded() +{ + for (auto &it : arByIds) { + if (it->bSaveExpanded) + it->groupName[0] |= GROUPF_EXPANDED; + else + it->groupName[0] &= ~GROUPF_EXPANDED; + it->save(); + } +} + +///////////////////////////////////////////////////////////////////////////////////////// + MIR_APP_DLL(int) Clist_GroupSetExpanded(MGROUP hGroup, int iNewState) { CGroupInternal *pGroup = arByIds.find(hGroup-1); diff --git a/src/mir_app/src/menu_groups.cpp b/src/mir_app/src/menu_groups.cpp index 78bf39c3a3..a78320917d 100644 --- a/src/mir_app/src/menu_groups.cpp +++ b/src/mir_app/src/menu_groups.cpp @@ -243,7 +243,7 @@ static int OnBuildSubGroupMenu(WPARAM wParam, LPARAM) { ClcGroup *group = (ClcGroup*)wParam; if (group != nullptr) // contact->group - Menu_SetChecked(hHideOfflineUsersHereMenuItem, group->hideOffline != 0); + Menu_SetChecked(hHideOfflineUsersHereMenuItem, group->bHideOffline != 0); return 0; } diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 5378bc2712..f5c81b2c9b 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -881,3 +881,6 @@ Clist_RemoveEvent @989 ?getLocalName@FILE_BLOB@DB@@QBEPB_WXZ @998 NONAME ?setLocalName@FILE_BLOB@DB@@QAEXPB_W@Z @999 NONAME ?ResetFileName@OFDTHREAD@@QAEXPB_W@Z @1000 NONAME +?Clist_SetGroupExpand@@YGXPAUHWND__@@PAUClcData@@PAUClcGroup@@H@Z @1001 NONAME +Clist_GroupRestoreExpanded @1002 NONAME +Clist_GroupSaveExpanded @1003 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 1b6fc9df48..b49d1d3ac8 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -881,3 +881,6 @@ Clist_RemoveEvent @989 ?getLocalName@FILE_BLOB@DB@@QEBAPEB_WXZ @998 NONAME ?setLocalName@FILE_BLOB@DB@@QEAAXPEB_W@Z @999 NONAME ?ResetFileName@OFDTHREAD@@QEAAXPEB_W@Z @1000 NONAME +?Clist_SetGroupExpand@@YAXPEAUHWND__@@PEAUClcData@@PEAUClcGroup@@H@Z @1001 NONAME +Clist_GroupRestoreExpanded @1002 NONAME +Clist_GroupSaveExpanded @1003 NONAME -- cgit v1.2.3