diff options
| author | George Hazan <george.hazan@gmail.com> | 2024-09-11 19:52:52 +0300 |
|---|---|---|
| committer | George Hazan <george.hazan@gmail.com> | 2024-09-11 19:52:52 +0300 |
| commit | 02bb82c1c0a4031e7b2f5578370fa5acd620f8e1 (patch) | |
| tree | c18da4f063f47fc89cd2d57a5184bb15b7a135fb /src/mir_app | |
| parent | 120b68869dab681e9c2360cd2b3905ee3a7ecf4a (diff) | |
fixes #4653 (Плагины сообщений: невозможно удалить имя группы чатов)
Diffstat (limited to 'src/mir_app')
| -rw-r--r-- | src/mir_app/src/chat_clist.cpp | 28 | ||||
| -rw-r--r-- | src/mir_app/src/chat_svc.cpp | 2 | ||||
| -rw-r--r-- | src/mir_app/src/chat_tools.cpp | 4 |
3 files changed, 20 insertions, 14 deletions
diff --git a/src/mir_app/src/chat_clist.cpp b/src/mir_app/src/chat_clist.cpp index 37e32e0d95..e01f1291ff 100644 --- a/src/mir_app/src/chat_clist.cpp +++ b/src/mir_app/src/chat_clist.cpp @@ -38,23 +38,16 @@ static MCONTACT FindRoom(const char *pszModule, const wchar_t *pszRoom) MCONTACT AddRoom(const char *pszModule, const wchar_t *pszRoom, const wchar_t *pszDisplayName, int iType)
{
- ptrW pwszGroup(Chat_GetGroup());
- if (mir_wstrlen(pwszGroup)) {
- MGROUP hGroup = Clist_GroupExists(pwszGroup);
- if (hGroup == 0) {
- hGroup = Clist_GroupCreate(0, pwszGroup);
- if (hGroup)
- Clist_GroupSetExpanded(hGroup, 1);
- }
- }
+ auto wszGroup(Chat_GetGroup());
+ bool bNeedGroup = Chat::bUseGroup && !wszGroup.IsEmpty();
MCONTACT hContact = FindRoom(pszModule, pszRoom);
if (hContact) {
// contact exists, let's assign the standard group name if it's missing
- if (mir_wstrlen(pwszGroup)) {
+ if (bNeedGroup) {
ptrW pwszOldGroup(Clist_GetGroup(hContact));
if (!mir_wstrlen(pwszOldGroup))
- Clist_SetGroup(hContact, pwszGroup);
+ Clist_SetGroup(hContact, wszGroup);
}
db_set_w(hContact, pszModule, "Status", ID_STATUS_OFFLINE);
@@ -67,7 +60,18 @@ MCONTACT AddRoom(const char *pszModule, const wchar_t *pszRoom, const wchar_t *p return 0;
Proto_AddToContact(hContact, pszModule);
- Clist_SetGroup(hContact, pwszGroup);
+
+ // create the 'Chat rooms' group only if needed
+ if (bNeedGroup) {
+ MGROUP hGroup = Clist_GroupExists(wszGroup);
+ if (hGroup == 0) {
+ hGroup = Clist_GroupCreate(0, wszGroup);
+ if (hGroup)
+ Clist_GroupSetExpanded(hGroup, 1);
+ }
+
+ Clist_SetGroup(hContact, wszGroup);
+ }
if (auto *pa = Proto_GetAccount(pszModule)) {
if (MBaseProto *pd = g_arProtos.find((MBaseProto *)&pa->szProtoName)) {
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index 368cdd51e0..2bf0745e90 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -26,6 +26,8 @@ CMOption<bool> Chat::bShowNicklist(CHAT_MODULE, "ShowNicklist", true); CMOption<bool> Chat::bFilterEnabled(CHAT_MODULE, "FilterEnabled", false);
CMOption<bool> Chat::bTopicOnClist(CHAT_MODULE, "TopicOnClist", false);
CMOption<bool> Chat::bPopupOnJoin(CHAT_MODULE, "PopupOnJoin", false);
+CMOption<bool> Chat::bUseGroup(CHAT_MODULE, "UseGroup", true);
+
CMOption<bool> Chat::bDoubleClick4Privat(CHAT_MODULE, "DoubleClick4Privat", false);
CMOption<bool> Chat::bShowContactStatus(CHAT_MODULE, "ShowContactStatus", true);
CMOption<bool> Chat::bContactStatusFirst(CHAT_MODULE, "ContactStatusFirst", false);
diff --git a/src/mir_app/src/chat_tools.cpp b/src/mir_app/src/chat_tools.cpp index b9d2016103..66e8acbc6b 100644 --- a/src/mir_app/src/chat_tools.cpp +++ b/src/mir_app/src/chat_tools.cpp @@ -757,9 +757,9 @@ void Chat_EventToGC(SESSION_INFO *si, MEVENT hDbEvent) /////////////////////////////////////////////////////////////////////////////////////////
-MIR_APP_DLL(wchar_t*) Chat_GetGroup()
+MIR_APP_DLL(CMStringW) Chat_GetGroup()
{
- return db_get_wsa(0, CHAT_MODULE, "AddToGroup", TranslateT("Chat rooms"));
+ return db_get_wsm(0, CHAT_MODULE, "AddToGroup", TranslateT("Chat rooms"));
}
MIR_APP_DLL(void) Chat_SetGroup(const wchar_t *pwszGroupName)
|
