From 9f00802dfbad293235fc44536069c64b236fdc50 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 30 Apr 2021 17:52:29 +0300 Subject: =?UTF-8?q?fixes=20#2859=20(=D0=98=D0=BC=D0=BF=D0=BE=D1=80=D1=82:?= =?UTF-8?q?=20=D0=B4=D1=83=D0=B1=D0=BB=D0=B8=D1=80=D1=83=D1=8E=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B0=D0=BA=D1=82=D1=8B=20ICQ?= =?UTF-8?q?=20=D0=B8=20FaceBook)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mir_app/src/mir_app.def | 1 + src/mir_app/src/mir_app64.def | 1 + src/mir_app/src/proto_accs.cpp | 28 ++++++++++++++++------------ src/mir_app/src/proto_chains.cpp | 3 +++ src/mir_app/src/proto_interface.cpp | 3 +++ 5 files changed, 24 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 053f1e6d95..c7b62601aa 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -779,3 +779,4 @@ _Netlib_GetTlsUnique@8 @831 NONAME Chat_Mute @868 _WebSocket_SendBinary@12 @869 NONAME _WebSocket_SendText@8 @870 NONAME +?OnContactAdded@PROTO_INTERFACE@@UAEXI@Z @871 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index c33b8ede03..3885bb7d91 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -779,3 +779,4 @@ Netlib_GetTlsUnique @831 NONAME Chat_Mute @868 WebSocket_SendBinary @869 NONAME WebSocket_SendText @870 NONAME +?OnContactAdded@PROTO_INTERFACE@@UEAAXI@Z @871 NONAME diff --git a/src/mir_app/src/proto_accs.cpp b/src/mir_app/src/proto_accs.cpp index 4e2be22d74..dfbd4a0f2f 100644 --- a/src/mir_app/src/proto_accs.cpp +++ b/src/mir_app/src/proto_accs.cpp @@ -248,22 +248,26 @@ bool ActivateAccount(PROTOACCOUNT *pa, bool bIsDynamic) if (ppd->fnInit == nullptr) return false; - PROTO_INTERFACE *ppi = ppd->fnInit(pa->szModuleName, pa->tszAccountName); - if (ppi == nullptr) - return false; + PROTO_INTERFACE *ppi = pa->ppro; + if (ppi == nullptr) { + ppi = ppd->fnInit(pa->szModuleName, pa->tszAccountName); + if (ppi == nullptr) + return false; + + pa->ppro = ppi; + + if (bIsDynamic) { + if (g_bModulesLoadedFired) + pa->ppro->OnModulesLoaded(); + if (!db_get_b(0, "CList", "MoveProtoMenus", true)) + pa->ppro->OnBuildProtoMenu(); + pa->bDynDisabled = false; + } + } - pa->ppro = ppi; if (ppi->m_hProtoIcon == nullptr) ppi->m_hProtoIcon = IcoLib_IsManaged(Skin_LoadProtoIcon(pa->szModuleName, ID_STATUS_ONLINE)); ppi->m_iDesiredStatus = ppi->m_iStatus = ID_STATUS_OFFLINE; - - if (bIsDynamic) { - if (g_bModulesLoadedFired) - pa->ppro->OnModulesLoaded(); - if (!db_get_b(0, "CList", "MoveProtoMenus", true)) - pa->ppro->OnBuildProtoMenu(); - pa->bDynDisabled = false; - } return true; } diff --git a/src/mir_app/src/proto_chains.cpp b/src/mir_app/src/proto_chains.cpp index a2ad4b65b5..c66d4e1230 100644 --- a/src/mir_app/src/proto_chains.cpp +++ b/src/mir_app/src/proto_chains.cpp @@ -176,6 +176,9 @@ MIR_APP_DLL(int) Proto_AddToContact(MCONTACT hContact, const char *szProto) PROTOACCOUNT *pa = Proto_GetAccount(szProto); if (pa) { db_set_s(hContact, "Protocol", "p", szProto); + + if (pa->ppro) + pa->ppro->OnContactAdded(hContact); return 0; } return 1; diff --git a/src/mir_app/src/proto_interface.cpp b/src/mir_app/src/proto_interface.cpp index 43ec3b3112..52bf10eea2 100644 --- a/src/mir_app/src/proto_interface.cpp +++ b/src/mir_app/src/proto_interface.cpp @@ -63,6 +63,9 @@ HGENMENU PROTO_INTERFACE::GetMenuItem(ProtoMenuItemType aType) void PROTO_INTERFACE::OnBuildProtoMenu() {} +void PROTO_INTERFACE::OnContactAdded(MCONTACT) +{} + void PROTO_INTERFACE::OnContactDeleted(MCONTACT) {} -- cgit v1.2.3