From 8e7d34b4716392f9d9a338e755027cff0a8f3161 Mon Sep 17 00:00:00 2001 From: aunsane Date: Wed, 17 Jan 2018 21:35:32 +0300 Subject: Tox: fixed crash on password deletion #1101 --- protocols/Tox/src/tox_connection.cpp | 2 ++ protocols/Tox/src/tox_menus.cpp | 6 ++++-- protocols/Tox/src/tox_proto.cpp | 6 +++++- protocols/Tox/src/tox_proto.h | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/protocols/Tox/src/tox_connection.cpp b/protocols/Tox/src/tox_connection.cpp index 80a84b74c0..f846866242 100644 --- a/protocols/Tox/src/tox_connection.cpp +++ b/protocols/Tox/src/tox_connection.cpp @@ -17,6 +17,8 @@ void CToxProto::TryConnect(Tox *tox) debugLogA(__FUNCTION__": changing status from %i to %i", ID_STATUS_CONNECTING, m_iDesiredStatus); + UpdateStatusMenu(NULL, NULL); + LoadFriendList(tox); return; } diff --git a/protocols/Tox/src/tox_menus.cpp b/protocols/Tox/src/tox_menus.cpp index 34b3047fb4..88d7129713 100644 --- a/protocols/Tox/src/tox_menus.cpp +++ b/protocols/Tox/src/tox_menus.cpp @@ -58,7 +58,7 @@ void CToxProto::InitContactMenu() CreateServiceFunction(mi.pszService, GlobalService<&CToxProto::OnGrantAuth>); } -int CToxProto::PrebuildStatusMenu(WPARAM, LPARAM) +int CToxProto::UpdateStatusMenu(WPARAM, LPARAM) { bool isOnline = IsOnline(); Menu_EnableItem(StatusMenuItems[SMI_PASSWORD], isOnline); @@ -77,7 +77,7 @@ int CToxProto::PrebuildStatusMenu(WPARAM, LPARAM) int CToxProto::OnInitStatusMenu() { - HookProtoEvent(ME_CLIST_PREBUILDSTATUSMENU, &CToxProto::PrebuildStatusMenu); + //HookProtoEvent(ME_CLIST_PREBUILDSTATUSMENU, &CToxProto::UpdateStatusMenu); CMenuItem mi; mi.flags = CMIF_UNICODE; @@ -117,5 +117,7 @@ int CToxProto::OnInitStatusMenu() mi.position = SMI_PASSWORD_REMOVE; StatusMenuItems[SMI_PASSWORD_REMOVE] = Menu_AddProtoMenuItem(&mi, m_szModuleName); + UpdateStatusMenu(NULL, NULL); + return 0; } diff --git a/protocols/Tox/src/tox_proto.cpp b/protocols/Tox/src/tox_proto.cpp index 237fee5be0..7711d1e62a 100644 --- a/protocols/Tox/src/tox_proto.cpp +++ b/protocols/Tox/src/tox_proto.cpp @@ -153,6 +153,9 @@ int CToxProto::SetStatus(int iNewStatus) m_iStatus = m_iDesiredStatus = ID_STATUS_OFFLINE; ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); + + UpdateStatusMenu(NULL, NULL); + return 0; } @@ -163,8 +166,9 @@ int CToxProto::SetStatus(int iNewStatus) if (old_status == ID_STATUS_OFFLINE && !IsOnline()) { isTerminated = false; m_iStatus = ID_STATUS_CONNECTING; - hPollingThread = ForkThreadEx(&CToxProto::PollingThread, nullptr, nullptr); ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)old_status, m_iStatus); + + hPollingThread = ForkThreadEx(&CToxProto::PollingThread, nullptr, nullptr); return 0; } diff --git a/protocols/Tox/src/tox_proto.h b/protocols/Tox/src/tox_proto.h index ad63844d6a..8ab41afa48 100644 --- a/protocols/Tox/src/tox_proto.h +++ b/protocols/Tox/src/tox_proto.h @@ -143,7 +143,7 @@ private: HGENMENU StatusMenuItems[SMI_MAX]; int OnInitStatusMenu(); - int __cdecl PrebuildStatusMenu(WPARAM, LPARAM); + int __cdecl UpdateStatusMenu(WPARAM, LPARAM); //services INT_PTR __cdecl SetMyNickname(WPARAM wParam, LPARAM lParam); -- cgit v1.2.3