diff options
author | George Hazan <ghazan@miranda.im> | 2019-09-16 14:38:20 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-09-16 14:38:20 +0300 |
commit | 757fb8c1b1387b1fe5748bf480b1df6d5d2980e8 (patch) | |
tree | 0123b845358ed1a994051d54c73d7b4162a0f1a8 /plugins | |
parent | 4c5b3c05d58b815ade3fa0cb88aea48dbeabc04f (diff) |
tabSRMM: duplicate code removed
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/TabSRMM/src/controls.cpp | 3 | ||||
-rw-r--r-- | plugins/TabSRMM/src/msgdialog.cpp | 10 | ||||
-rw-r--r-- | plugins/TabSRMM/src/msgdlgother.cpp | 218 | ||||
-rw-r--r-- | plugins/TabSRMM/src/msgs.h | 1 |
4 files changed, 93 insertions, 139 deletions
diff --git a/plugins/TabSRMM/src/controls.cpp b/plugins/TabSRMM/src/controls.cpp index 8dd9fb01e8..62a22ec0f9 100644 --- a/plugins/TabSRMM/src/controls.cpp +++ b/plugins/TabSRMM/src/controls.cpp @@ -431,6 +431,9 @@ void CMenuBar::cancel() void CMenuBar::Cancel(void)
{
+ if (m_activeMenu == nullptr)
+ return;
+
cancel();
m_fTracking = false;
autoShow(0);
diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp index dfa226d46b..1d368665be 100644 --- a/plugins/TabSRMM/src/msgdialog.cpp +++ b/plugins/TabSRMM/src/msgdialog.cpp @@ -2869,10 +2869,7 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) if (CMimAPI::m_shutDown)
break;
- if (isChat())
- UpdateWindowState(WM_SETFOCUS);
- else
- MsgWindowUpdateState(WM_SETFOCUS);
+ UpdateWindowState(WM_SETFOCUS);
SetFocus(m_message.GetHwnd());
return 1;
@@ -2884,10 +2881,7 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) __fallthrough;
case WM_MOUSEACTIVATE:
- if (isChat())
- UpdateWindowState(WM_ACTIVATE);
- else
- MsgWindowUpdateState(WM_ACTIVATE);
+ UpdateWindowState(WM_ACTIVATE);
return 1;
case DM_UPDATEPICLAYOUT:
diff --git a/plugins/TabSRMM/src/msgdlgother.cpp b/plugins/TabSRMM/src/msgdlgother.cpp index c0cddd023b..64010ae736 100644 --- a/plugins/TabSRMM/src/msgdlgother.cpp +++ b/plugins/TabSRMM/src/msgdlgother.cpp @@ -1074,118 +1074,6 @@ int CMsgDialog::MsgWindowUpdateMenu(HMENU submenu, int menuID) // it protects itself from being called more than once per session activation and is valid for // normal IM sessions *only*. Group chat sessions have their own activation handler (see chat/window.c) -void CMsgDialog::MsgWindowUpdateState(UINT msg) -{ - if (m_iTabID < 0) - return; - - if (msg == WM_ACTIVATE) { - if (m_pContainer->m_dwFlags & CNT_TRANSPARENCY) { - DWORD trans = LOWORD(m_pContainer->m_pSettings->dwTransparency); - SetLayeredWindowAttributes(m_pContainer->m_hwnd, 0, (BYTE)trans, (m_pContainer->m_dwFlags & CNT_TRANSPARENCY ? LWA_ALPHA : 0)); - } - } - - if (m_bIsAutosizingInput && m_iInputAreaHeight == -1) { - m_iInputAreaHeight = 0; - m_message.SendMsg(EM_REQUESTRESIZE, 0, 0); - } - - if (m_pWnd) - m_pWnd->activateTab(); - m_pPanel.dismissConfig(); - m_dwUnread = 0; - if (m_pContainer->m_hwndSaved == m_hwnd) - return; - - m_pContainer->m_hwndSaved = m_hwnd; - - m_dwTickLastEvent = 0; - m_dwFlags &= ~MWF_DIVIDERSET; - if (KillTimer(m_hwnd, TIMERID_FLASHWND)) { - FlashTab(false); - m_bCanFlashTab = false; - } - if (m_pContainer->m_dwFlashingStarted != 0) { - FlashContainer(m_pContainer, 0, 0); - m_pContainer->m_dwFlashingStarted = 0; - } - if (m_dwFlagsEx & MWF_SHOW_FLASHCLIST) { - m_dwFlagsEx &= ~MWF_SHOW_FLASHCLIST; - if (m_hFlashingEvent != 0) - g_clistApi.pfnRemoveEvent(m_hContact, m_hFlashingEvent); - m_hFlashingEvent = 0; - } - m_pContainer->m_dwFlags &= ~CNT_NEED_UPDATETITLE; - - if ((m_dwFlags & MWF_DEFERREDREMAKELOG) && !IsIconic(m_pContainer->m_hwnd)) { - RemakeLog(); - m_dwFlags &= ~MWF_DEFERREDREMAKELOG; - } - - if (m_dwFlags & MWF_NEEDCHECKSIZE) - PostMessage(m_hwnd, DM_SAVESIZE, 0, 0); - - m_pContainer->m_hIconTaskbarOverlay = nullptr; - m_pContainer->UpdateTitle(m_hContact); - - tabUpdateStatusBar(); - m_dwLastActivity = GetTickCount(); - m_pContainer->m_dwLastActivity = m_dwLastActivity; - - m_pContainer->m_pMenuBar->configureMenu(); - UpdateTrayMenuState(this, FALSE); - - if (m_pContainer->m_hwndActive == m_hwnd) - DeletePopupsForContact(m_hContact, PU_REMOVE_ON_FOCUS); - - m_pPanel.Invalidate(); - - if (m_dwFlags & MWF_DEFERREDSCROLL && m_hwndIEView == nullptr && m_hwndHPP == nullptr) { - m_dwFlags &= ~MWF_DEFERREDSCROLL; - DM_ScrollToBottom(0, 1); - } - - DM_SetDBButtonStates(); - - if (m_hwndIEView) { - RECT rcRTF; - POINT pt; - - GetWindowRect(m_log.GetHwnd(), &rcRTF); - rcRTF.left += 20; - rcRTF.top += 20; - pt.x = rcRTF.left; - pt.y = rcRTF.top; - if (m_hwndIEView) { - if (M.GetByte("subclassIEView", 0)) { - mir_subclassWindow(m_hwndIEView, IEViewSubclassProc); - SetWindowPos(m_hwndIEView, nullptr, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DRAWFRAME); - RedrawWindow(m_hwndIEView, nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE | RDW_UPDATENOW); - } - } - m_hwndIWebBrowserControl = WindowFromPoint(pt); - } - - if (m_dwFlagsEx & MWF_EX_DELAYEDSPLITTER) { - m_dwFlagsEx &= ~MWF_EX_DELAYEDSPLITTER; - ShowWindow(m_pContainer->m_hwnd, SW_RESTORE); - PostMessage(m_hwnd, DM_SPLITTERGLOBALEVENT, m_wParam, m_lParam); - m_wParam = m_lParam = 0; - } - if (m_dwFlagsEx & MWF_EX_AVATARCHANGED) { - m_dwFlagsEx &= ~MWF_EX_AVATARCHANGED; - PostMessage(m_hwnd, DM_UPDATEPICLAYOUT, 0, 0); - } - BB_SetButtonsPos(); - if (M.isAero()) - InvalidateRect(m_hwndParent, nullptr, FALSE); - if (m_pContainer->m_dwFlags & CNT_SIDEBAR) - m_pContainer->m_pSideBar->setActiveItem(this); - - if (m_pWnd) - m_pWnd->Invalidate(); -} ///////////////////////////////////////////////////////////////////////////////////////// @@ -2427,7 +2315,7 @@ void CMsgDialog::UpdateWindowIcon() void CMsgDialog::UpdateWindowState(UINT msg) { - if (m_si == nullptr) + if (m_iTabID < 0) return; if (msg == WM_ACTIVATE) { @@ -2465,11 +2353,18 @@ void CMsgDialog::UpdateWindowState(UINT msg) return; m_pContainer->m_hwndSaved = m_hwnd; + m_dwTickLastEvent = 0; + m_dwFlags &= ~MWF_DIVIDERSET; - g_chatApi.SetActiveSession(m_si); - m_hTabIcon = m_hTabStatusIcon; + if (m_pContainer->m_dwFlashingStarted != 0) { + FlashContainer(m_pContainer, 0, 0); + m_pContainer->m_dwFlashingStarted = 0; + } + + if (m_si) { + g_chatApi.SetActiveSession(m_si); + m_hTabIcon = m_hTabStatusIcon; - if (m_iTabID >= 0) { if (db_get_w(m_si->hContact, m_si->pszModule, "ApparentMode", 0) != 0) db_set_w(m_si->hContact, m_si->pszModule, "ApparentMode", 0); if (g_clistApi.pfnGetEvent(m_si->hContact, 0)) @@ -2477,17 +2372,12 @@ void CMsgDialog::UpdateWindowState(UINT msg) UpdateTitle(); m_hTabIcon = m_hTabStatusIcon; - m_dwTickLastEvent = 0; - m_dwFlags &= ~MWF_DIVIDERSET; if (KillTimer(m_hwnd, TIMERID_FLASHWND) || m_iFlashIcon) { FlashTab(false); m_bCanFlashTab = FALSE; m_iFlashIcon = nullptr; } - if (m_pContainer->m_dwFlashingStarted != 0) { - FlashContainer(m_pContainer, 0, 0); - m_pContainer->m_dwFlashingStarted = 0; - } + m_pContainer->m_dwFlags &= ~CNT_NEED_UPDATETITLE; if (m_dwFlags & MWF_NEEDCHECKSIZE) @@ -2498,16 +2388,84 @@ void CMsgDialog::UpdateWindowState(UINT msg) m_pContainer->m_dwLastActivity = m_dwLastActivity; m_pContainer->m_pMenuBar->configureMenu(); UpdateTrayMenuState(this, FALSE); - DM_SetDBButtonStates(); - - if (m_dwFlagsEx & MWF_EX_DELAYEDSPLITTER) { - m_dwFlagsEx &= ~MWF_EX_DELAYEDSPLITTER; - ShowWindow(m_pContainer->m_hwnd, SW_RESTORE); - PostMessage(m_hwnd, DM_SPLITTERGLOBALEVENT, m_wParam, m_lParam); - PostMessage(m_hwnd, WM_SIZE, 0, 0); - m_wParam = m_lParam = 0; + } + else { + if (KillTimer(m_hwnd, TIMERID_FLASHWND)) { + FlashTab(false); + m_bCanFlashTab = false; + } + + if (m_dwFlagsEx & MWF_SHOW_FLASHCLIST) { + m_dwFlagsEx &= ~MWF_SHOW_FLASHCLIST; + if (m_hFlashingEvent != 0) + g_clistApi.pfnRemoveEvent(m_hContact, m_hFlashingEvent); + m_hFlashingEvent = 0; + } + m_pContainer->m_dwFlags &= ~CNT_NEED_UPDATETITLE; + + if ((m_dwFlags & MWF_DEFERREDREMAKELOG) && !IsIconic(m_pContainer->m_hwnd)) { + RemakeLog(); + m_dwFlags &= ~MWF_DEFERREDREMAKELOG; + } + + if (m_dwFlags & MWF_NEEDCHECKSIZE) + PostMessage(m_hwnd, DM_SAVESIZE, 0, 0); + + m_pContainer->m_hIconTaskbarOverlay = nullptr; + m_pContainer->UpdateTitle(m_hContact); + + tabUpdateStatusBar(); + m_dwLastActivity = GetTickCount(); + m_pContainer->m_dwLastActivity = m_dwLastActivity; + + m_pContainer->m_pMenuBar->configureMenu(); + UpdateTrayMenuState(this, FALSE); + + if (m_pContainer->m_hwndActive == m_hwnd) + DeletePopupsForContact(m_hContact, PU_REMOVE_ON_FOCUS); + + m_pPanel.Invalidate(); + + if (m_dwFlags & MWF_DEFERREDSCROLL && m_hwndIEView == nullptr && m_hwndHPP == nullptr) { + m_dwFlags &= ~MWF_DEFERREDSCROLL; + DM_ScrollToBottom(0, 1); + } + + if (m_hwndIEView) { + RECT rcRTF; + POINT pt; + + GetWindowRect(m_log.GetHwnd(), &rcRTF); + rcRTF.left += 20; + rcRTF.top += 20; + pt.x = rcRTF.left; + pt.y = rcRTF.top; + if (m_hwndIEView) { + if (M.GetByte("subclassIEView", 0)) { + mir_subclassWindow(m_hwndIEView, IEViewSubclassProc); + SetWindowPos(m_hwndIEView, nullptr, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DRAWFRAME); + RedrawWindow(m_hwndIEView, nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE | RDW_UPDATENOW); + } + } + m_hwndIWebBrowserControl = WindowFromPoint(pt); + } + + if (m_dwFlagsEx & MWF_EX_AVATARCHANGED) { + m_dwFlagsEx &= ~MWF_EX_AVATARCHANGED; + PostMessage(m_hwnd, DM_UPDATEPICLAYOUT, 0, 0); } } + + DM_SetDBButtonStates(); + + if (m_dwFlagsEx & MWF_EX_DELAYEDSPLITTER) { + m_dwFlagsEx &= ~MWF_EX_DELAYEDSPLITTER; + ShowWindow(m_pContainer->m_hwnd, SW_RESTORE); + PostMessage(m_hwnd, DM_SPLITTERGLOBALEVENT, m_wParam, m_lParam); + PostMessage(m_hwnd, WM_SIZE, 0, 0); + m_wParam = m_lParam = 0; + } + BB_SetButtonsPos(); if (M.isAero()) InvalidateRect(m_hwndParent, nullptr, FALSE); diff --git a/plugins/TabSRMM/src/msgs.h b/plugins/TabSRMM/src/msgs.h index 12382555f4..0a1c2deff6 100644 --- a/plugins/TabSRMM/src/msgs.h +++ b/plugins/TabSRMM/src/msgs.h @@ -297,7 +297,6 @@ class CMsgDialog : public CSrmmBaseDialog void LoadContactAvatar(void);
void LoadOwnAvatar(void);
void LoadSplitter(void);
- void MsgWindowUpdateState(UINT msg);
void PlayIncomingSound(void) const;
void ReplaceIcons(LONG startAt, int fAppend, BOOL isSent);
void ReplayQueue(void);
|