diff options
author | George Hazan <ghazan@miranda.im> | 2017-04-13 20:24:24 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2017-04-13 20:24:24 +0300 |
commit | 9df1b7e422f4990b4a20eb19d14cf0bca9ab1937 (patch) | |
tree | 469aec159078a8baab4a897336adcebbaf0ff7fd /src | |
parent | 9d99e4d4e3ebc1c16cad1058d975e0e0431f53c6 (diff) |
StdMsg: fix for clearing chat active state
Diffstat (limited to 'src')
-rw-r--r-- | src/core/stdmsg/src/chat_window.cpp | 59 | ||||
-rw-r--r-- | src/core/stdmsg/src/stdafx.h | 2 |
2 files changed, 33 insertions, 28 deletions
diff --git a/src/core/stdmsg/src/chat_window.cpp b/src/core/stdmsg/src/chat_window.cpp index 0d5ae4e629..b51d4cff1a 100644 --- a/src/core/stdmsg/src/chat_window.cpp +++ b/src/core/stdmsg/src/chat_window.cpp @@ -56,14 +56,16 @@ void CChatRoomDlg::OnInitDialog() CSuper::OnInitDialog(); m_si->pDlg = this; + NotifyEvent(MSG_WINDOW_EVT_OPENING); + if (g_Settings.bTabsEnable) SetWindowLongPtr(m_hwnd, GWL_EXSTYLE, GetWindowLongPtr(m_hwnd, GWL_EXSTYLE) | WS_EX_APPWINDOW); + else + onActivate(); // initialize toolbar icons Srmm_CreateToolbarIcons(m_hwnd, BBBF_ISCHATBUTTON); - NotifyEvent(MSG_WINDOW_EVT_OPENING); - m_log.SendMsg(EM_AUTOURLDETECT, 1, 0); int mask = (int)m_log.SendMsg(EM_GETEVENTMASK, 0, 0); @@ -90,6 +92,28 @@ void CChatRoomDlg::OnDestroy() CSuper::OnDestroy(); } +void CChatRoomDlg::onActivate() +{ + WINDOWPLACEMENT wp = {}; + wp.length = sizeof(wp); + GetWindowPlacement(m_hwnd, &wp); + g_Settings.iX = wp.rcNormalPosition.left; + g_Settings.iY = wp.rcNormalPosition.top; + g_Settings.iWidth = wp.rcNormalPosition.right - wp.rcNormalPosition.left; + g_Settings.iHeight = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top; + + SendMessage(m_hwnd, DM_UPDATETITLE, 0, 0); + pci->SetActiveSession(m_si); + UpdateStatusBar(); + + if (KillTimer(m_hwnd, TIMERID_FLASHWND)) + FlashWindow(m_pOwner->GetHwnd(), FALSE); + if (db_get_w(m_hContact, m_si->pszModule, "ApparentMode", 0) != 0) + db_set_w(m_hContact, m_si->pszModule, "ApparentMode", 0); + if (pcli->pfnGetEvent(m_hContact, 0)) + pcli->pfnRemoveEvent(m_hContact, GC_FAKE_EVENT); +} + void CChatRoomDlg::onClick_Filter(CCtrlButton *pButton) { if (!pButton->Enabled()) @@ -1116,34 +1140,13 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) } break; } - if (LOWORD(wParam) != WA_ACTIVE) - break; - // fall through + if (LOWORD(wParam) == WA_ACTIVE) + onActivate(); + break; case WM_MOUSEACTIVATE: - { - WINDOWPLACEMENT wp = {}; - wp.length = sizeof(wp); - GetWindowPlacement(m_hwnd, &wp); - g_Settings.iX = wp.rcNormalPosition.left; - g_Settings.iY = wp.rcNormalPosition.top; - g_Settings.iWidth = wp.rcNormalPosition.right - wp.rcNormalPosition.left; - g_Settings.iHeight = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top; - - if (uMsg != WM_ACTIVATE) - SetFocus(m_message.GetHwnd()); - - SendMessage(m_hwnd, DM_UPDATETITLE, 0, 0); - pci->SetActiveSession(m_si); - UpdateStatusBar(); - - if (KillTimer(m_hwnd, TIMERID_FLASHWND)) - FlashWindow(m_pOwner->GetHwnd(), FALSE); - if (db_get_w(m_hContact, m_si->pszModule, "ApparentMode", 0) != 0) - db_set_w(m_hContact, m_si->pszModule, "ApparentMode", 0); - if (pcli->pfnGetEvent(m_hContact, 0)) - pcli->pfnRemoveEvent(m_hContact, GC_FAKE_EVENT); - } + onActivate(); + SetFocus(m_message.GetHwnd()); break; case WM_NOTIFY: diff --git a/src/core/stdmsg/src/stdafx.h b/src/core/stdmsg/src/stdafx.h index c3e8cdabd8..14bde56a30 100644 --- a/src/core/stdmsg/src/stdafx.h +++ b/src/core/stdmsg/src/stdafx.h @@ -204,6 +204,8 @@ class CChatRoomDlg : public CSrmmBaseDialog int m_iSplitterX, m_iSplitterY;
+ void onActivate(void);
+
public:
CChatRoomDlg(CTabbedWindow*, SESSION_INFO*);
|