From 9dddfef7c8a3b41cfc3584462af7d5c67f024756 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 1 Feb 2024 17:19:08 +0300 Subject: fixes #4128 completely --- include/m_clist.h | 1 + include/m_clistint.h | 2 +- plugins/Clist_modern/src/groupmenu.cpp | 2 +- plugins/Clist_modern/src/modern_clc.cpp | 2 +- plugins/Clist_modern/src/modern_clcitems.cpp | 5 +---- plugins/Clist_modern/src/modern_clist.h | 2 -- src/mir_app/src/clcitems.cpp | 2 ++ src/mir_app/src/menu_groups.cpp | 13 +++++++------ 8 files changed, 14 insertions(+), 15 deletions(-) diff --git a/include/m_clist.h b/include/m_clist.h index 365f95669f..7b9f0bf4c4 100644 --- a/include/m_clist.h +++ b/include/m_clist.h @@ -382,6 +382,7 @@ EXTERN_C MIR_APP_DLL(int) Clist_GroupRename(MGROUP hGroup, const wchar_t *ptszNe #define GROUPF_EXPANDED 0x04 #define GROUPF_HIDEOFFLINE 0x08 +#define GROUPF_SHOWOFFLINE 0x40 EXTERN_C MIR_APP_DLL(wchar_t*) Clist_GroupGetName(MGROUP hGroup, uint32_t *pdwFlags = nullptr); diff --git a/include/m_clistint.h b/include/m_clistint.h index 93401834ae..096ed11883 100644 --- a/include/m_clistint.h +++ b/include/m_clistint.h @@ -85,7 +85,7 @@ struct ClcGroup : public MZeroedObject LIST cl; int groupId; - bool bExpanded, bHideOffline; + bool bExpanded, bHideOffline, bShowOffline; ClcGroup *parent; int scanIndex; int totalMembers; diff --git a/plugins/Clist_modern/src/groupmenu.cpp b/plugins/Clist_modern/src/groupmenu.cpp index 4c166d0fa2..1c0842eaf4 100644 --- a/plugins/Clist_modern/src/groupmenu.cpp +++ b/plugins/Clist_modern/src/groupmenu.cpp @@ -39,7 +39,7 @@ static int OnBuildSubGroupMenu(WPARAM wParam, LPARAM) if (wParam == 0 || MirandaExiting()) showOfflineinGroup = gray = false; else { - showOfflineinGroup = CLCItems_IsShowOfflineGroup(group); + showOfflineinGroup = group->bShowOffline; gray = !group->bHideOffline; } diff --git a/plugins/Clist_modern/src/modern_clc.cpp b/plugins/Clist_modern/src/modern_clc.cpp index 835de2c645..b57b583774 100644 --- a/plugins/Clist_modern/src/modern_clc.cpp +++ b/plugins/Clist_modern/src/modern_clc.cpp @@ -326,7 +326,7 @@ static LRESULT clcOnCommand(ClcData *dat, HWND hwnd, UINT, WPARAM wParam, LPARAM if (hit != -1 && contact->type == CLCIT_GROUP) { switch (LOWORD(wParam)) { case POPUP_GROUPSHOWOFFLINE: - Clist_GroupSetFlags(contact->groupId, MAKELPARAM(CLCItems_IsShowOfflineGroup(contact->group) ? 0 : GROUPF_SHOWOFFLINE, GROUPF_SHOWOFFLINE)); + Clist_GroupSetFlags(contact->groupId, MAKELPARAM(contact->group->bShowOffline ? 0 : GROUPF_SHOWOFFLINE, GROUPF_SHOWOFFLINE)); Clist_Broadcast(CLM_AUTOREBUILD, 0, 0); return 0; } diff --git a/plugins/Clist_modern/src/modern_clcitems.cpp b/plugins/Clist_modern/src/modern_clcitems.cpp index f61ec8e2b2..35ac94c13e 100644 --- a/plugins/Clist_modern/src/modern_clcitems.cpp +++ b/plugins/Clist_modern/src/modern_clcitems.cpp @@ -180,10 +180,7 @@ bool CLCItems_IsShowOfflineGroup(ClcGroup *group) { if (!group) return false; if (group->bHideOffline) return false; - - uint32_t groupFlags = 0; - Clist_GroupGetName(group->groupId, &groupFlags); - return (groupFlags & GROUPF_SHOWOFFLINE) != 0; + return group->bShowOffline; } MCONTACT SaveSelection(ClcData *dat) diff --git a/plugins/Clist_modern/src/modern_clist.h b/plugins/Clist_modern/src/modern_clist.h index 2adf362135..e67208047c 100644 --- a/plugins/Clist_modern/src/modern_clist.h +++ b/plugins/Clist_modern/src/modern_clist.h @@ -140,6 +140,4 @@ struct ClcCacheEntry : public ClcCacheEntryBase #define CLVM_MODULE "CLVM" #endif -#define GROUPF_SHOWOFFLINE 0x40 - #endif diff --git a/src/mir_app/src/clcitems.cpp b/src/mir_app/src/clcitems.cpp index 78402b8aa4..b8626f0625 100644 --- a/src/mir_app/src/clcitems.cpp +++ b/src/mir_app/src/clcitems.cpp @@ -72,6 +72,7 @@ ClcGroup* fnAddGroup(HWND hwnd, ClcData *dat, const wchar_t *szName, uint32_t fl group = cc->group; group->bExpanded = (flags & GROUPF_EXPANDED) != 0; group->bHideOffline = (flags & GROUPF_HIDEOFFLINE) != 0; + group->bShowOffline = (flags & GROUPF_SHOWOFFLINE) != 0; group->groupId = groupId; } else group = cc->group; @@ -101,6 +102,7 @@ ClcGroup* fnAddGroup(HWND hwnd, ClcData *dat, const wchar_t *szName, uint32_t fl else { group->bExpanded = (flags & GROUPF_EXPANDED) != 0; group->bHideOffline = (flags & GROUPF_HIDEOFFLINE) != 0; + group->bShowOffline = (flags & GROUPF_SHOWOFFLINE) != 0; } group->groupId = pNextField ? 0 : groupId; group->totalMembers = 0; diff --git a/src/mir_app/src/menu_groups.cpp b/src/mir_app/src/menu_groups.cpp index 8d0339032f..d28c26a4f0 100644 --- a/src/mir_app/src/menu_groups.cpp +++ b/src/mir_app/src/menu_groups.cpp @@ -188,13 +188,14 @@ static int OnBuildGroupMenu(WPARAM wParam, LPARAM) Menu_SetChecked(hmiHideEmptyGroups, (dwStyle & CLS_HIDEEMPTYGROUPS) != 0); Menu_SetChecked(hmiDisableGroups, (dwStyle & CLS_USEGROUPS) == 0); - Menu_ShowItem(hmiRenameGroup, wParam != 0); - Menu_ShowItem(hmiDeleteGroup, wParam != 0); - Menu_ShowItem(hmiCreateSubgroup, wParam != 0); - Menu_ShowItem(hmiHideOfflineUsersInHere, wParam != 0); - Menu_ShowItem(hmiHideOfflineUsersOutHere, wParam == 0); - ClcGroup *group = (ClcGroup *)wParam; + + Menu_ShowItem(hmiRenameGroup, group != 0); + Menu_ShowItem(hmiDeleteGroup, group != 0); + Menu_ShowItem(hmiCreateSubgroup, group != 0); + Menu_ShowItem(hmiHideOfflineUsersInHere, group && !group->bShowOffline); + Menu_ShowItem(hmiHideOfflineUsersOutHere, group == 0); + if (group != nullptr) // contact->group Menu_SetChecked(hmiHideOfflineUsersInHere, group->bHideOffline != 0); return 0; -- cgit v1.2.3