From 8b4cf23b3aca667aba5429ee9e5b45b578db71d7 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 18 Sep 2019 13:17:35 +0300 Subject: fixes #2068 (crash in Window7 taskbar preview) --- plugins/TabSRMM/src/msgdialog.cpp | 2 -- plugins/TabSRMM/src/taskbar.cpp | 14 ++++++++------ plugins/TabSRMM/src/taskbar.h | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'plugins/TabSRMM/src') diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp index 8f3daf9d19..bde2b28a3f 100644 --- a/plugins/TabSRMM/src/msgdialog.cpp +++ b/plugins/TabSRMM/src/msgdialog.cpp @@ -376,8 +376,6 @@ void CMsgDialog::Init() CMsgDialog::~CMsgDialog() { - delete m_pWnd; - mir_free(m_sendBuffer); mir_free(m_hHistoryEvents); mir_free(m_hQueuedEvents); diff --git a/plugins/TabSRMM/src/taskbar.cpp b/plugins/TabSRMM/src/taskbar.cpp index 7f8d9ab86c..7e87787958 100644 --- a/plugins/TabSRMM/src/taskbar.cpp +++ b/plugins/TabSRMM/src/taskbar.cpp @@ -184,10 +184,8 @@ void CMsgDialog::VerifyProxy() if (IsWinVer7Plus() && PluginConfig.m_useAeroPeek) { if (nullptr == m_pWnd) { m_pWnd = new CProxyWindow(this); - if (m_pWnd) { - m_pWnd->updateIcon(m_hTabStatusIcon); - m_pWnd->updateTitle(m_cache->getNick()); - } + m_pWnd->updateIcon(m_hTabStatusIcon); + m_pWnd->updateTitle(m_cache->getNick()); } else m_pWnd->verifyDwmState(); } @@ -210,6 +208,9 @@ void CMsgDialog::VerifyProxy() CProxyWindow::CProxyWindow(CMsgDialog *dat) : m_dat(dat) { + if (m_dat == nullptr) + DebugBreak(); + m_hwndProxy = ::CreateWindowEx(/*WS_EX_TOOLWINDOW | */WS_EX_NOACTIVATE, PROXYCLASSNAME, L"", WS_POPUP | WS_BORDER | WS_SYSMENU | WS_CAPTION, -32000, -32000, 10, 10, nullptr, nullptr, g_plugin.getInst(), (LPVOID)this); @@ -518,8 +519,9 @@ LRESULT CALLBACK CProxyWindow::wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARA { switch (msg) { case WM_CLOSE: - SendMessage(m_dat->GetHwnd(), WM_CLOSE, 1, 2); - { + if (m_dat) { + SendMessage(m_dat->GetHwnd(), WM_CLOSE, 1, 2); + TContainerData *pC = m_dat->m_pContainer; if (!IsIconic(pC->m_hwnd)) SetForegroundWindow(pC->m_hwnd); diff --git a/plugins/TabSRMM/src/taskbar.h b/plugins/TabSRMM/src/taskbar.h index 622ec3cff9..3ee461ff1a 100644 --- a/plugins/TabSRMM/src/taskbar.h +++ b/plugins/TabSRMM/src/taskbar.h @@ -95,7 +95,7 @@ private: virtual void renderContent() override; }; -class CProxyWindow +class CProxyWindow : public MZeroedObject { public: CProxyWindow(CMsgDialog *dat); @@ -121,15 +121,15 @@ public: private: CMsgDialog *m_dat; - HWND m_hwndProxy = nullptr; + HWND m_hwndProxy; LONG m_width, m_height; - HICON m_hBigIcon = nullptr, m_hOverlayIcon = nullptr; + HICON m_hBigIcon, m_hOverlayIcon; LRESULT CALLBACK wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); void sendThumb(LONG width, LONG height); void sendPreview(); - CThumbBase *m_thumb = nullptr; + CThumbBase *m_thumb; }; class CTaskbarInteract -- cgit v1.2.3