From dab1dc1076b9ab8b37296b9c6559cf0a85dc76bd Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 3 Mar 2025 19:22:51 +0300 Subject: =?UTF-8?q?fixes=20#4902=20(Telegram:=20=D1=80=D0=BE=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B=D0=B2=D0=B0=D1=8E=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=B0=D0=BD=D0=B0=D0=BB=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/m_chat_int.h | 12 ++++++++---- plugins/TabSRMM/src/chat_tools.cpp | 4 +++- src/mir_app/src/chat_manager.cpp | 9 +++++---- src/mir_app/src/chat_svc.cpp | 2 +- src/mir_app/src/srmm_base.cpp | 4 ++-- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/include/m_chat_int.h b/include/m_chat_int.h index 313e2b511c..6f52166e5f 100644 --- a/include/m_chat_int.h +++ b/include/m_chat_int.h @@ -184,12 +184,16 @@ struct MIR_APP_EXPORT SESSION_INFO : public MZeroedObject, public MNonCopyable wchar_t pszLogFileName[MAX_PATH]; - __forceinline USERINFO* getMe() const - { return (pParent != nullptr) ? pParent->pMe : pMe; + __forceinline USERINFO* getMe() const { + return (pParent != nullptr) ? pParent->pMe : pMe; } - __forceinline OBJLIST& getUserList() - { return (pParent != nullptr) ? pParent->arUsers : arUsers; + __forceinline STATUSINFO* getStatuses() const { + return (pParent != nullptr) ? pParent->pStatuses : pStatuses; + } + + __forceinline OBJLIST& getUserList() { + return (pParent != nullptr) ? pParent->arUsers : arUsers; } const char* getSoundName(int iEventType) const; diff --git a/plugins/TabSRMM/src/chat_tools.cpp b/plugins/TabSRMM/src/chat_tools.cpp index bf59ce54a1..4f2b720d83 100644 --- a/plugins/TabSRMM/src/chat_tools.cpp +++ b/plugins/TabSRMM/src/chat_tools.cpp @@ -363,9 +363,11 @@ char GetIndicator(SESSION_INFO *si, LPCTSTR ptszNick, int *iNickIndex) if (iNickIndex) *iNickIndex = 0; + auto *pStatuses = si->getStatuses(); + for (auto &ui : si->getUserList()) { if (!mir_wstrcmp(ui->pszNick, ptszNick)) { - STATUSINFO *ti = g_chatApi.TM_FindStatus(si->pStatuses, g_chatApi.TM_WordToString(si->pStatuses, ui->Status)); + STATUSINFO *ti = g_chatApi.TM_FindStatus(pStatuses, g_chatApi.TM_WordToString(pStatuses, ui->Status)); if (ti) { if (iNickIndex) *iNickIndex = ti->iIconIndex; // color table's index is not zero-based diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index 159aec0905..e7b83a5da8 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -358,7 +358,8 @@ static HICON SM_GetStatusIcon(SESSION_INFO *si, USERINFO *ui) if (!ui || !si) return nullptr; - STATUSINFO *ti = g_chatApi.TM_FindStatus(si->pStatuses, g_chatApi.TM_WordToString(si->pStatuses, ui->Status)); + auto *pStatuses = si->getStatuses(); + STATUSINFO *ti = g_chatApi.TM_FindStatus(pStatuses, g_chatApi.TM_WordToString(pStatuses, ui->Status)); if (ti != nullptr) return g_chatApi.hStatusIcons[ti->iIconIndex]; @@ -429,7 +430,7 @@ BOOL SM_GiveStatus(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszSt if (si == nullptr) return FALSE; - USERINFO *ui = UM_GiveStatus(si, pszUID, TM_StringToWord(si->pStatuses, pszStatus)); + USERINFO *ui = UM_GiveStatus(si, pszUID, TM_StringToWord(si->getStatuses(), pszStatus)); if (ui && si->pDlg) si->pDlg->UpdateNickList(); return TRUE; @@ -438,7 +439,7 @@ BOOL SM_GiveStatus(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszSt BOOL SM_AssignStatus(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszStatus) { if (si != nullptr) - if (USERINFO *ui = UM_SetStatus(si, pszUID, TM_StringToWord(si->pStatuses, pszStatus))) { + if (USERINFO *ui = UM_SetStatus(si, pszUID, TM_StringToWord(si->getStatuses(), pszStatus))) { if (si->pDlg) si->pDlg->UpdateNickList(); return TRUE; @@ -463,7 +464,7 @@ BOOL SM_TakeStatus(SESSION_INFO *si, const wchar_t *pszUID, const wchar_t *pszSt if (si == nullptr) return FALSE; - USERINFO *ui = g_chatApi.UM_TakeStatus(si, pszUID, TM_StringToWord(si->pStatuses, pszStatus)); + USERINFO *ui = g_chatApi.UM_TakeStatus(si, pszUID, TM_StringToWord(si->getStatuses(), pszStatus)); if (ui && si->pDlg) si->pDlg->UpdateNickList(); return TRUE; diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index 8f9bbf3250..fa74c2d448 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -428,7 +428,7 @@ MIR_APP_DLL(int) Chat_Terminate(SESSION_INFO *si) static void AddUser(SESSION_INFO *si, GCEVENT &gce) { - uint16_t status = TM_StringToWord(si->pStatuses, gce.pszStatus.w); + uint16_t status = TM_StringToWord(si->getStatuses(), gce.pszStatus.w); USERINFO *ui = UM_AddUser(si, gce.pszUID.w, gce.pszNick.w, status); if (ui == nullptr) diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp index 82454da143..52dbc09f40 100644 --- a/src/mir_app/src/srmm_base.cpp +++ b/src/mir_app/src/srmm_base.cpp @@ -313,7 +313,7 @@ static void ProcessNickListHovering(const CCtrlListBox &listBox, int hoveredItem wszBuf.Format(L"%s: %s\r\n%s: %s\r\n%s: %s", TranslateT("Nickname"), ui->pszNick, TranslateT("Unique ID"), ui->pszUID, - TranslateT("Status"), g_chatApi.TM_WordToString(si->pStatuses, ui->Status)); + TranslateT("Status"), g_chatApi.TM_WordToString(si->getStatuses(), ui->Status)); ti.lpszText = wszBuf.GetBuffer(); } @@ -339,7 +339,7 @@ void CSrmmBaseDialog::OnNickListTimer(CTimer *pTimer) wszBuf.Format(L"%s:\t%s\n%s:\t%s\n%s:\t%s", TranslateT("Nick"), ui->pszNick, TranslateT("Unique ID"), ui->pszUID, - TranslateT("Status"), g_chatApi.TM_WordToString(m_si->pStatuses, ui->Status)); + TranslateT("Status"), g_chatApi.TM_WordToString(m_si->getStatuses(), ui->Status)); CLCINFOTIP ti = { sizeof(ti) }; Tipper_ShowTip(wszBuf, &ti); -- cgit v1.2.3