From 789c9a80befc2e9d0ca02ce8e431f0023adad53c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 5 Aug 2014 06:38:41 +0000 Subject: use AVS notifications to refresh avatars git-svn-id: http://svn.miranda-ng.org/main/trunk@10058 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TabSRMM/src/infopanel.cpp | 4 ++++ plugins/TabSRMM/src/msgdialog.cpp | 5 +++++ plugins/TabSRMM/src/msgdlgutils.cpp | 15 +++++++++++++++ plugins/TabSRMM/src/msgdlgutils.h | 1 + 4 files changed, 25 insertions(+) diff --git a/plugins/TabSRMM/src/infopanel.cpp b/plugins/TabSRMM/src/infopanel.cpp index beb3ddfdd1..4899a93deb 100644 --- a/plugins/TabSRMM/src/infopanel.cpp +++ b/plugins/TabSRMM/src/infopanel.cpp @@ -1002,6 +1002,10 @@ void CInfoPanel::hideTip(const HWND hwndNew) LRESULT CALLBACK CInfoPanel::avatarParentSubclass(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { + case WM_NOTIFY: + ProcessAvatarChange(hwnd, lParam); + break; + case WM_ERASEBKGND: /* * parent window of the infopanel ACC control diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp index f3d22f183a..691c89e7e3 100644 --- a/plugins/TabSRMM/src/msgdialog.cpp +++ b/plugins/TabSRMM/src/msgdialog.cpp @@ -827,8 +827,13 @@ static LRESULT CALLBACK AvatarSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, L switch (msg) { case WM_ERASEBKGND: return TRUE; + case WM_UPDATEUISTATE: return TRUE; + + case WM_NOTIFY: + ProcessAvatarChange(hwnd, lParam); + break; } return mir_callNextSubclass(hwnd, AvatarSubclassProc, msg, wParam, lParam); } diff --git a/plugins/TabSRMM/src/msgdlgutils.cpp b/plugins/TabSRMM/src/msgdlgutils.cpp index c208ff6b74..92dc7c6b31 100644 --- a/plugins/TabSRMM/src/msgdlgutils.cpp +++ b/plugins/TabSRMM/src/msgdlgutils.cpp @@ -529,6 +529,21 @@ void TSAPI HandleIconFeedback(TWindowData *dat, HICON iIcon) TabCtrl_SetItem(GetDlgItem(dat->pContainer->hwnd, IDC_MSGTABS), dat->iTabID, &item); } +///////////////////////////////////////////////////////////////////////////////////////// +// catches notifications from the AVS controls + +void TSAPI ProcessAvatarChange(HWND hwnd, LPARAM lParam) +{ + if (((LPNMHDR)lParam)->code == NM_AVATAR_CHANGED) { + HWND hwndDlg = GetParent(hwnd); + TWindowData *dat = (TWindowData*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + if (dat) { + GetAvatarVisibility(hwndDlg, dat); + SendMessage(hwndDlg, WM_SIZE, 0, 1); + } + } +} + ///////////////////////////////////////////////////////////////////////////////////////// // retrieve the visiblity of the avatar window, depending on the global setting // and local mode diff --git a/plugins/TabSRMM/src/msgdlgutils.h b/plugins/TabSRMM/src/msgdlgutils.h index a4addcd2fc..124e7d739c 100644 --- a/plugins/TabSRMM/src/msgdlgutils.h +++ b/plugins/TabSRMM/src/msgdlgutils.h @@ -39,6 +39,7 @@ char* TSAPI GetCurrentMetaContactProto(TWindowData *dat); int TSAPI MsgWindowUpdateMenu(TWindowData *dat, HMENU submenu, int menuID); int TSAPI MsgWindowMenuHandler(TWindowData *dat, int selection, int menuId); bool TSAPI GetAvatarVisibility(HWND hwndDlg, TWindowData *dat); +void TSAPI ProcessAvatarChange(HWND hwnd, LPARAM lParam); void TSAPI UpdateStatusBar(const TWindowData *dat); int TSAPI CheckValidSmileyPack(const char *szProto, MCONTACT hContact); TCHAR* TSAPI QuoteText(const TCHAR *text, int charsPerLine, int removeExistingQuotes); -- cgit v1.2.3