summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/m_clist.h1
-rw-r--r--include/m_clistint.h2
-rw-r--r--plugins/Clist_modern/src/groupmenu.cpp2
-rw-r--r--plugins/Clist_modern/src/modern_clc.cpp2
-rw-r--r--plugins/Clist_modern/src/modern_clcitems.cpp5
-rw-r--r--plugins/Clist_modern/src/modern_clist.h2
-rw-r--r--src/mir_app/src/clcitems.cpp2
-rw-r--r--src/mir_app/src/menu_groups.cpp13
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<ClcContact> 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;