From dfa0a59f0ca06c9e7880bb55cdd7a6d09dc50eff Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 16 Jul 2022 21:24:16 +0300 Subject: =?UTF-8?q?fixes=20#3116=20(Jabber:=20=D1=83=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BD=D0=B0=D1=82?= =?UTF-8?q?=D1=8B=20=D0=B8=D0=B7=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D0=B0=D0=BA=D1=82=D0=BE=D0=B2=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=D0=B7=D0=B2=D0=BE=D0=BB=D1=8F=D0=B5=D1=82?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B9=D1=82=D0=B8=20=D0=B2=20=D0=BD=D0=B5=D1=91?= =?UTF-8?q?=20=D1=81=D0=BD=D0=BE=D0=B2=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mir_app/src/chat_svc.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index d962856c90..1c34b4cbf2 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -755,16 +755,26 @@ static INT_PTR JoinChat(WPARAM hContact, LPARAM lParam) return 0; } -static INT_PTR LeaveChat(WPARAM hContact, LPARAM lParam) +static INT_PTR LeaveChat(WPARAM hContact, LPARAM) { if (hContact) { char *szProto = Proto_GetBaseAccountName(hContact); if (szProto) - CallProtoService(szProto, PS_LEAVECHAT, hContact, lParam); + CallProtoService(szProto, PS_LEAVECHAT, hContact, 0); } return 0; } +static int OnContactDeleted(WPARAM hContact, LPARAM) +{ + char *szProto = Proto_GetBaseAccountName(hContact); + if (szProto && Contact_IsGroupChat(hContact, szProto)) + if (Contact_GetStatus(hContact) != ID_STATUS_OFFLINE) + CallProtoService(szProto, PS_LEAVECHAT, hContact, 0); + + return 0; +} + static INT_PTR MuteChat(WPARAM hContact, LPARAM param) { db_set_b(hContact, "SRMM", "MuteMode", param); @@ -781,7 +791,7 @@ static int PrebuildContactMenu(WPARAM hContact, LPARAM) char *szProto = Proto_GetBaseAccountName(hContact); if (szProto) { // display this menu item only for chats - if (db_get_b(hContact, szProto, "ChatRoom", 0)) { + if (Contact_IsGroupChat(hContact, szProto)) { bIsChat = true; // still hide it for offline protos if (Proto_GetStatus(szProto) != ID_STATUS_OFFLINE) { @@ -892,6 +902,7 @@ int LoadChatModule(void) { HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown); + HookEvent(ME_DB_CONTACT_DELETED, OnContactDeleted); HookEvent(ME_SKIN_ICONSCHANGED, IconsChanged); HookEvent(ME_FONT_RELOAD, FontsChanged); -- cgit v1.2.3