summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2017-03-09 14:30:35 +0300
committerGeorge Hazan <ghazan@miranda.im>2017-03-09 14:30:45 +0300
commit6bf18e4265c8a0938d12e98eef1562b1ee4bc97b (patch)
treec5d317dc655ef1327ebcf463f3508da1f32b93b0
parent58e977eada0eb95198dbc552d99446c83506a73a (diff)
any CSrmmBaseDialog descendant can refer to SESSION_INFO, not only CChatRoomDlg
-rw-r--r--include/m_chat_int.h3
-rw-r--r--libs/win32/mir_app.libbin105828 -> 106114 bytes
-rw-r--r--libs/win64/mir_app.libbin101278 -> 101568 bytes
-rw-r--r--plugins/Scriver/src/chat/window.cpp8
-rw-r--r--plugins/Scriver/src/msgs.h5
-rw-r--r--plugins/TabSRMM/src/buttonsbar.cpp10
-rw-r--r--plugins/TabSRMM/src/chat_window.cpp297
-rw-r--r--plugins/TabSRMM/src/contactcache.cpp2
-rw-r--r--plugins/TabSRMM/src/container.cpp28
-rw-r--r--plugins/TabSRMM/src/controls.cpp22
-rw-r--r--plugins/TabSRMM/src/controls.h2
-rw-r--r--plugins/TabSRMM/src/functions.h2
-rw-r--r--plugins/TabSRMM/src/generic_msghandlers.cpp91
-rw-r--r--plugins/TabSRMM/src/infopanel.cpp10
-rw-r--r--plugins/TabSRMM/src/msgdialog.cpp82
-rw-r--r--plugins/TabSRMM/src/msgdlgutils.cpp25
-rw-r--r--plugins/TabSRMM/src/msglog.cpp6
-rw-r--r--plugins/TabSRMM/src/msgs.cpp26
-rw-r--r--plugins/TabSRMM/src/msgs.h39
-rw-r--r--plugins/TabSRMM/src/tabctrl.cpp6
-rw-r--r--plugins/TabSRMM/src/taskbar.cpp10
-rw-r--r--plugins/TabSRMM/src/themes.cpp14
-rw-r--r--plugins/TabSRMM/src/utils.cpp4
-rw-r--r--src/core/stdmsg/src/chat_window.cpp2
-rw-r--r--src/core/stdmsg/src/stdafx.h2
-rw-r--r--src/mir_app/src/mir_app.def1
-rw-r--r--src/mir_app/src/mir_app64.def1
-rw-r--r--src/mir_app/src/srmm_base.cpp1
28 files changed, 332 insertions, 367 deletions
diff --git a/include/m_chat_int.h b/include/m_chat_int.h
index 886c83d22f..1342e2b591 100644
--- a/include/m_chat_int.h
+++ b/include/m_chat_int.h
@@ -421,10 +421,13 @@ protected:
protected:
CCtrlEdit *m_pLog, *m_pEntry;
+ SESSION_INFO *m_si;
public:
MCONTACT m_hContact;
+ __forceinline bool isChat() const { return m_si != nullptr; }
+
__inline void* operator new(size_t size){ return calloc(1, size); }
__inline void operator delete(void* p) { free(p); }
};
diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib
index 01af618b2c..635b465d5f 100644
--- a/libs/win32/mir_app.lib
+++ b/libs/win32/mir_app.lib
Binary files differ
diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib
index 53dc7ef50d..20a5dae756 100644
--- a/libs/win64/mir_app.lib
+++ b/libs/win64/mir_app.lib
Binary files differ
diff --git a/plugins/Scriver/src/chat/window.cpp b/plugins/Scriver/src/chat/window.cpp
index 251bb7acf1..c48e0c8ea5 100644
--- a/plugins/Scriver/src/chat/window.cpp
+++ b/plugins/Scriver/src/chat/window.cpp
@@ -118,7 +118,7 @@ LBL_SkipEnd:
}
}
-static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+LRESULT CALLBACK CChatRoomDlg::MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
BOOL isShift = GetKeyState(VK_SHIFT) & 0x8000;
BOOL isCtrl = GetKeyState(VK_CONTROL) & 0x8000;
@@ -459,7 +459,7 @@ static LRESULT CALLBACK ButtonSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, L
return mir_callNextSubclass(hwnd, ButtonSubclassProc, msg, wParam, lParam);
}
-static LRESULT CALLBACK LogSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+LRESULT CALLBACK CChatRoomDlg::LogSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static BOOL inMenu = FALSE;
CChatRoomDlg *pDlg = (CChatRoomDlg*)GetWindowLongPtr(GetParent(hwnd), GWLP_USERDATA);
@@ -582,7 +582,7 @@ static LRESULT CALLBACK LogSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
return mir_callNextSubclass(hwnd, LogSubclassProc, msg, wParam, lParam);
}
-static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+LRESULT CALLBACK CChatRoomDlg::NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
CChatRoomDlg *pDlg = (CChatRoomDlg*)GetWindowLongPtr(GetParent(hwnd), GWLP_USERDATA);
@@ -863,7 +863,6 @@ void CChatRoomDlg::MessageDialogResize(int w, int h)
CChatRoomDlg::CChatRoomDlg(SESSION_INFO *si)
: CScriverWindow(IDD_CHANNEL),
- m_si(si),
m_log(this, IDC_LOG),
m_message(this, IDC_MESSAGE),
@@ -883,6 +882,7 @@ CChatRoomDlg::CChatRoomDlg(SESSION_INFO *si)
m_btnShowList(this, IDC_SHOWNICKLIST),
m_btnUnderline(this, IDC_UNDERLINE)
{
+ m_si = si;
m_pLog = &m_log;
m_pEntry = &m_message;
m_hContact = si->hContact;
diff --git a/plugins/Scriver/src/msgs.h b/plugins/Scriver/src/msgs.h
index 8e04ec88d5..e7b9e57086 100644
--- a/plugins/Scriver/src/msgs.h
+++ b/plugins/Scriver/src/msgs.h
@@ -175,8 +175,11 @@ class CChatRoomDlg : public CScriverWindow
void MessageDialogResize(int w, int h);
+ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+ static LRESULT CALLBACK LogSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+ static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+
public:
- SESSION_INFO *m_si;
wchar_t m_wszSearch[255];
public:
diff --git a/plugins/TabSRMM/src/buttonsbar.cpp b/plugins/TabSRMM/src/buttonsbar.cpp
index eb52e2f727..2ea44eae73 100644
--- a/plugins/TabSRMM/src/buttonsbar.cpp
+++ b/plugins/TabSRMM/src/buttonsbar.cpp
@@ -145,7 +145,7 @@ void CTabBaseDlg::BB_InitDlgButtons()
BYTE gap = DPISCALEX_S(db_get_b(0, SRMSGMOD, "ButtonsBarGap", 1));
RECT rcSplitter;
- GetWindowRect(GetDlgItem(m_hwnd, (m_bType == SESSIONTYPE_IM) ? IDC_SPLITTERY : IDC_SPLITTERY), &rcSplitter);
+ GetWindowRect(GetDlgItem(m_hwnd, IDC_SPLITTERY), &rcSplitter);
POINT ptSplitter = { 0, rcSplitter.top };
ScreenToClient(m_hwnd, &ptSplitter);
@@ -154,7 +154,7 @@ void CTabBaseDlg::BB_InitDlgButtons()
m_bbLSideWidth = m_bbRSideWidth = 0;
- Srmm_CreateToolbarIcons(m_hwnd, (m_bType == SESSIONTYPE_IM) ? BBBF_ISIMBUTTON : BBBF_ISCHATBUTTON);
+ Srmm_CreateToolbarIcons(m_hwnd, isChat() ? BBBF_ISCHATBUTTON : BBBF_ISIMBUTTON);
CustomButtonData *cbd;
for (int i = 0; cbd = Srmm_GetNthButton(i); i++) {
@@ -226,7 +226,7 @@ BOOL CTabBaseDlg::BB_SetButtonsPos()
int splitterY = (!bBottomToolbar) ? ptSplitter.y - DPISCALEY_S(1) : rect.bottom;
int tempL = m_bbLSideWidth, tempR = m_bbRSideWidth;
int lwidth = 0, rwidth = 0;
- int iOff = DPISCALEY_S((PluginConfig.m_DPIscaleY > 1.0) ? (m_bType == SESSIONTYPE_IM ? 22 : 23) : 22);
+ int iOff = DPISCALEY_S((PluginConfig.m_DPIscaleY > 1.0) ? (!isChat() ? 22 : 23) : 22);
int foravatar = 0;
if ((rect.bottom - ptSplitter.y - (rcSplitter.bottom - rcSplitter.top) /*- DPISCALEY(2)*/ - (bBottomToolbar ? DPISCALEY_S(24) : 0) < m_pic.cy - DPISCALEY_S(2)) && m_bShowAvatar && !PluginConfig.m_bAlwaysFullToolbarWidth)
@@ -244,7 +244,7 @@ BOOL CTabBaseDlg::BB_SetButtonsPos()
if (cbd->m_bRSided) // filter only left buttons
continue;
- if (((m_bType == SESSIONTYPE_IM) && cbd->m_bIMButton) || ((m_bType == SESSIONTYPE_CHAT) && cbd->m_bChatButton)) {
+ if ((!isChat() && cbd->m_bIMButton) || (isChat() && cbd->m_bChatButton)) {
HWND hwndButton = GetDlgItem(m_hwnd, cbd->m_dwButtonCID);
if (!showToolbar) {
@@ -294,7 +294,7 @@ BOOL CTabBaseDlg::BB_SetButtonsPos()
if (!cbd->m_bRSided) // filter only right buttons
continue;
- if (((m_bType == SESSIONTYPE_IM) && cbd->m_bIMButton) || ((m_bType == SESSIONTYPE_CHAT) && cbd->m_bChatButton)) {
+ if ((!isChat() && cbd->m_bIMButton) || (isChat() && cbd->m_bChatButton)) {
HWND hwndButton = GetDlgItem(m_hwnd, cbd->m_dwButtonCID);
if (!showToolbar) {
diff --git a/plugins/TabSRMM/src/chat_window.cpp b/plugins/TabSRMM/src/chat_window.cpp
index 25cd8b3d65..cb7780da7f 100644
--- a/plugins/TabSRMM/src/chat_window.cpp
+++ b/plugins/TabSRMM/src/chat_window.cpp
@@ -149,7 +149,7 @@ bool IsStringValidLink(wchar_t *pszText)
void CChatRoomDlg::UpdateWindowState(UINT msg)
{
- if (si == nullptr)
+ if (m_si == nullptr)
return;
if (msg == WM_ACTIVATE) {
@@ -188,14 +188,14 @@ void CChatRoomDlg::UpdateWindowState(UINT msg)
m_pContainer->hwndSaved = m_hwnd;
- pci->SetActiveSession(si->ptszID, si->pszModule);
+ pci->SetActiveSession(m_si->ptszID, m_si->pszModule);
m_hTabIcon = m_hTabStatusIcon;
if (m_iTabID >= 0) {
- if (db_get_w(si->hContact, si->pszModule, "ApparentMode", 0) != 0)
- db_set_w(si->hContact, si->pszModule, "ApparentMode", 0);
- if (pcli->pfnGetEvent(si->hContact, 0))
- pcli->pfnRemoveEvent(si->hContact, GC_FAKE_EVENT);
+ 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 (pcli->pfnGetEvent(m_si->hContact, 0))
+ pcli->pfnRemoveEvent(m_si->hContact, GC_FAKE_EVENT);
SendMessage(m_hwnd, GC_UPDATETITLE, 0, 1);
m_dwTickLastEvent = 0;
@@ -253,7 +253,7 @@ int CChatRoomDlg::Resizer(UTILRESIZECONTROL *urc)
{
bool bToolbar = !(m_pContainer->dwFlags & CNT_HIDETOOLBAR);
bool bBottomToolbar = (m_pContainer->dwFlags & CNT_BOTTOMTOOLBAR) != 0;
- bool bNick = si->iType != GCW_SERVER && si->bNicklistEnabled;
+ bool bNick = m_si->iType != GCW_SERVER && m_si->bNicklistEnabled;
bool bInfoPanel = m_pPanel.isActive();
int panelHeight = m_pPanel.getHeight() + 1;
int iSplitterX = m_pContainer->settings->iSplitterX;
@@ -264,14 +264,14 @@ int CChatRoomDlg::Resizer(UTILRESIZECONTROL *urc)
if (m_bIsAutosizingInput)
Utils::showDlgControl(m_hwnd, IDC_SPLITTERY, SW_HIDE);
- if (si->iType != GCW_SERVER) {
- Utils::showDlgControl(m_hwnd, IDC_LIST, si->bNicklistEnabled ? SW_SHOW : SW_HIDE);
- Utils::showDlgControl(m_hwnd, IDC_SPLITTERX, si->bNicklistEnabled ? SW_SHOW : SW_HIDE);
+ if (m_si->iType != GCW_SERVER) {
+ Utils::showDlgControl(m_hwnd, IDC_LIST, m_si->bNicklistEnabled ? SW_SHOW : SW_HIDE);
+ Utils::showDlgControl(m_hwnd, IDC_SPLITTERX, m_si->bNicklistEnabled ? SW_SHOW : SW_HIDE);
m_btnNickList.Enable(true);
m_btnFilter.Enable(true);
- if (si->iType == GCW_CHATROOM) {
- MODULEINFO *tmp = pci->MM_FindModule(si->pszModule);
+ if (m_si->iType == GCW_CHATROOM) {
+ MODULEINFO *tmp = pci->MM_FindModule(m_si->pszModule);
if (tmp)
m_btnChannelMgr.Enable(tmp->bChanMgr);
}
@@ -281,7 +281,7 @@ int CChatRoomDlg::Resizer(UTILRESIZECONTROL *urc)
Utils::showDlgControl(m_hwnd, IDC_SPLITTERX, SW_HIDE);
}
- if (si->iType == GCW_SERVER) {
+ if (m_si->iType == GCW_SERVER) {
m_btnNickList.Enable(false);
m_btnFilter.Enable(false);
m_btnChannelMgr.Enable(false);
@@ -468,17 +468,17 @@ LBL_SkipEnd:
return false;
}
-static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+LRESULT CALLBACK CChatRoomDlg::MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HWND hwndParent = GetParent(hwnd);
CChatRoomDlg *mwdat = (CChatRoomDlg*)GetWindowLongPtr(hwndParent, GWLP_USERDATA);
MESSAGESUBDATA *dat = (MESSAGESUBDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
if (mwdat != nullptr)
- if (mwdat->m_fkeyProcessed && (msg == WM_KEYUP)) {
+ if (mwdat->m_bkeyProcessed && (msg == WM_KEYUP)) {
GetKeyboardState(mwdat->kstate);
if (!(mwdat->kstate[VK_CONTROL] & 0x80) && !(mwdat->kstate[VK_SHIFT] & 0x80))
- mwdat->m_fkeyProcessed = false;
+ mwdat->m_bkeyProcessed = false;
return 0;
}
@@ -504,7 +504,7 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
RemoveMenu(hSubMenu, 8, MF_BYPOSITION);
RemoveMenu(hSubMenu, 4, MF_BYPOSITION);
- MODULEINFO *mi = pci->MM_FindModule(mwdat->si->pszModule);
+ MODULEINFO *mi = pci->MM_FindModule(mwdat->m_si->pszModule);
EnableMenuItem(hSubMenu, IDM_PASTEFORMATTED, MF_BYCOMMAND | ((mi && mi->bBold) ? MF_ENABLED : MF_GRAYED));
TranslateMenu(hSubMenu);
@@ -569,16 +569,16 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
break;
case WM_SYSKEYDOWN:
- mwdat->m_fkeyProcessed = false;
+ mwdat->m_bkeyProcessed = false;
if (ProcessHotkeysByMsgFilter(hwnd, msg, wParam, lParam, IDC_MESSAGE)) {
- mwdat->m_fkeyProcessed = true;
+ mwdat->m_bkeyProcessed = true;
return 0;
}
break;
case WM_SYSCHAR:
- if (mwdat->m_fkeyProcessed) {
- mwdat->m_fkeyProcessed = false; // preceeding key event has been processed by miranda hotkey service
+ if (mwdat->m_bkeyProcessed) {
+ mwdat->m_bkeyProcessed = false; // preceeding key event has been processed by miranda hotkey service
return 0;
}
@@ -598,7 +598,7 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
SkinPlaySound("SoundOnTyping");
if (isCtrl && !isAlt && !isShift) {
- MODULEINFO *mi = pci->MM_FindModule(mwdat->si->pszModule);
+ MODULEINFO *mi = pci->MM_FindModule(mwdat->m_si->pszModule);
if (mi == nullptr)
return 0;
@@ -662,7 +662,7 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
SkinPlaySound("SoundOnTyping");
if (wParam == VK_INSERT && !isShift && !isCtrl && !isAlt) {
- mwdat->m_fInsertMode = !mwdat->m_fInsertMode;
+ mwdat->m_bInsertMode = !mwdat->m_bInsertMode;
SendMessage(hwndParent, WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), EN_CHANGE), (LPARAM)hwnd);
}
if (wParam == VK_CAPITAL || wParam == VK_NUMLOCK)
@@ -740,9 +740,9 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
SendMessage(mwdat->m_pContainer->hwnd, DM_SELECTTAB, DM_SELECT_PREV, 0);
return TRUE;
}
- if (wParam == VK_TAB && !isCtrl && !isShift) { //tab-autocomplete
+ if (wParam == VK_TAB && !isCtrl && !isShift) { // tab-autocomplete
SendMessage(hwnd, WM_SETREDRAW, FALSE, 0);
- bool fCompleted = TabAutoComplete(hwnd, dat, mwdat->si);
+ bool fCompleted = TabAutoComplete(hwnd, dat, mwdat->m_si);
SendMessage(hwnd, WM_SETREDRAW, TRUE, 0);
RedrawWindow(hwnd, nullptr, nullptr, RDW_INVALIDATE);
if (!fCompleted && !PluginConfig.m_bAllowTab) {
@@ -773,9 +773,9 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
}
if (wParam == VK_UP && isCtrl && !isAlt) {
- char *lpPrevCmd = pci->SM_GetPrevCommand(mwdat->si->ptszID, mwdat->si->pszModule);
+ char *lpPrevCmd = pci->SM_GetPrevCommand(mwdat->m_si->ptszID, mwdat->m_si->pszModule);
- if (!mwdat->si->lpCurrentCommand || !mwdat->si->lpCurrentCommand->last) {
+ if (!mwdat->m_si->lpCurrentCommand || !mwdat->m_si->lpCurrentCommand->last) {
// Next command is not defined. It means currently entered text is not saved in the history and it
// need to be saved in the window context.
char *enteredText = Message_GetFromStream(hwndParent);
@@ -817,7 +817,7 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
ste.flags = ST_DEFAULT;
ste.codepage = CP_ACP;
- char *lpPrevCmd = pci->SM_GetNextCommand(mwdat->si->ptszID, mwdat->si->pszModule);
+ char *lpPrevCmd = pci->SM_GetNextCommand(mwdat->m_si->ptszID, mwdat->m_si->pszModule);
if (lpPrevCmd)
SendMessage(hwnd, EM_SETTEXTEX, (WPARAM)&ste, (LPARAM)lpPrevCmd);
else if (mwdat->m_enteredText) {
@@ -859,17 +859,17 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
cf.dwEffects = 0;
SendMessage(hwnd, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
{
- MODULEINFO *mi = pci->MM_FindModule(mwdat->si->pszModule);
+ MODULEINFO *mi = pci->MM_FindModule(mwdat->m_si->pszModule);
if (mi == nullptr)
break;
if (mi->bColor) {
- int index = Chat_GetColorIndex(mwdat->si->pszModule, cf.crTextColor);
+ int index = Chat_GetColorIndex(mwdat->m_si->pszModule, cf.crTextColor);
UINT u = IsDlgButtonChecked(GetParent(hwnd), IDC_COLOR);
if (index >= 0) {
- mwdat->si->bFGSet = true;
- mwdat->si->iFG = index;
+ mwdat->m_si->bFGSet = true;
+ mwdat->m_si->iFG = index;
}
if (u == BST_UNCHECKED && cf.crTextColor != cr)
@@ -879,13 +879,13 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
}
if (mi->bBkgColor) {
- int index = Chat_GetColorIndex(mwdat->si->pszModule, cf.crBackColor);
+ int index = Chat_GetColorIndex(mwdat->m_si->pszModule, cf.crBackColor);
COLORREF crB = (COLORREF)M.GetDword(FONTMODULE, "inputbg", SRMSGDEFSET_BKGCOLOUR);
UINT u = IsDlgButtonChecked(hwndParent, IDC_BKGCOLOR);
if (index >= 0) {
- mwdat->si->bBGSet = true;
- mwdat->si->iBG = index;
+ mwdat->m_si->bBGSet = true;
+ mwdat->m_si->iBG = index;
}
if (u == BST_UNCHECKED && cf.crBackColor != crB)
@@ -1177,16 +1177,16 @@ static LRESULT CALLBACK LogSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
break;
case WM_SYSKEYDOWN:
- mwdat->m_fkeyProcessed = false;
+ mwdat->m_bkeyProcessed = false;
if (ProcessHotkeysByMsgFilter(hwnd, msg, wParam, lParam, IDC_LOG)) {
- mwdat->m_fkeyProcessed = true;
+ mwdat->m_bkeyProcessed = true;
return 0;
}
break;
case WM_SYSCHAR:
- if (mwdat->m_fkeyProcessed) {
- mwdat->m_fkeyProcessed = false;
+ if (mwdat->m_bkeyProcessed) {
+ mwdat->m_bkeyProcessed = false;
return 0;
}
break;
@@ -1219,7 +1219,7 @@ static LRESULT CALLBACK LogSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
/////////////////////////////////////////////////////////////////////////////////////////
// subclassing for the nickname list control.It is an ownerdrawn listbox
-static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+LRESULT CALLBACK CChatRoomDlg::NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HWND hwndParent = GetParent(hwnd);
CChatRoomDlg *dat = (CChatRoomDlg*)GetWindowLongPtr(hwndParent, GWLP_USERDATA);
@@ -1242,10 +1242,10 @@ static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
HDC dc = (HDC)wParam;
if (dc) {
int index = SendMessage(hwnd, LB_GETTOPINDEX, 0, 0);
- if (index == LB_ERR || dat->si->nUsersInNicklist <= 0)
+ if (index == LB_ERR || dat->m_si->nUsersInNicklist <= 0)
return 0;
- int items = dat->si->nUsersInNicklist - index;
+ int items = dat->m_si->nUsersInNicklist - index;
int height = SendMessage(hwnd, LB_GETITEMHEIGHT, 0, 0);
if (height != LB_ERR) {
@@ -1347,7 +1347,7 @@ static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
// string we have
int i, iItems = SendMessage(hwnd, LB_GETCOUNT, 0, 0);
for (i = 0; i < iItems; i++) {
- USERINFO *ui = pci->UM_FindUserFromIndex(dat->si->pUsers, i);
+ USERINFO *ui = pci->UM_FindUserFromIndex(dat->m_si->pUsers, i);
if (ui) {
if (!wcsnicmp(ui->pszNick, dat->m_wszSearch, mir_wstrlen(dat->m_wszSearch))) {
SendMessage(hwnd, LB_SETSEL, FALSE, -1);
@@ -1398,7 +1398,7 @@ static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
case WM_CONTEXTMENU:
{
- SESSION_INFO *si = dat->si;
+ SESSION_INFO *si = dat->m_si;
if (si == nullptr)
break;
@@ -1479,7 +1479,7 @@ static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
break;
case WM_MOUSEMOVE:
- Chat_HoverMouse(dat->si, hwnd, lParam, M.GetByte("adv_TipperTooltip", 1) && ServiceExists("mToolTip/HideTip"));
+ Chat_HoverMouse(dat->m_si, hwnd, lParam, M.GetByte("adv_TipperTooltip", 1) && ServiceExists("mToolTip/HideTip"));
break;
}
return mir_callNextSubclass(hwnd, NicklistSubclassProc, msg, wParam, lParam);
@@ -1519,7 +1519,7 @@ static void __cdecl phase2(void * lParam)
// the actual group chat session window procedure.Handles the entire chat session window
// which is usually a (tabbed) child of a container class window.
-CChatRoomDlg::CChatRoomDlg(SESSION_INFO *_si)
+CChatRoomDlg::CChatRoomDlg(SESSION_INFO *si)
: CTabBaseDlg(IDD_CHANNEL),
m_btnOk(this, IDOK),
m_list(this, IDC_LIST),
@@ -1533,9 +1533,7 @@ CChatRoomDlg::CChatRoomDlg(SESSION_INFO *_si)
m_btnUnderline(this, IDC_UNDERLINE),
m_btnNickList(this, IDC_SHOWNICKLIST)
{
- m_bType = SESSIONTYPE_CHAT;
-
- si = _si;
+ m_si = si;
m_hContact = si->hContact;
m_szProto = GetContactProto(si->hContact);
@@ -1556,21 +1554,21 @@ CChatRoomDlg::CChatRoomDlg(SESSION_INFO *_si)
CThumbBase* CChatRoomDlg::CreateThumb(CProxyWindow *pProxy) const
{
- return new CThumbMUC(pProxy, si);
+ return new CThumbMUC(pProxy, m_si);
}
void CChatRoomDlg::ClearLog()
{
- SESSION_INFO *s = pci->SM_FindSession(si->ptszID, si->pszModule);
+ SESSION_INFO *s = pci->SM_FindSession(m_si->ptszID, m_si->pszModule);
if (s) {
m_log.SetText(L"");
pci->LM_RemoveAll(&s->pLog, &s->pLogEnd);
s->iEventCount = 0;
s->LastTime = 0;
- si->iEventCount = 0;
- si->LastTime = 0;
- si->pLog = s->pLog;
- si->pLogEnd = s->pLogEnd;
+ m_si->iEventCount = 0;
+ m_si->LastTime = 0;
+ m_si->pLog = s->pLog;
+ m_si->pLogEnd = s->pLogEnd;
PostMessage(m_hwnd, WM_MOUSEACTIVATE, 0, 0);
}
}
@@ -1583,8 +1581,8 @@ void CChatRoomDlg::OnInitDialog()
m_cache->updateNick();
m_cache->updateUIN();
- si->hWnd = m_hwnd;
- si->dat = this;
+ m_si->hWnd = m_hwnd;
+ m_si->dat = this;
m_bIsAutosizingInput = IsAutoSplitEnabled();
m_fLimitedUpdate = false;
m_iInputAreaHeight = -1;
@@ -1596,7 +1594,7 @@ void CChatRoomDlg::OnInitDialog()
CProxyWindow::add(this);
// Typing support for GCW_PRIVMESS sessions
- if (si->iType == GCW_PRIVMESS) {
+ if (m_si->iType == GCW_PRIVMESS) {
m_nTypeMode = PROTOTYPE_SELFTYPING_OFF;
SetTimer(m_hwnd, TIMERID_TYPE, 1000, nullptr);
}
@@ -1668,16 +1666,16 @@ void CChatRoomDlg::OnInitDialog()
void CChatRoomDlg::OnDestroy()
{
// Typing support for GCW_PRIVMESS sessions
- if (si->iType == GCW_PRIVMESS)
+ if (m_si->iType == GCW_PRIVMESS)
if (m_nTypeMode == PROTOTYPE_SELFTYPING_ON)
DM_NotifyTyping(PROTOTYPE_SELFTYPING_OFF);
- if (pcli->pfnGetEvent(si->hContact, 0))
- pcli->pfnRemoveEvent(si->hContact, GC_FAKE_EVENT);
- si->wState &= ~STATE_TALK;
- si->hWnd = nullptr;
- si->dat = nullptr;
- si = nullptr;
+ if (pcli->pfnGetEvent(m_si->hContact, 0))
+ pcli->pfnRemoveEvent(m_si->hContact, GC_FAKE_EVENT);
+ m_si->wState &= ~STATE_TALK;
+ m_si->hWnd = nullptr;
+ m_si->dat = nullptr;
+ m_si = nullptr;
TABSRMM_FireEvent(m_hContact, m_hwnd, MSG_WINDOW_EVT_CLOSING, 0);
@@ -1687,9 +1685,6 @@ void CChatRoomDlg::OnDestroy()
if (PluginConfig.g_hMenuTrayUnread)
DeleteMenu(PluginConfig.g_hMenuTrayUnread, (UINT_PTR)m_hContact, MF_BYCOMMAND);
- if (m_hSmileyIcon)
- DestroyIcon(m_hSmileyIcon);
-
if (m_hwndTip)
DestroyWindow(m_hwndTip);
@@ -1727,12 +1722,12 @@ void CChatRoomDlg::OnClick_OK(CCtrlButton*)
if (GetSendButtonState(m_hwnd) == PBS_DISABLED)
return;
- MODULEINFO *mi = pci->MM_FindModule(si->pszModule);
+ MODULEINFO *mi = pci->MM_FindModule(m_si->pszModule);
if (mi == nullptr)
return;
ptrA pszRtf(Message_GetFromStream(m_message.GetHwnd()));
- pci->SM_AddCommand(si->ptszID, si->pszModule, pszRtf);
+ pci->SM_AddCommand(m_si->ptszID, m_si->pszModule, pszRtf);
CMStringW ptszText(ptrW(mir_utf8decodeW(pszRtf)));
if (ptszText.IsEmpty())
@@ -1751,17 +1746,17 @@ void CChatRoomDlg::OnClick_OK(CCtrlButton*)
Utils::enableDlgControl(m_hwnd, IDOK, false);
// Typing support for GCW_PRIVMESS sessions
- if (si->iType == GCW_PRIVMESS)
+ if (m_si->iType == GCW_PRIVMESS)
if (m_nTypeMode == PROTOTYPE_SELFTYPING_ON)
DM_NotifyTyping(PROTOTYPE_SELFTYPING_OFF);
bool fSound = true;
- if (ptszText[0] == '/' || si->iType == GCW_SERVER)
+ if (ptszText[0] == '/' || m_si->iType == GCW_SERVER)
fSound = false;
- pci->DoEventHookAsync(m_hwnd, si->ptszID, si->pszModule, GC_USER_MESSAGE, nullptr, ptszText, 0);
+ pci->DoEventHookAsync(m_hwnd, m_si->ptszID, m_si->pszModule, GC_USER_MESSAGE, nullptr, ptszText, 0);
mi->idleTimeStamp = time(0);
mi->lastIdleCheck = 0;
- pci->SM_BroadcastMessage(si->pszModule, GC_UPDATESTATUSBAR, 0, 1, TRUE);
+ pci->SM_BroadcastMessage(m_si->pszModule, GC_UPDATESTATUSBAR, 0, 1, TRUE);
if (m_pContainer)
if (fSound && !nen_options.iNoSounds && !(m_pContainer->dwFlags & CNT_NOSOUND))
SkinPlaySound("ChatSent");
@@ -1774,22 +1769,22 @@ void CChatRoomDlg::OnClick_Filter(CCtrlButton *pButton)
if (!pButton->Enabled())
return;
- if (si->iLogFilterFlags == 0 && !si->bFilterEnabled) {
+ if (m_si->iLogFilterFlags == 0 && !m_si->bFilterEnabled) {
MessageBox(0, TranslateT("The filter cannot be enabled, because there are no event types selected either global or for this chat room"), TranslateT("Event filter error"), MB_OK);
- si->bFilterEnabled = false;
+ m_si->bFilterEnabled = false;
}
- else si->bFilterEnabled = !si->bFilterEnabled;
+ else m_si->bFilterEnabled = !m_si->bFilterEnabled;
m_btnFilter.SendMsg(BUTTONSETOVERLAYICON,
- (LPARAM)(si->bFilterEnabled ? PluginConfig.g_iconOverlayEnabled : PluginConfig.g_iconOverlayDisabled), 0);
+ (LPARAM)(m_si->bFilterEnabled ? PluginConfig.g_iconOverlayEnabled : PluginConfig.g_iconOverlayDisabled), 0);
- if (si->bFilterEnabled && M.GetByte(CHAT_MODULE, "RightClickFilter", 0) == 0) {
+ if (m_si->bFilterEnabled && M.GetByte(CHAT_MODULE, "RightClickFilter", 0) == 0) {
SendMessage(m_hwnd, GC_SHOWFILTERMENU, 0, 0);
return;
}
SendMessage(m_hwnd, GC_REDRAWLOG, 0, 0);
SendMessage(m_hwnd, GC_UPDATETITLE, 0, 0);
- db_set_b(si->hContact, CHAT_MODULE, "FilterEnabled", (BYTE)si->bFilterEnabled);
+ db_set_b(m_si->hContact, CHAT_MODULE, "FilterEnabled", (BYTE)m_si->bFilterEnabled);
}
void CChatRoomDlg::OnClick_History(CCtrlButton *pButton)
@@ -1797,25 +1792,25 @@ void CChatRoomDlg::OnClick_History(CCtrlButton *pButton)
if (!pButton->Enabled())
return;
- MODULEINFO *pInfo = pci->MM_FindModule(si->pszModule);
- if (ServiceExists("MSP/HTMLlog/ViewLog") && strstr(si->pszModule, "IRC")) {
+ MODULEINFO *pInfo = pci->MM_FindModule(m_si->pszModule);
+ if (ServiceExists("MSP/HTMLlog/ViewLog") && strstr(m_si->pszModule, "IRC")) {
char szName[MAX_PATH];
- WideCharToMultiByte(CP_ACP, 0, si->ptszName, -1, szName, MAX_PATH, 0, 0);
+ WideCharToMultiByte(CP_ACP, 0, m_si->ptszName, -1, szName, MAX_PATH, 0, 0);
szName[MAX_PATH - 1] = 0;
- CallService("MSP/HTMLlog/ViewLog", (WPARAM)si->pszModule, (LPARAM)szName);
+ CallService("MSP/HTMLlog/ViewLog", (WPARAM)m_si->pszModule, (LPARAM)szName);
}
else if (pInfo)
- ShellExecute(m_hwnd, nullptr, pci->GetChatLogsFilename(si, 0), nullptr, nullptr, SW_SHOW);
+ ShellExecute(m_hwnd, nullptr, pci->GetChatLogsFilename(m_si, 0), nullptr, nullptr, SW_SHOW);
}
void CChatRoomDlg::OnClick_ShowNickList(CCtrlButton *pButton)
{
if (!pButton->Enabled())
return;
- if (si->iType == GCW_SERVER)
+ if (m_si->iType == GCW_SERVER)
return;
- si->bNicklistEnabled = !si->bNicklistEnabled;
+ m_si->bNicklistEnabled = !m_si->bNicklistEnabled;
SendMessage(m_hwnd, WM_SIZE, 0, 0);
if (CSkin::m_skinEnabled)
@@ -1826,7 +1821,7 @@ void CChatRoomDlg::OnClick_ShowNickList(CCtrlButton *pButton)
void CChatRoomDlg::OnClick_ChanMgr(CCtrlButton *pButton)
{
if (pButton->Enabled())
- pci->DoEventHookAsync(m_hwnd, si->ptszID, si->pszModule, GC_USER_CHANMGR, nullptr, nullptr, 0);
+ pci->DoEventHookAsync(m_hwnd, m_si->ptszID, m_si->pszModule, GC_USER_CHANMGR, nullptr, nullptr, 0);
}
void CChatRoomDlg::OnClick_BIU(CCtrlButton *pButton)
@@ -1861,9 +1856,9 @@ void CChatRoomDlg::OnClick_Color(CCtrlButton *pButton)
if (IsDlgButtonChecked(m_hwnd, IDC_COLOR)) {
if (M.GetByte(CHAT_MODULE, "RightClickFilter", 0) == 0)
SendMessage(m_hwnd, GC_SHOWCOLORCHOOSER, 0, IDC_COLOR);
- else if (si->bFGSet) {
+ else if (m_si->bFGSet) {
cf.dwMask = CFM_COLOR;
- cf.crTextColor = pci->MM_FindModule(si->pszModule)->crColors[si->iFG];
+ cf.crTextColor = pci->MM_FindModule(m_si->pszModule)->crColors[m_si->iFG];
m_message.SendMsg(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
}
}
@@ -1888,9 +1883,9 @@ void CChatRoomDlg::OnClick_BkColor(CCtrlButton *pButton)
if (IsDlgButtonChecked(m_hwnd, IDC_BKGCOLOR)) {
if (M.GetByte(CHAT_MODULE, "RightClickFilter", 0) == 0)
SendMessage(m_hwnd, GC_SHOWCOLORCHOOSER, 0, IDC_BKGCOLOR);
- else if (si->bBGSet) {
+ else if (m_si->bBGSet) {
cf.dwMask = CFM_BACKCOLOR;
- cf.crBackColor = pci->MM_FindModule(si->pszModule)->crColors[si->iBG];
+ cf.crBackColor = pci->MM_FindModule(m_si->pszModule)->crColors[m_si->iBG];
m_message.SendMsg(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
}
}
@@ -1911,7 +1906,7 @@ void CChatRoomDlg::OnChange_Message(CCtrlEdit*)
m_btnOk.Enable(GetRichTextLength(m_message.GetHwnd()) != 0);
// Typing support for GCW_PRIVMESS sessions
- if (si->iType == GCW_PRIVMESS) {
+ if (m_si->iType == GCW_PRIVMESS) {
if (!(GetKeyState(VK_CONTROL) & 0x8000)) {
m_nLastTyping = GetTickCount();
if (GetWindowTextLength(m_message.GetHwnd())) {
@@ -1934,7 +1929,7 @@ void CChatRoomDlg::OnDblClick_List(CCtrlListBox*)
ScreenToClient(m_list.GetHwnd(), &hti.pt);
int item = LOWORD(m_list.SendMsg(LB_ITEMFROMPOINT, 0, MAKELPARAM(hti.pt.x, hti.pt.y)));
- USERINFO *ui = pci->UM_FindUserFromIndex(si->pUsers, item);
+ USERINFO *ui = pci->UM_FindUserFromIndex(m_si->pUsers, item);
if (ui == nullptr)
return;
@@ -1950,12 +1945,12 @@ void CChatRoomDlg::OnDblClick_List(CCtrlListBox*)
PostMessage(m_hwnd, WM_MOUSEACTIVATE, 0, 0);
SetFocus(m_message.GetHwnd());
}
- else pci->DoEventHookAsync(m_hwnd, si->ptszID, si->pszModule, GC_USER_PRIVMESS, ui, nullptr, 0);
+ else pci->DoEventHookAsync(m_hwnd, m_si->ptszID, m_si->pszModule, GC_USER_PRIVMESS, ui, nullptr, 0);
}
INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
- if (si == nullptr && (uMsg == WM_ACTIVATE || uMsg == WM_SETFOCUS))
+ if (m_si == nullptr && (uMsg == WM_ACTIVATE || uMsg == WM_SETFOCUS))
return 0;
POINT pt, tmp, cur;
@@ -1980,14 +1975,14 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
return 0;
case GC_SETWNDPROPS:
- pInfo = si ? pci->MM_FindModule(si->pszModule) : nullptr;
+ pInfo = m_si ? pci->MM_FindModule(m_si->pszModule) : nullptr;
if (pInfo) {
m_btnBold.Enable(pInfo->bBold);
m_btnItalic.Enable(pInfo->bItalics);
m_btnUnderline.Enable(pInfo->bUnderline);
m_btnColor.Enable(pInfo->bColor);
m_btnBkColor.Enable(pInfo->bBkgColor);
- if (si->iType == GCW_CHATROOM)
+ if (m_si->iType == GCW_CHATROOM)
m_btnChannelMgr.Enable(pInfo->bChanMgr);
}
m_log.SendMsg(EM_SETBKGNDCOLOR, 0, M.GetDword(FONTMODULE, SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR));
@@ -1998,7 +1993,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
m_list.SetItemHeight(0, g_Settings.iNickListFontHeight);
InvalidateRect(m_list.GetHwnd(), nullptr, TRUE);
- m_btnFilter.SendMsg(BUTTONSETOVERLAYICON, (LPARAM)(si->bFilterEnabled ? PluginConfig.g_iconOverlayEnabled : PluginConfig.g_iconOverlayDisabled), 0);
+ m_btnFilter.SendMsg(BUTTONSETOVERLAYICON, (LPARAM)(m_si->bFilterEnabled ? PluginConfig.g_iconOverlayEnabled : PluginConfig.g_iconOverlayDisabled), 0);
SendMessage(m_hwnd, WM_SIZE, 0, 0);
SendMessage(m_hwnd, GC_REDRAWLOG2, 0, 0);
break;
@@ -2006,7 +2001,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
case DM_UPDATETITLE:
case GC_UPDATETITLE:
if (!m_bWasDeleted) {
- m_wStatus = si->wStatus;
+ m_wStatus = m_si->wStatus;
const wchar_t *szNick = m_cache->getNick();
if (mir_wstrlen(szNick) > 0) {
@@ -2019,19 +2014,19 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
wchar_t szTemp[100];
HICON hIcon = 0;
- switch (si->iType) {
+ switch (m_si->iType) {
case GCW_CHATROOM:
- hIcon = Skin_LoadProtoIcon(si->pszModule, (m_wStatus <= ID_STATUS_OFFLINE) ? ID_STATUS_OFFLINE : m_wStatus);
+ hIcon = Skin_LoadProtoIcon(m_si->pszModule, (m_wStatus <= ID_STATUS_OFFLINE) ? ID_STATUS_OFFLINE : m_wStatus);
mir_snwprintf(szTemp,
- (si->nUsersInNicklist == 1) ? TranslateT("%s: chat room (%u user%s)") : TranslateT("%s: chat room (%u users%s)"),
- szNick, si->nUsersInNicklist, si->bFilterEnabled ? TranslateT(", event filter active") : L"");
+ (m_si->nUsersInNicklist == 1) ? TranslateT("%s: chat room (%u user%s)") : TranslateT("%s: chat room (%u users%s)"),
+ szNick, m_si->nUsersInNicklist, m_si->bFilterEnabled ? TranslateT(", event filter active") : L"");
break;
case GCW_PRIVMESS:
- hIcon = Skin_LoadProtoIcon(si->pszModule, (m_wStatus <= ID_STATUS_OFFLINE) ? ID_STATUS_OFFLINE : m_wStatus);
- if (si->nUsersInNicklist == 1)
+ hIcon = Skin_LoadProtoIcon(m_si->pszModule, (m_wStatus <= ID_STATUS_OFFLINE) ? ID_STATUS_OFFLINE : m_wStatus);
+ if (m_si->nUsersInNicklist == 1)
mir_snwprintf(szTemp, TranslateT("%s: message session"), szNick);
else
- mir_snwprintf(szTemp, TranslateT("%s: message session (%u users)"), szNick, si->nUsersInNicklist);
+ mir_snwprintf(szTemp, TranslateT("%s: message session (%u users)"), szNick, m_si->nUsersInNicklist);
break;
case GCW_SERVER:
mir_snwprintf(szTemp, L"%s: Server", szNick);
@@ -2071,11 +2066,11 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
if (m_pContainer->hwndActive != m_hwnd || m_pContainer->hwndStatus == 0 || CMimAPI::m_shutDown || m_wszStatusBar[0])
break;
- if (si->pszModule != nullptr) {
+ if (m_si->pszModule != nullptr) {
wchar_t szFinalStatusBarText[512];
//Mad: strange rare crash here...
- MODULEINFO *mi = pci->MM_FindModule(si->pszModule);
+ MODULEINFO *mi = pci->MM_FindModule(m_si->pszModule);
if (!mi)
break;
@@ -2106,8 +2101,8 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
mir_snwprintf(szFinalStatusBarText, TranslateT("%s on %s%s"), m_wszMyNickname, mi->ptszModDispName, mi->tszIdleMsg);
}
else {
- if (si->ptszStatusbarText)
- mir_snwprintf(szFinalStatusBarText, L"%s %s", mi->ptszModDispName, si->ptszStatusbarText);
+ if (m_si->ptszStatusbarText)
+ mir_snwprintf(szFinalStatusBarText, L"%s %s", mi->ptszModDispName, m_si->ptszStatusbarText);
else
wcsncpy_s(szFinalStatusBarText, mi->ptszModDispName, _TRUNCATE);
}
@@ -2160,30 +2155,30 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
break;
case GC_REDRAWLOG:
- si->LastTime = 0;
- if (si->pLog) {
- LOGINFO * pLog = si->pLog;
- if (si->iEventCount > 60) {
+ m_si->LastTime = 0;
+ if (m_si->pLog) {
+ LOGINFO * pLog = m_si->pLog;
+ if (m_si->iEventCount > 60) {
int index = 0;
while (index < 59) {
if (pLog->next == nullptr)
break;
pLog = pLog->next;
- if ((si->iType != GCW_CHATROOM && si->iType != GCW_PRIVMESS) || !si->bFilterEnabled || (si->iLogFilterFlags&pLog->iType) != 0)
+ if ((m_si->iType != GCW_CHATROOM && m_si->iType != GCW_PRIVMESS) || !m_si->bFilterEnabled || (m_si->iLogFilterFlags&pLog->iType) != 0)
index++;
}
- StreamInEvents(pLog, si, TRUE);
- mir_forkthread(phase2, si);
+ StreamInEvents(pLog, m_si, TRUE);
+ mir_forkthread(phase2, m_si);
}
- else StreamInEvents(si->pLogEnd, si, TRUE);
+ else StreamInEvents(m_si->pLogEnd, m_si, TRUE);
}
else SendMessage(m_hwnd, GC_CONTROL_MSG, WINDOW_CLEARLOG, 0);
break;
case GC_REDRAWLOG2:
- si->LastTime = 0;
- if (si->pLog)
- StreamInEvents(si->pLogEnd, si, TRUE);
+ m_si->LastTime = 0;
+ if (m_si->pLog)
+ StreamInEvents(m_si->pLogEnd, m_si, TRUE);
break;
case GC_ADDLOG:
@@ -2201,15 +2196,15 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
}
}
- if (si->pLogEnd)
- StreamInEvents(si->pLog, si, FALSE);
+ if (m_si->pLogEnd)
+ StreamInEvents(m_si->pLog, m_si, FALSE);
else
SendMessage(m_hwnd, GC_CONTROL_MSG, WINDOW_CLEARLOG, 0);
break;
case DM_TYPING:
// Typing support for GCW_PRIVMESS sessions
- if (si->iType == GCW_PRIVMESS) {
+ if (m_si->iType == GCW_PRIVMESS) {
int preTyping = m_nTypeSecs != 0;
m_nTypeSecs = (int)lParam > 0 ? (int)lParam : 0;
@@ -2254,7 +2249,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
int x_offset = 0;
int index = dis->itemID;
- USERINFO *ui = pci->UM_FindUserFromIndex(si->pUsers, index);
+ USERINFO *ui = pci->UM_FindUserFromIndex(m_si->pUsers, index);
if (ui == nullptr)
return TRUE;
@@ -2263,7 +2258,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
height++;
int offset = (height == 10) ? 0 : height / 2;
- HICON hIcon = pci->SM_GetStatusIcon(si, ui);
+ HICON hIcon = pci->SM_GetStatusIcon(m_si, ui);
HFONT hFont = g_Settings.UserListFonts[ui->iStatusEx];
HFONT hOldFont = (HFONT)SelectObject(dis->hDC, hFont);
SetBkMode(dis->hDC, TRANSPARENT);
@@ -2290,7 +2285,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
x_offset = 2;
if (g_Settings.bShowContactStatus && g_Settings.bContactStatusFirst && ui->ContactStatus) {
- HICON icon = Skin_LoadProtoIcon(si->pszModule, ui->ContactStatus);
+ HICON icon = Skin_LoadProtoIcon(m_si->pszModule, ui->ContactStatus);
DrawIconEx(dis->hDC, x_offset, dis->rcItem.top + offset - 8, icon, 16, 16, 0, nullptr, DI_NORMAL);
IcoLib_ReleaseIcon(icon);
x_offset += 18;
@@ -2314,7 +2309,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
}
if (g_Settings.bShowContactStatus && !g_Settings.bContactStatusFirst && ui->ContactStatus) {
- HICON icon = Skin_LoadProtoIcon(si->pszModule, ui->ContactStatus);
+ HICON icon = Skin_LoadProtoIcon(m_si->pszModule, ui->ContactStatus);
DrawIconEx(dis->hDC, x_offset, dis->rcItem.top + offset - 8, icon, 16, 16, 0, nullptr, DI_NORMAL);
IcoLib_ReleaseIcon(icon);
x_offset += 18;
@@ -2351,7 +2346,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
case GC_UPDATENICKLIST:
{
int i = m_list.SendMsg(LB_GETTOPINDEX, 0, 0);
- m_list.SendMsg(LB_SETCOUNT, si->nUsersInNicklist, 0);
+ m_list.SendMsg(LB_SETCOUNT, m_si->nUsersInNicklist, 0);
m_list.SendMsg(LB_SETTOPINDEX, i, 0);
SendMessage(m_hwnd, GC_UPDATETITLE, 0, 0);
}
@@ -2361,7 +2356,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
switch (wParam) {
case SESSION_OFFLINE:
SendMessage(m_hwnd, GC_UPDATESTATUSBAR, 0, 0);
- SendMessage(si->hWnd, GC_UPDATENICKLIST, 0, 0);
+ SendMessage(m_si->hWnd, GC_UPDATENICKLIST, 0, 0);
return TRUE;
case SESSION_ONLINE:
@@ -2377,12 +2372,12 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
return TRUE;
case SESSION_TERMINATE:
- if (pcli->pfnGetEvent(si->hContact, 0))
- pcli->pfnRemoveEvent(si->hContact, GC_FAKE_EVENT);
+ if (pcli->pfnGetEvent(m_si->hContact, 0))
+ pcli->pfnRemoveEvent(m_si->hContact, GC_FAKE_EVENT);
- si->wState &= ~STATE_TALK;
+ m_si->wState &= ~STATE_TALK;
m_bWasDeleted = true;
- db_set_w(si->hContact, si->pszModule, "ApparentMode", 0);
+ db_set_w(m_si->hContact, m_si->pszModule, "ApparentMode", 0);
SendMessage(m_hwnd, GC_CLOSEWINDOW, 0, lParam == 2 ? lParam : 1);
return TRUE;
@@ -2477,12 +2472,12 @@ LABEL_SHOWWINDOW:
break;
case GC_CHANGEFILTERFLAG:
- if (si->iLogFilterFlags == 0 && si->bFilterEnabled)
+ if (m_si->iLogFilterFlags == 0 && m_si->bFilterEnabled)
SendMessage(m_hwnd, WM_COMMAND, IDC_FILTER, 0);
break;
case GC_SHOWFILTERMENU:
- m_hwndFilter = CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_FILTER), m_pContainer->hwnd, FilterWndProc, (LPARAM)si);
+ m_hwndFilter = CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_FILTER), m_pContainer->hwnd, FilterWndProc, (LPARAM)m_si);
TranslateDialogDefault(m_hwndFilter);
RECT rcFilter;
@@ -2496,7 +2491,7 @@ LABEL_SHOWWINDOW:
break;
case GC_SHOWCOLORCHOOSER:
- pci->ColorChooser(si, lParam == IDC_COLOR, m_hwnd, m_message.GetHwnd(), GetDlgItem(m_hwnd, lParam));
+ pci->ColorChooser(m_si, lParam == IDC_COLOR, m_hwnd, m_message.GetHwnd(), GetDlgItem(m_hwnd, lParam));
break;
case GC_SCROLLTOBOTTOM:
@@ -2509,7 +2504,7 @@ LABEL_SHOWWINDOW:
FlashTab(true);
// Typing support for GCW_PRIVMESS sessions
- if (si->iType == GCW_PRIVMESS && wParam == TIMERID_TYPE)
+ if (m_si->iType == GCW_PRIVMESS && wParam == TIMERID_TYPE)
DM_Typing(false);
break;
@@ -2543,7 +2538,7 @@ LABEL_SHOWWINDOW:
if (msg == WM_SYSKEYUP) {
if (wp == VK_MENU)
- if (!m_fkeyProcessed && !(GetKeyState(VK_CONTROL) & 0x8000) && !(GetKeyState(VK_SHIFT) & 0x8000) && !(lp & (1 << 24)))
+ if (!m_bkeyProcessed && !(GetKeyState(VK_CONTROL) & 0x8000) && !(GetKeyState(VK_SHIFT) & 0x8000) && !(lp & (1 << 24)))
m_pContainer->MenuBar->autoShow();
return _dlgReturn(m_hwnd, 0);
@@ -2570,13 +2565,13 @@ LABEL_SHOWWINDOW:
if ((msg == WM_KEYDOWN || msg == WM_SYSKEYDOWN) && !(GetKeyState(VK_RMENU) & 0x8000)) {
if (DM_GenericHotkeysCheck(&message)) {
- m_fkeyProcessed = true;
+ m_bkeyProcessed = true;
return _dlgReturn(m_hwnd, 1);
}
LRESULT mim_hotkey_check = CallService(MS_HOTKEY_CHECK, (WPARAM)&message, (LPARAM)(TABSRMM_HK_SECTION_GC));
if (mim_hotkey_check)
- m_fkeyProcessed = true;
+ m_bkeyProcessed = true;
switch (mim_hotkey_check) {
case TABSRMM_HK_CHANNELMGR:
@@ -2590,8 +2585,8 @@ LABEL_SHOWWINDOW:
OnClick_ShowNickList(&m_btnNickList);
return _dlgReturn(m_hwnd, 1);
case TABSRMM_HK_MUC_SHOWSERVER:
- if (si->iType != GCW_SERVER)
- pci->DoEventHookAsync(m_hwnd, si->ptszID, si->pszModule, GC_USER_MESSAGE, nullptr, L"/servershow", 0);
+ if (m_si->iType != GCW_SERVER)
+ pci->DoEventHookAsync(m_hwnd, m_si->ptszID, m_si->pszModule, GC_USER_MESSAGE, nullptr, L"/servershow", 0);
return _dlgReturn(m_hwnd, 1);
}
}
@@ -2650,7 +2645,7 @@ LABEL_SHOWWINDOW:
}
HMENU hMenu = 0;
- UINT uID = CreateGCMenu(m_hwnd, &hMenu, 1, pt, si, nullptr, pszWord);
+ UINT uID = CreateGCMenu(m_hwnd, &hMenu, 1, pt, m_si, nullptr, pszWord);
switch (uID) {
case 0:
PostMessage(m_hwnd, WM_MOUSEACTIVATE, 0, 0);
@@ -2684,7 +2679,7 @@ LABEL_SHOWWINDOW:
default:
PostMessage(m_hwnd, WM_MOUSEACTIVATE, 0, 0);
- pci->DoEventHookAsync(m_hwnd, si->ptszID, si->pszModule, GC_USER_LOGMENU, nullptr, nullptr, (LPARAM)uID);
+ pci->DoEventHookAsync(m_hwnd, m_si->ptszID, m_si->pszModule, GC_USER_LOGMENU, nullptr, nullptr, (LPARAM)uID);
break;
}
@@ -2725,7 +2720,7 @@ LABEL_SHOWWINDOW:
if (msg == WM_RBUTTONDOWN) {
HMENU hMenu = 0;
USERINFO uiNew;
- for (USERINFO *ui = si->pUsers; ui; ui = ui->next) {
+ for (USERINFO *ui = m_si->pUsers; ui; ui = ui->next) {
if (mir_wstrcmp(ui->pszNick, tr.lpstrText))
continue;
@@ -2733,17 +2728,17 @@ LABEL_SHOWWINDOW:
pt.y = (short)HIWORD(((ENLINK*)lParam)->lParam);
ClientToScreen(((NMHDR*)lParam)->hwndFrom, &pt);
memcpy(&uiNew, ui, sizeof(USERINFO));
- UINT uID = CreateGCMenu(m_hwnd, &hMenu, 0, pt, si, uiNew.pszUID, uiNew.pszNick);
+ UINT uID = CreateGCMenu(m_hwnd, &hMenu, 0, pt, m_si, uiNew.pszUID, uiNew.pszNick);
switch (uID) {
case 0:
break;
case ID_MESS:
- pci->DoEventHookAsync(m_hwnd, si->ptszID, si->pszModule, GC_USER_PRIVMESS, ui, nullptr, 0);
+ pci->DoEventHookAsync(m_hwnd, m_si->ptszID, m_si->pszModule, GC_USER_PRIVMESS, ui, nullptr, 0);
break;
default:
- pci->DoEventHookAsync(m_hwnd, si->ptszID, si->pszModule, GC_USER_NICKLISTMENU, ui, nullptr, (LPARAM)uID);
+ pci->DoEventHookAsync(m_hwnd, m_si->ptszID, m_si->pszModule, GC_USER_NICKLISTMENU, ui, nullptr, (LPARAM)uID);
break;
}
DestroyGCMenu(&hMenu, 1);
@@ -2862,7 +2857,7 @@ LABEL_SHOWWINDOW:
case IDC_SELFTYPING:
// Typing support for GCW_PRIVMESS sessions
- if (si->iType == GCW_PRIVMESS) {
+ if (m_si->iType == GCW_PRIVMESS) {
if (m_hContact) {
int iCurrentTypingMode = db_get_b(m_hContact, SRMSGMOD, SRMSGSET_TYPING, M.GetByte(SRMSGMOD, SRMSGSET_TYPINGNEW, SRMSGDEFSET_TYPINGNEW));
diff --git a/plugins/TabSRMM/src/contactcache.cpp b/plugins/TabSRMM/src/contactcache.cpp
index 34ed805db0..e2806b01ee 100644
--- a/plugins/TabSRMM/src/contactcache.cpp
+++ b/plugins/TabSRMM/src/contactcache.cpp
@@ -527,7 +527,7 @@ HICON CContactCache::getIcon(int &iSize) const
if (m_dat->m_bCanFlashTab)
return m_dat->m_iFlashIcon;
- if (m_dat->si && m_dat->m_iFlashIcon) {
+ if (m_dat->isChat() && m_dat->m_iFlashIcon) {
int sizeX, sizeY;
Utils::getIconSize(m_dat->m_iFlashIcon, sizeX, sizeY);
iSize = sizeX;
diff --git a/plugins/TabSRMM/src/container.cpp b/plugins/TabSRMM/src/container.cpp
index 9c825c1ad4..3503354b83 100644
--- a/plugins/TabSRMM/src/container.cpp
+++ b/plugins/TabSRMM/src/container.cpp
@@ -60,7 +60,7 @@ void TSAPI SetAeroMargins(TContainerData *pContainer)
return;
RECT rcWnd;
- if (dat->m_bType == SESSIONTYPE_IM) {
+ if (!dat->isChat()) {
if (dat->m_pPanel.isActive())
GetWindowRect(GetDlgItem(dat->GetHwnd(), IDC_LOG), &rcWnd);
else
@@ -872,13 +872,10 @@ panel_found:
db_unset(dat->m_hContact, SRMSGMOD_T, "tabindex");
break;
case ID_TABMENU_LEAVECHATROOM:
- if (dat && dat->m_bType == SESSIONTYPE_CHAT) {
- SESSION_INFO *si = dat->si;
- if (si && dat->m_hContact) {
- char *szProto = GetContactProto(dat->m_hContact);
- if (szProto)
- CallProtoService(szProto, PS_LEAVECHAT, dat->m_hContact, 0);
- }
+ if (dat && dat->isChat() && dat->m_hContact) {
+ char *szProto = GetContactProto(dat->m_hContact);
+ if (szProto)
+ CallProtoService(szProto, PS_LEAVECHAT, dat->m_hContact, 0);
}
break;
case ID_TABMENU_ATTACHTOCONTAINER:
@@ -1239,7 +1236,7 @@ panel_found:
}
dat = (CTabBaseDlg*)GetWindowLongPtr(pContainer->hwndActive, GWLP_USERDATA);
- if (dat && dat->m_bType == SESSIONTYPE_IM) {
+ if (dat && !dat->isChat()) {
if (dat->m_idle && pContainer->hwndActive && IsWindow(pContainer->hwndActive))
dat->m_pPanel.Invalidate(TRUE);
}
@@ -2362,7 +2359,7 @@ void TSAPI ReflashContainer(TContainerData *pContainer)
// broadcasts a message to all child windows (tabs/sessions)
-void TSAPI BroadCastContainer(const TContainerData *pContainer, UINT message, WPARAM wParam, LPARAM lParam, BYTE bType)
+void TSAPI BroadCastContainer(const TContainerData *pContainer, UINT message, WPARAM wParam, LPARAM lParam)
{
if (pContainer == nullptr)
return;
@@ -2374,15 +2371,8 @@ void TSAPI BroadCastContainer(const TContainerData *pContainer, UINT message, WP
int nCount = TabCtrl_GetItemCount(hwndTab);
for (int i = 0; i < nCount; i++) {
TabCtrl_GetItem(hwndTab, i, &item);
- if (IsWindow((HWND)item.lParam)) {
- if (bType == SESSIONTYPE_ANY)
- SendMessage((HWND)item.lParam, message, wParam, lParam);
- else {
- CTabBaseDlg *dat = (CTabBaseDlg*)GetWindowLongPtr((HWND)item.lParam, GWLP_USERDATA);
- if (dat && dat->m_bType == bType)
- SendMessage((HWND)item.lParam, message, wParam, lParam);
- }
- }
+ if (IsWindow((HWND)item.lParam))
+ SendMessage((HWND)item.lParam, message, wParam, lParam);
}
}
diff --git a/plugins/TabSRMM/src/controls.cpp b/plugins/TabSRMM/src/controls.cpp
index 7b65b63047..b28bfd6f17 100644
--- a/plugins/TabSRMM/src/controls.cpp
+++ b/plugins/TabSRMM/src/controls.cpp
@@ -479,13 +479,13 @@ void CMenuBar::configureMenu() const
{
CSrmmWindow *dat = (CSrmmWindow*)::GetWindowLongPtr(m_pContainer->hwndActive, GWLP_USERDATA);
if (dat) {
- bool fChat = (dat->m_bType == SESSIONTYPE_CHAT);
+ bool fChat = (dat->isChat());
::SendMessage(m_hwndToolbar, TB_SETSTATE, 103, fChat ? TBSTATE_HIDDEN : TBSTATE_ENABLED);
::SendMessage(m_hwndToolbar, TB_SETSTATE, 104, fChat ? TBSTATE_ENABLED : TBSTATE_HIDDEN);
::SendMessage(m_hwndToolbar, TB_SETSTATE, 105, fChat ? TBSTATE_HIDDEN : TBSTATE_ENABLED);
- if (dat->m_bType == SESSIONTYPE_IM)
+ if (!dat->isChat())
::EnableWindow(GetDlgItem(dat->GetHwnd(), IDC_TIME), TRUE);
}
}
@@ -670,10 +670,10 @@ static int tooltip_active = FALSE;
static POINT ptMouse = { 0 };
RECT rcLastStatusBarClick; // remembers click (down event) point for status bar clicks
-LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
+LONG_PTR CALLBACK CTabBaseDlg::StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
TContainerData *pContainer = (TContainerData*)GetWindowLongPtr(GetParent(hWnd), GWLP_USERDATA);
- CSrmmWindow *dat = nullptr;
+ CTabBaseDlg *dat = nullptr;
POINT pt;
if (OldStatusBarproc == 0) {
@@ -732,7 +732,7 @@ LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
HANDLE hTheme = bAero ? OpenThemeData(hWnd, L"ButtonStyle") : 0;
if (pContainer)
- dat = (CSrmmWindow*)GetWindowLongPtr(pContainer->hwndActive, GWLP_USERDATA);
+ dat = (CTabBaseDlg*)GetWindowLongPtr(pContainer->hwndActive, GWLP_USERDATA);
RECT rcClient;
GetClientRect(hWnd, &rcClient);
@@ -786,7 +786,7 @@ LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
// draw visual message length indicator in the leftmost status bar field
if (PluginConfig.m_visualMessageSizeIndicator && i == 0) {
- if (dat && dat->m_bType == SESSIONTYPE_IM) {
+ if (dat && !dat->isChat()) {
HBRUSH br = CreateSolidBrush(RGB(0, 255, 0));
HBRUSH brOld = (HBRUSH)SelectObject(hdcMem, br);
@@ -885,7 +885,7 @@ LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
// needed when an icon is added to or removed from the icon area
{
int list_icons = 0;
- dat = (CSrmmWindow*)lParam;
+ dat = (CTabBaseDlg*)lParam;
if (dat)
while (Srmm_GetNthIcon(dat->m_hContact, list_icons))
list_icons++;
@@ -948,7 +948,7 @@ LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
GetCursorPos(&pt);
if (pt.x != ptMouse.x || pt.y != ptMouse.y)
break;
- dat = (CSrmmWindow*)GetWindowLongPtr(pContainer->hwndActive, GWLP_USERDATA);
+ dat = (CTabBaseDlg*)GetWindowLongPtr(pContainer->hwndActive, GWLP_USERDATA);
if (dat != nullptr) {
RECT rc;
SIZE size;
@@ -969,7 +969,7 @@ LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
mir_snwprintf(wBuf, TranslateT("Sounds are %s. Click to toggle status, hold SHIFT and click to set for all open containers"),
pContainer->dwFlags & CNT_NOSOUND ? TranslateT("disabled") : TranslateT("enabled"));
- else if (sid->dwId == MSG_ICON_UTN && (dat->m_bType == SESSIONTYPE_IM || dat->si->iType == GCW_PRIVMESS)) {
+ else if (sid->dwId == MSG_ICON_UTN && (!dat->isChat() || dat->m_si->iType == GCW_PRIVMESS)) {
int mtnStatus = db_get_b(dat->m_hContact, SRMSGMOD, SRMSGSET_TYPING, M.GetByte(SRMSGMOD, SRMSGSET_TYPINGNEW, SRMSGDEFSET_TYPINGNEW));
mir_snwprintf(wBuf, TranslateT("Sending typing notifications is %s."),
mtnStatus ? TranslateT("enabled") : TranslateT("disabled"));
@@ -992,7 +992,7 @@ LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
int iQueued = db_get_dw(dat->m_hContact, "SendLater", "count", 0);
gtxl.codepage = CP_UTF8;
gtxl.flags = GTL_DEFAULT | GTL_PRECISE | GTL_NUMBYTES;
- iLength = SendDlgItemMessage(dat->GetHwnd(), dat->m_bType == SESSIONTYPE_IM ? IDC_MESSAGE : IDC_MESSAGE, EM_GETTEXTLENGTHEX, (WPARAM)&gtxl, 0);
+ iLength = SendDlgItemMessage(dat->GetHwnd(), IDC_MESSAGE, EM_GETTEXTLENGTHEX, (WPARAM)&gtxl, 0);
tooltip_active = TRUE;
const wchar_t *szFormat = TranslateT("There are %d pending send jobs. Message length: %d bytes, message length limit: %d bytes\n\n%d messages are queued for later delivery");
@@ -1009,7 +1009,7 @@ LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
ReleaseDC(dat->m_pContainer->hwndStatus, hdc);
if (PtInRect(&rc, pt) && ((rc.right - rc.left) < size.cx)) {
- if (dat->m_bType == SESSIONTYPE_CHAT) {
+ if (dat->isChat()) {
ptrW tszTopic(db_get_wsa(dat->m_hContact, dat->m_szProto, "Topic"));
if (tszTopic != nullptr) {
tooltip_active = TRUE;
diff --git a/plugins/TabSRMM/src/controls.h b/plugins/TabSRMM/src/controls.h
index b06c231207..b1f7e1afa0 100644
--- a/plugins/TabSRMM/src/controls.h
+++ b/plugins/TabSRMM/src/controls.h
@@ -29,8 +29,6 @@
#ifndef __CONTROLS_H
#define __CONTROLS_H
-extern LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
-
class CMenuBar
{
public:
diff --git a/plugins/TabSRMM/src/functions.h b/plugins/TabSRMM/src/functions.h
index 7d2c820c2f..2071898080 100644
--- a/plugins/TabSRMM/src/functions.h
+++ b/plugins/TabSRMM/src/functions.h
@@ -94,7 +94,7 @@ int TSAPI GetContainerNameForContact(MCONTACT hContact, wchar_t *szName, int i
HMENU TSAPI BuildContainerMenu();
void TSAPI PreTranslateDates();
void TSAPI ApplyContainerSetting(TContainerData *pContainer, DWORD flags, UINT mode, bool fForceResize);
-void TSAPI BroadCastContainer(const TContainerData *pContainer, UINT message, WPARAM wParam, LPARAM lParam, BYTE iType = 0);
+void TSAPI BroadCastContainer(const TContainerData *pContainer, UINT message, WPARAM wParam, LPARAM lParam);
void TSAPI GetDefaultContainerTitleFormat();
void TSAPI SetAeroMargins(TContainerData *pContainer);
int TABSRMM_FireEvent(MCONTACT hContact, HWND hwnd, unsigned int type, unsigned int subType);
diff --git a/plugins/TabSRMM/src/generic_msghandlers.cpp b/plugins/TabSRMM/src/generic_msghandlers.cpp
index b2cf323b92..1f81e18ac1 100644
--- a/plugins/TabSRMM/src/generic_msghandlers.cpp
+++ b/plugins/TabSRMM/src/generic_msghandlers.cpp
@@ -434,12 +434,12 @@ LRESULT CTabBaseDlg::DM_MsgWindowCmdHandler(UINT cmd, WPARAM wParam, LPARAM lPar
case IDC_PIC:
GetClientRect(m_hwnd, &rc);
- m_fEditNotesActive = !m_fEditNotesActive;
- if (m_fEditNotesActive) {
+ m_bEditNotesActive = !m_bEditNotesActive;
+ if (m_bEditNotesActive) {
int iLen = GetWindowTextLength(m_message.GetHwnd());
if (iLen != 0) {
SendMessage(m_hwnd, DM_ACTIVATETOOLTIP, IDC_MESSAGE, (LPARAM)TranslateT("You cannot edit user notes when there are unsent messages"));
- m_fEditNotesActive = false;
+ m_bEditNotesActive = false;
break;
}
@@ -474,7 +474,7 @@ LRESULT CTabBaseDlg::DM_MsgWindowCmdHandler(UINT cmd, WPARAM wParam, LPARAM lPar
SWP_NOMOVE | SWP_NOSIZE | SWP_NOCOPYBITS);
RedrawWindow(m_hwnd, 0, 0, RDW_INVALIDATE | RDW_ERASE | RDW_FRAME | RDW_UPDATENOW | RDW_ALLCHILDREN);
- if (m_fEditNotesActive)
+ if (m_bEditNotesActive)
CWarning::show(CWarning::WARN_EDITUSERNOTES, MB_OK | MB_ICONINFORMATION);
break;
@@ -533,22 +533,19 @@ LRESULT CTabBaseDlg::DM_MsgWindowCmdHandler(UINT cmd, WPARAM wParam, LPARAM lPar
void CTabBaseDlg::DM_InitRichEdit()
{
- bool fIsChat = ((m_bType == SESSIONTYPE_CHAT) ? true : false);
- HWND hwndLog = GetDlgItem(m_hwnd, !fIsChat ? IDC_LOG : IDC_LOG);
- HWND hwndEdit = GetDlgItem(m_hwnd, !fIsChat ? IDC_MESSAGE : IDC_MESSAGE);
- HWND hwndDlg = m_hwnd;
+ bool fIsChat = isChat();
m_inputbg = fIsChat ? M.GetDword(FONTMODULE, "inputbg", SRMSGDEFSET_BKGCOLOUR) : m_pContainer->theme.inputbg;
COLORREF colour = fIsChat ? g_Settings.crLogBackground : m_pContainer->theme.bg;
COLORREF inputcharcolor;
char *szStreamOut = nullptr;
- if (!fIsChat && GetWindowTextLength(hwndEdit) > 0)
- szStreamOut = Message_GetFromStream(hwndEdit);
- SetWindowText(hwndEdit, L"");
+ if (!fIsChat && GetWindowTextLength(m_message.GetHwnd()) > 0)
+ szStreamOut = Message_GetFromStream(m_message.GetHwnd());
+ SetWindowText(m_message.GetHwnd(), L"");
- SendMessage(hwndLog, EM_SETBKGNDCOLOR, 0, colour);
- SendMessage(hwndEdit, EM_SETBKGNDCOLOR, 0, m_inputbg);
+ m_log.SendMsg(EM_SETBKGNDCOLOR, 0, colour);
+ m_message.SendMsg(EM_SETBKGNDCOLOR, 0, m_inputbg);
CHARFORMAT2A cf2;
memset(&cf2, 0, sizeof(CHARFORMAT2A));
@@ -585,9 +582,9 @@ void CTabBaseDlg::DM_InitRichEdit()
cf2.bPitchAndFamily = lf.lfPitchAndFamily;
cf2.yHeight = abs(lf.lfHeight) * 15;
}
- SendMessage(hwndEdit, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM)&cf2);
- SendMessage(hwndEdit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2); /* WINE: fix send colour text. */
- SendMessage(hwndEdit, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf2); /* WINE: fix send colour text. */
+ m_message.SendMsg(EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM)&cf2);
+ m_message.SendMsg(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2); /* WINE: fix send colour text. */
+ m_message.SendMsg(EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf2); /* WINE: fix send colour text. */
// setup the rich edit control(s)
// LOG is always set to RTL, because this is needed for proper bidirectional operation later.
@@ -599,12 +596,12 @@ void CTabBaseDlg::DM_InitRichEdit()
pf2.wEffects = PFE_RTLPARA;
pf2.dwMask = PFM_RTLPARA;
if (Utils::FindRTLLocale(this))
- SendMessage(hwndEdit, EM_SETPARAFORMAT, 0, (LPARAM)&pf2);
+ m_message.SendMsg(EM_SETPARAFORMAT, 0, (LPARAM)&pf2);
if (!(m_dwFlags & MWF_LOG_RTL)) {
pf2.wEffects = 0;
- SendMessage(hwndEdit, EM_SETPARAFORMAT, 0, (LPARAM)&pf2);
+ m_message.SendMsg(EM_SETPARAFORMAT, 0, (LPARAM)&pf2);
}
- SendMessage(hwndEdit, EM_SETLANGOPTIONS, 0, (LPARAM)SendMessage(hwndEdit, EM_GETLANGOPTIONS, 0, 0) & ~IMF_AUTOKEYBOARD);
+ m_message.SendMsg(EM_SETLANGOPTIONS, 0, (LPARAM)m_message.SendMsg(EM_GETLANGOPTIONS, 0, 0) & ~IMF_AUTOKEYBOARD);
pf2.wEffects = PFE_RTLPARA;
pf2.dwMask |= PFM_OFFSET;
if (m_dwFlags & MWF_INITMODE) {
@@ -615,22 +612,22 @@ void CTabBaseDlg::DM_InitRichEdit()
pf2.dxOffset = m_pContainer->theme.left_indent + 30;
if (!fIsChat) {
- SetWindowText(hwndLog, L"");
- SendMessage(hwndLog, EM_SETPARAFORMAT, 0, (LPARAM)&pf2);
- SendMessage(hwndLog, EM_SETLANGOPTIONS, 0, (LPARAM)SendDlgItemMessage(hwndDlg, IDC_LOG, EM_GETLANGOPTIONS, 0, 0) & ~IMF_AUTOKEYBOARD);
+ m_log.SetText(L"");
+ m_log.SendMsg(EM_SETPARAFORMAT, 0, (LPARAM)&pf2);
+ m_log.SendMsg(EM_SETLANGOPTIONS, 0, (LPARAM)SendDlgItemMessage(m_hwnd, IDC_LOG, EM_GETLANGOPTIONS, 0, 0) & ~IMF_AUTOKEYBOARD);
// set the scrollbars etc to RTL/LTR (only for manual RTL mode)
if (m_dwFlags & MWF_LOG_RTL) {
- SetWindowLongPtr(hwndEdit, GWL_EXSTYLE, GetWindowLongPtr(hwndEdit, GWL_EXSTYLE) | WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR);
- SetWindowLongPtr(hwndLog, GWL_EXSTYLE, GetWindowLongPtr(hwndLog, GWL_EXSTYLE) | WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR);
+ SetWindowLongPtr(m_message.GetHwnd(), GWL_EXSTYLE, GetWindowLongPtr(m_message.GetHwnd(), GWL_EXSTYLE) | WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR);
+ SetWindowLongPtr(m_log.GetHwnd(), GWL_EXSTYLE, GetWindowLongPtr(m_log.GetHwnd(), GWL_EXSTYLE) | WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR);
}
else {
- SetWindowLongPtr(hwndEdit, GWL_EXSTYLE, GetWindowLongPtr(hwndEdit, GWL_EXSTYLE) &~(WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR));
- SetWindowLongPtr(hwndLog, GWL_EXSTYLE, GetWindowLongPtr(hwndLog, GWL_EXSTYLE) &~(WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR));
+ SetWindowLongPtr(m_message.GetHwnd(), GWL_EXSTYLE, GetWindowLongPtr(m_message.GetHwnd(), GWL_EXSTYLE) &~(WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR));
+ SetWindowLongPtr(m_log.GetHwnd(), GWL_EXSTYLE, GetWindowLongPtr(m_log.GetHwnd(), GWL_EXSTYLE) &~(WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR));
}
}
if (szStreamOut != nullptr) {
SETTEXTEX stx = { ST_DEFAULT, CP_UTF8 };
- SendMessage(hwndEdit, EM_SETTEXTEX, (WPARAM)&stx, (LPARAM)szStreamOut);
+ m_message.SendMsg(EM_SETTEXTEX, (WPARAM)&stx, (LPARAM)szStreamOut);
mir_free(szStreamOut);
}
}
@@ -708,22 +705,21 @@ void CTabBaseDlg::DM_ScrollToBottom(WPARAM wParam, LPARAM lParam)
return;
}
- HWND hwnd = GetDlgItem(m_hwnd, m_bType == SESSIONTYPE_IM ? IDC_LOG : IDC_LOG);
if (lParam)
- SendMessage(hwnd, WM_SIZE, 0, 0);
+ SendMessage(m_log.GetHwnd(), WM_SIZE, 0, 0);
if (wParam == 1 && lParam == 1) {
- int len = GetWindowTextLength(hwnd);
- SendMessage(hwnd, EM_SETSEL, len - 1, len - 1);
+ int len = GetWindowTextLength(m_log.GetHwnd());
+ SendMessage(m_log.GetHwnd(), EM_SETSEL, len - 1, len - 1);
}
if (wParam)
- SendMessage(hwnd, WM_VSCROLL, MAKEWPARAM(SB_BOTTOM, 0), 0);
+ SendMessage(m_log.GetHwnd(), WM_VSCROLL, MAKEWPARAM(SB_BOTTOM, 0), 0);
else
- PostMessage(hwnd, WM_VSCROLL, MAKEWPARAM(SB_BOTTOM, 0), 0);
+ PostMessage(m_log.GetHwnd(), WM_VSCROLL, MAKEWPARAM(SB_BOTTOM, 0), 0);
if (lParam)
- InvalidateRect(hwnd, nullptr, FALSE);
+ InvalidateRect(m_log.GetHwnd(), nullptr, FALSE);
}
static void LoadKLThread(LPVOID _param)
@@ -865,9 +861,6 @@ HWND CTabBaseDlg::DM_CreateClist()
LRESULT CTabBaseDlg::DM_MouseWheelHandler(WPARAM wParam, LPARAM lParam)
{
- UINT uID = m_bType == SESSIONTYPE_IM ? IDC_LOG : IDC_LOG;
- UINT uIDMsg = m_bType == SESSIONTYPE_IM ? IDC_MESSAGE : IDC_MESSAGE;
-
POINT pt;
GetCursorPos(&pt);
@@ -882,11 +875,11 @@ LRESULT CTabBaseDlg::DM_MouseWheelHandler(WPARAM wParam, LPARAM lParam)
rc.bottom = rc1.bottom;
if (PtInRect(&rc, pt)) {
short amount = (short)(HIWORD(wParam));
- SendMessage(m_pContainer->hwnd, WM_COMMAND, MAKELONG(amount > 0 ? IDC_SIDEBARUP : IDC_SIDEBARDOWN, 0), (LPARAM)uIDMsg);
+ SendMessage(m_pContainer->hwnd, WM_COMMAND, MAKELONG(amount > 0 ? IDC_SIDEBARUP : IDC_SIDEBARDOWN, 0), IDC_MESSAGE);
return 0;
}
}
- if (m_bType == SESSIONTYPE_CHAT) { // scroll nick list by just hovering it
+ if (isChat()) { // scroll nick list by just hovering it
RECT rcNicklist;
GetWindowRect(GetDlgItem(m_hwnd, IDC_LIST), &rcNicklist);
if (PtInRect(&rcNicklist, pt)) {
@@ -899,9 +892,9 @@ LRESULT CTabBaseDlg::DM_MouseWheelHandler(WPARAM wParam, LPARAM lParam)
else if (m_hwndHPP)
GetWindowRect(m_hwndHPP, &rc);
else
- GetWindowRect(GetDlgItem(m_hwnd, uID), &rc);
+ GetWindowRect(m_log.GetHwnd(), &rc);
if (PtInRect(&rc, pt)) {
- HWND hwndLog = (m_hwndIEView || m_hwndHPP) ? m_hwndIWebBrowserControl : GetDlgItem(m_hwnd, uID);
+ HWND hwndLog = (m_hwndIEView || m_hwndHPP) ? m_hwndIWebBrowserControl : m_log.GetHwnd();
short wDirection = (short)HIWORD(wParam);
if (hwndLog == 0)
@@ -948,7 +941,7 @@ void CTabBaseDlg::DM_ThemeChanged()
m_hTheme = OpenThemeData(m_hwnd, L"EDIT");
- if (m_bType == SESSIONTYPE_IM) {
+ if (!isChat()) {
if (m_hTheme != 0 || (CSkin::m_skinEnabled && !item_log->IGNORED))
SetWindowLongPtr(GetDlgItem(m_hwnd, IDC_LOG), GWL_EXSTYLE, GetWindowLongPtr(GetDlgItem(m_hwnd, IDC_LOG), GWL_EXSTYLE) & ~WS_EX_STATICEDGE);
if (m_hTheme != 0 || (CSkin::m_skinEnabled && !item_msg->IGNORED))
@@ -981,7 +974,7 @@ void CTabBaseDlg::DM_NotifyTyping(int mode)
MCONTACT hContact = m_cache->getActiveContact();
// editing user notes or preparing a message for queued delivery -> don't send MTN
- if (m_fEditNotesActive || (m_sendMode & SMODE_SENDLATER))
+ if (m_bEditNotesActive || (m_sendMode & SMODE_SENDLATER))
return;
// allow supression of sending out TN for the contact (NOTE: for metacontacts, do NOT use the subcontact handle)
@@ -1086,7 +1079,7 @@ void CTabBaseDlg::DM_Typing(bool fForceOff)
SendMessage(m_hwnd, DM_UPDATEWINICON, 0, 0);
HandleIconFeedback(this, (HICON)-1);
CTabBaseDlg *dat_active = (CTabBaseDlg*)GetWindowLongPtr(m_pContainer->hwndActive, GWLP_USERDATA);
- if (dat_active && dat_active->m_bType == SESSIONTYPE_IM)
+ if (dat_active && !dat_active->isChat())
SendMessage(hwndContainer, DM_UPDATETITLE, 0, 0);
else
SendMessage(hwndContainer, DM_UPDATETITLE, (WPARAM)m_pContainer->hwndActive, 1);
@@ -1158,11 +1151,11 @@ int CTabBaseDlg::DM_SplitterGlobalEvent(WPARAM wParam, LPARAM lParam)
if ((m_dwFlagsEx & MWF_SHOW_SPLITTEROVERRIDE) && this != srcDat)
return 0;
- if (srcDat->m_bType == m_bType)
+ if (srcDat->isChat() == isChat())
newPos = PluginConfig.lastSPlitterPos.pos;
- else if (srcDat->m_bType == SESSIONTYPE_IM && m_bType == SESSIONTYPE_CHAT)
+ else if (!srcDat->isChat() && isChat())
newPos = PluginConfig.lastSPlitterPos.pos + PluginConfig.lastSPlitterPos.off_im;
- else if (srcDat->m_bType == SESSIONTYPE_CHAT && m_bType == SESSIONTYPE_IM)
+ else if (srcDat->isChat() && !isChat())
newPos = PluginConfig.lastSPlitterPos.pos + PluginConfig.lastSPlitterPos.off_im;
else
newPos = 0;
@@ -1508,7 +1501,7 @@ void CTabBaseDlg::DrawStatusIcons(HDC hDC, const RECT &rc, int gap)
PluginConfig.m_smcxicon, PluginConfig.m_smcyicon, 0, nullptr, DI_NORMAL);
}
else if (sid->dwId == MSG_ICON_UTN) {
- if (m_bType == SESSIONTYPE_IM || si->iType == GCW_PRIVMESS) {
+ if (!isChat() || m_si->iType == GCW_PRIVMESS) {
DrawIconEx(hDC, x, y, PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING], PluginConfig.m_smcxicon, PluginConfig.m_smcyicon, 0, nullptr, DI_NORMAL);
DrawIconEx(hDC, x, y, db_get_b(m_hContact, SRMSGMOD, SRMSGSET_TYPING, M.GetByte(SRMSGMOD, SRMSGSET_TYPINGNEW, SRMSGDEFSET_TYPINGNEW)) ?
@@ -1565,7 +1558,7 @@ void CTabBaseDlg::CheckStatusIconClick(POINT pt, const RECT &rc, int gap, int co
InvalidateRect(m_pContainer->hwndStatus, nullptr, TRUE);
}
}
- else if (sid->dwId == MSG_ICON_UTN && code != NM_RCLICK && (m_bType == SESSIONTYPE_IM || si->iType == GCW_PRIVMESS)) {
+ else if (sid->dwId == MSG_ICON_UTN && code != NM_RCLICK && (!isChat() || m_si->iType == GCW_PRIVMESS)) {
SendMessage(m_pContainer->hwndActive, WM_COMMAND, IDC_SELFTYPING, 0);
InvalidateRect(m_pContainer->hwndStatus, nullptr, TRUE);
}
diff --git a/plugins/TabSRMM/src/infopanel.cpp b/plugins/TabSRMM/src/infopanel.cpp
index d5f75c4ce1..47c41f8142 100644
--- a/plugins/TabSRMM/src/infopanel.cpp
+++ b/plugins/TabSRMM/src/infopanel.cpp
@@ -46,7 +46,7 @@ CInfoPanel::CInfoPanel(CTabBaseDlg *dat)
{
if (dat) {
m_dat = dat;
- m_isChat = dat->m_bType == SESSIONTYPE_CHAT ? true : false;
+ m_isChat = dat->isChat();
}
m_defaultHeight = PluginConfig.m_panelHeight;
m_defaultMUCHeight = PluginConfig.m_MUCpanelHeight;
@@ -595,7 +595,7 @@ void CInfoPanel::RenderIPStatus(const HDC hdc, RECT& rcItem)
void CInfoPanel::Chat_RenderIPNickname(const HDC hdc, RECT& rcItem)
{
- SESSION_INFO *si = m_dat->si;
+ SESSION_INFO *si = m_dat->m_si;
if (si == nullptr)
return;
@@ -654,7 +654,7 @@ void CInfoPanel::Chat_RenderIPNickname(const HDC hdc, RECT& rcItem)
void CInfoPanel::Chat_RenderIPSecondLine(const HDC hdc, RECT& rcItem)
{
- SESSION_INFO *si = reinterpret_cast<SESSION_INFO*>(m_dat->si);
+ SESSION_INFO *si = reinterpret_cast<SESSION_INFO*>(m_dat->m_si);
if (si == 0)
return;
@@ -718,7 +718,7 @@ HMENU CInfoPanel::constructContextualMenu() const
Utils::addMenuItem(m, mii, PluginConfig.g_iconContainer, TranslateT("Messaging settings..."), ID_MESSAGELOGSETTINGS_FORTHISCONTACT, 1);
else {
::AppendMenu(m, MF_STRING, IDC_CHANMGR, TranslateT("Room settings..."));
- if (GCW_SERVER & m_dat->si->iType)
+ if (GCW_SERVER & m_dat->m_si->iType)
::EnableMenuItem(m, IDC_CHANMGR, MF_BYCOMMAND | MF_GRAYED);
}
::AppendMenu(m, MF_SEPARATOR, 1000, 0);
@@ -747,7 +747,7 @@ LRESULT CInfoPanel::cmdHandler(UINT cmd)
return(S_OK);
}
if (m_hoverFlags & HOVER_UIN) {
- Utils::CopyToClipBoard(m_isChat ? m_dat->si->ptszTopic : m_dat->m_cache->getUIN(), m_dat->GetHwnd());
+ Utils::CopyToClipBoard(m_isChat ? m_dat->m_si->ptszTopic : m_dat->m_cache->getUIN(), m_dat->GetHwnd());
return(S_OK);
}
break;
diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp
index e1329cb6b8..28231fa2b8 100644
--- a/plugins/TabSRMM/src/msgdialog.cpp
+++ b/plugins/TabSRMM/src/msgdialog.cpp
@@ -463,16 +463,16 @@ static LRESULT CALLBACK MessageLogSubclassProc(HWND hwnd, UINT msg, WPARAM wPara
break;
case WM_SYSKEYDOWN:
- mwdat->m_fkeyProcessed = false;
+ mwdat->m_bkeyProcessed = false;
if (ProcessHotkeysByMsgFilter(hwnd, msg, wParam, lParam, IDC_LOG)) {
- mwdat->m_fkeyProcessed = true;
+ mwdat->m_bkeyProcessed = true;
return 0;
}
break;
case WM_SYSCHAR:
- if (mwdat->m_fkeyProcessed) {
- mwdat->m_fkeyProcessed = false;
+ if (mwdat->m_bkeyProcessed) {
+ mwdat->m_bkeyProcessed = false;
return 0;
}
break;
@@ -523,12 +523,12 @@ static LRESULT CALLBACK MessageEditSubclassProc(HWND hwnd, UINT msg, WPARAM wPar
// prevent the rich edit from switching text direction or keyboard layout when
// using hotkeys with ctrl-shift or alt-shift modifiers
- if (mwdat->m_fkeyProcessed && (msg == WM_KEYUP)) {
+ if (mwdat->m_bkeyProcessed && (msg == WM_KEYUP)) {
GetKeyboardState(mwdat->kstate);
if (mwdat->kstate[VK_CONTROL] & 0x80 || mwdat->kstate[VK_SHIFT] & 0x80)
return 0;
- mwdat->m_fkeyProcessed = false;
+ mwdat->m_bkeyProcessed = false;
return 0;
}
@@ -603,14 +603,14 @@ static LRESULT CALLBACK MessageEditSubclassProc(HWND hwnd, UINT msg, WPARAM wPar
SkinPlaySound("SoundOnTyping");
if (wParam == VK_INSERT && !isShift && !isCtrl && !isAlt) {
- mwdat->m_fInsertMode = !mwdat->m_fInsertMode;
+ mwdat->m_bInsertMode = !mwdat->m_bInsertMode;
SendMessage(hwndParent, WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), EN_CHANGE), (LPARAM)hwnd);
}
if (wParam == VK_CAPITAL || wParam == VK_NUMLOCK)
SendMessage(hwndParent, WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), EN_CHANGE), (LPARAM)hwnd);
if (wParam == VK_RETURN) {
- if (mwdat->m_fEditNotesActive)
+ if (mwdat->m_bEditNotesActive)
break;
if (isShift) {
@@ -692,9 +692,9 @@ static LRESULT CALLBACK MessageEditSubclassProc(HWND hwnd, UINT msg, WPARAM wPar
}
case WM_SYSKEYDOWN:
- mwdat->m_fkeyProcessed = false;
+ mwdat->m_bkeyProcessed = false;
if (ProcessHotkeysByMsgFilter(hwnd, msg, wParam, lParam, IDC_MESSAGE)) {
- mwdat->m_fkeyProcessed = true;
+ mwdat->m_bkeyProcessed = true;
return 0;
}
break;
@@ -707,8 +707,8 @@ static LRESULT CALLBACK MessageEditSubclassProc(HWND hwnd, UINT msg, WPARAM wPar
break;
case WM_SYSCHAR:
- if (mwdat->m_fkeyProcessed) {
- mwdat->m_fkeyProcessed = false;
+ if (mwdat->m_bkeyProcessed) {
+ mwdat->m_bkeyProcessed = false;
return 0;
}
@@ -842,7 +842,7 @@ LRESULT CALLBACK SplitterSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
ReleaseCapture();
dat->DM_ScrollToBottom(0, 1);
- if (dat->m_bType == SESSIONTYPE_IM && hwnd == GetDlgItem(hwndParent, IDC_PANELSPLITTER)) {
+ if (!dat->isChat() && hwnd == GetDlgItem(hwndParent, IDC_PANELSPLITTER)) {
SendMessage(hwndParent, WM_SIZE, 0, 0);
RedrawWindow(hwndParent, nullptr, nullptr, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW);
}
@@ -866,7 +866,7 @@ LRESULT CALLBACK SplitterSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
case ID_SPLITTERCONTEXT_SAVEFORTHISCONTACTONLY:
dat->m_dwFlagsEx |= MWF_SHOW_SPLITTEROVERRIDE;
db_set_b(dat->m_hContact, SRMSGMOD_T, "splitoverride", 1);
- if (dat->m_bType == SESSIONTYPE_IM)
+ if (!dat->isChat())
dat->SaveSplitter();
break;
@@ -919,7 +919,6 @@ LRESULT CALLBACK SplitterSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
CSrmmWindow::CSrmmWindow()
: CTabBaseDlg(IDD_MSGSPLITNEW)
{
- m_bType = SESSIONTYPE_IM;
}
void CSrmmWindow::ClearLog()
@@ -1224,7 +1223,7 @@ void CSrmmWindow::OnDestroy()
if (m_pContainer->dwFlags & CNT_SIDEBAR)
m_pContainer->SideBar->removeSession(this);
m_cache->setWindowData();
- if (m_cache->isValid() && !m_fIsReattach && m_hContact && M.GetByte("deletetemp", 0))
+ if (!m_bIsReattach && m_hContact && M.GetByte("deletetemp", 0))
if (db_get_b(m_hContact, "CList", "NotOnList", 0))
db_delete_contact(m_hContact);
@@ -1234,9 +1233,6 @@ void CSrmmWindow::OnDestroy()
if (m_hwndPanelPic)
DestroyWindow(m_hwndPanelPic);
- if (m_hClientIcon)
- DestroyIcon(m_hClientIcon);
-
if (m_hwndPanelPicParent)
DestroyWindow(m_hwndPanelPicParent);
@@ -1245,7 +1241,7 @@ void CSrmmWindow::OnDestroy()
AddContactToFavorites(m_hContact, m_cache->getNick(), m_cache->getActiveProto(), m_wszStatus, m_wStatus,
Skin_LoadProtoIcon(m_cache->getActiveProto(), m_cache->getActiveStatus()), 1, PluginConfig.g_hMenuRecent);
if (m_hContact) {
- if (!m_fEditNotesActive) {
+ if (!m_bEditNotesActive) {
char *msg = Message_GetFromStream(m_message.GetHwnd(), SF_TEXT);
if (msg) {
db_set_utf(m_hContact, SRMSGMOD, "SavedMsg", msg);
@@ -1262,9 +1258,6 @@ void CSrmmWindow::OnDestroy()
DM_FreeTheme();
- mir_free(m_sendBuffer);
- mir_free(m_hHistoryEvents);
-
// search the sendqueue for unfinished send jobs and mir_free them. Leave unsent
// messages in the queue as they can be acked later
{
@@ -1284,20 +1277,9 @@ void CSrmmWindow::OnDestroy()
}
}
- mir_free(m_hQueuedEvents);
-
- if (m_hSmileyIcon)
- DestroyIcon(m_hSmileyIcon);
-
- if (m_hXStatusIcon)
- DestroyIcon(m_hXStatusIcon);
-
if (m_hwndTip)
DestroyWindow(m_hwndTip);
- if (m_hTaskbarIcon)
- DestroyIcon(m_hTaskbarIcon);
-
UpdateTrayMenuState(this, FALSE); // remove me from the tray menu (if still there)
if (PluginConfig.g_hMenuTrayUnread)
DeleteMenu(PluginConfig.g_hMenuTrayUnread, m_hContact, MF_BYCOMMAND);
@@ -1306,14 +1288,12 @@ void CSrmmWindow::OnDestroy()
if (m_cache->isValid())
db_set_dw(0, SRMSGMOD, "multisplit", m_iMultiSplit);
- {
- int i = GetTabIndexFromHWND(m_hwndParent, m_hwnd);
- if (i >= 0) {
- SendMessage(m_hwndParent, WM_USER + 100, 0, 0); // remove tooltip
- TabCtrl_DeleteItem(m_hwndParent, i);
- BroadCastContainer(m_pContainer, DM_REFRESHTABINDEX, 0, 0);
- m_iTabID = -1;
- }
+ int i = GetTabIndexFromHWND(m_hwndParent, m_hwnd);
+ if (i >= 0) {
+ SendMessage(m_hwndParent, WM_USER + 100, 0, 0); // remove tooltip
+ TabCtrl_DeleteItem(m_hwndParent, i);
+ BroadCastContainer(m_pContainer, DM_REFRESHTABINDEX, 0, 0);
+ m_iTabID = -1;
}
TABSRMM_FireEvent(m_hContact, m_hwnd, MSG_WINDOW_EVT_CLOSE, 0);
@@ -1333,14 +1313,6 @@ void CSrmmWindow::OnDestroy()
ieWindow.hwnd = m_hwndHPP;
CallService(MS_HPP_EG_WINDOW, 0, (LPARAM)&ieWindow);
}
- if (m_pWnd) {
- delete m_pWnd;
- m_pWnd = 0;
- }
- if (m_sbCustom) {
- delete m_sbCustom;
- m_sbCustom = 0;
- }
}
void CSrmmWindow::ReplayQueue()
@@ -1569,7 +1541,7 @@ INT_PTR CSrmmWindow::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
if (CSkin::m_skinEnabled) {
UINT item_ids[2] = { ID_EXTBKHISTORY, ID_EXTBKINPUTAREA };
UINT ctl_ids[2] = { IDC_LOG, IDC_MESSAGE };
- BOOL isEditNotesReason = m_fEditNotesActive;
+ BOOL isEditNotesReason = m_bEditNotesActive;
BOOL isSendLaterReason = (m_sendMode & SMODE_SENDLATER);
BOOL isMultipleReason = (m_sendMode & SMODE_MULTIPLE || m_sendMode & SMODE_CONTAINER);
@@ -1768,7 +1740,7 @@ INT_PTR CSrmmWindow::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
if (msg == WM_SYSKEYUP) {
if (wp == VK_MENU)
- if (!m_fkeyProcessed && !(GetKeyState(VK_CONTROL) & 0x8000) && !(GetKeyState(VK_SHIFT) & 0x8000) && !(lp & (1 << 24)))
+ if (!m_bkeyProcessed && !(GetKeyState(VK_CONTROL) & 0x8000) && !(GetKeyState(VK_SHIFT) & 0x8000) && !(lp & (1 << 24)))
m_pContainer->MenuBar->autoShow();
return _dlgReturn(m_hwnd, 0);
@@ -1777,7 +1749,7 @@ INT_PTR CSrmmWindow::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
if ((msg == WM_KEYDOWN || msg == WM_SYSKEYDOWN) && !(GetKeyState(VK_RMENU) & 0x8000)) {
LRESULT mim_hotkey_check = CallService(MS_HOTKEY_CHECK, (WPARAM)&message, (LPARAM)TABSRMM_HK_SECTION_IM);
if (mim_hotkey_check)
- m_fkeyProcessed = true;
+ m_bkeyProcessed = true;
switch (mim_hotkey_check) {
case TABSRMM_HK_SETUSERPREFS:
@@ -1867,7 +1839,7 @@ INT_PTR CSrmmWindow::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
return _dlgReturn(m_hwnd, 1);
}
if (DM_GenericHotkeysCheck(&message)) {
- m_fkeyProcessed = true;
+ m_bkeyProcessed = true;
return _dlgReturn(m_hwnd, 1);
}
}
@@ -2551,7 +2523,7 @@ INT_PTR CSrmmWindow::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
switch (LOWORD(wParam)) {
case IDOK:
- if (m_fEditNotesActive) {
+ if (m_bEditNotesActive) {
SendMessage(m_hwnd, DM_ACTIVATETOOLTIP, IDC_PIC, (LPARAM)TranslateT("You are editing the user notes. Click the button again or use the hotkey (default: Alt-N) to save the notes and return to normal messaging mode"));
return 0;
}
diff --git a/plugins/TabSRMM/src/msgdlgutils.cpp b/plugins/TabSRMM/src/msgdlgutils.cpp
index 57245bb915..cd1a49147b 100644
--- a/plugins/TabSRMM/src/msgdlgutils.cpp
+++ b/plugins/TabSRMM/src/msgdlgutils.cpp
@@ -252,7 +252,7 @@ int CTabBaseDlg::MsgWindowUpdateMenu(HMENU submenu, int menuID)
bool bInfoPanel = m_pPanel.isActive();
if (menuID == MENU_TABCONTEXT) {
- EnableMenuItem(submenu, ID_TABMENU_LEAVECHATROOM, (m_bType == SESSIONTYPE_CHAT && ProtoServiceExists(m_szProto, PS_LEAVECHAT)) ? MF_ENABLED : MF_DISABLED);
+ EnableMenuItem(submenu, ID_TABMENU_LEAVECHATROOM, (isChat() && ProtoServiceExists(m_szProto, PS_LEAVECHAT)) ? MF_ENABLED : MF_DISABLED);
EnableMenuItem(submenu, ID_TABMENU_ATTACHTOCONTAINER, (M.GetByte("useclistgroups", 0) || M.GetByte("singlewinmode", 0)) ? MF_GRAYED : MF_ENABLED);
EnableMenuItem(submenu, ID_TABMENU_CLEARSAVEDTABPOSITION, (M.GetDword(m_hContact, "tabindex", -1) != -1) ? MF_ENABLED : MF_GRAYED);
}
@@ -325,7 +325,7 @@ int CTabBaseDlg::MsgWindowMenuHandler(int selection, int menuId)
db_unset(m_hContact, SRMSGMOD_T, "tabindex");
break;
case ID_TABMENU_LEAVECHATROOM:
- if (m_bType == SESSIONTYPE_CHAT && m_hContact != 0) {
+ if (isChat() && m_hContact != 0) {
char *szProto = GetContactProto(m_hContact);
if (szProto)
CallProtoService(szProto, PS_LEAVECHAT, m_hContact, 0);
@@ -407,7 +407,7 @@ void CTabBaseDlg::UpdateReadChars() const
return;
int len;
- if (m_bType == SESSIONTYPE_CHAT)
+ if (isChat())
len = GetWindowTextLength(m_message.GetHwnd());
else {
// retrieve text length in UTF8 bytes, because this is the relevant length for most protocols
@@ -422,13 +422,13 @@ void CTabBaseDlg::UpdateReadChars() const
BOOL fNum = (GetKeyState(VK_NUMLOCK) & 1);
wchar_t szBuf[20]; szBuf[0] = 0;
- if (m_fInsertMode)
+ if (m_bInsertMode)
mir_wstrcat(szBuf, L"O");
if (fCaps)
mir_wstrcat(szBuf, L"C");
if (fNum)
mir_wstrcat(szBuf, L"N");
- if (m_fInsertMode || fCaps || fNum)
+ if (m_bInsertMode || fCaps || fNum)
mir_wstrcat(szBuf, L" | ");
wchar_t buf[128];
@@ -444,7 +444,7 @@ void CTabBaseDlg::UpdateReadChars() const
void CTabBaseDlg::UpdateStatusBar() const
{
if (m_pContainer->hwndStatus && m_pContainer->hwndActive == m_hwnd) {
- if (m_bType == SESSIONTYPE_IM) {
+ if (!isChat()) {
if (m_wszStatusBar[0]) {
SendMessage(m_pContainer->hwndStatus, SB_SETICON, 0, (LPARAM)PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING]);
SendMessage(m_pContainer->hwndStatus, SB_SETTEXT, 0, (LPARAM)m_wszStatusBar);
@@ -897,7 +897,7 @@ BOOL CTabBaseDlg::DoRtfToTags(CMStringW &pszText, int iNumColors, COLORREF *pCol
int iCol = _wtoi(p + 3);
int iInd = GetRtfIndex(iCol, iNumColors, pIndex);
- if (iCol && m_bType != SESSIONTYPE_CHAT)
+ if (iCol && !isChat())
res.AppendFormat((iInd > 0) ? (bInsideColor ? L"[/color][color=%s]" : L"[color=%s]") : (bInsideColor ? L"[/color]" : L""), Utils::rtf_ctable[iInd - 1].szName);
bInsideColor = iInd > 0;
@@ -996,7 +996,7 @@ BOOL CTabBaseDlg::DoRtfToTags(CMStringW &pszText, int iNumColors, COLORREF *pCol
}
}
- if (bInsideColor && m_bType != SESSIONTYPE_CHAT)
+ if (bInsideColor && !isChat())
res.Append(L"[/color]");
if (bInsideUl)
res.Append(L"[/u]");
@@ -1641,7 +1641,7 @@ LRESULT TSAPI GetSendButtonState(HWND hwnd)
void CTabBaseDlg::EnableSendButton(bool bMode) const
{
SendDlgItemMessage(m_hwnd, IDOK, BUTTONSETASNORMAL, bMode, 0);
- SendDlgItemMessage(m_hwnd, IDC_PIC, BUTTONSETASNORMAL, m_fEditNotesActive ? TRUE : (!bMode && m_iOpenJobs == 0) ? TRUE : FALSE, 0);
+ SendDlgItemMessage(m_hwnd, IDC_PIC, BUTTONSETASNORMAL, m_bEditNotesActive ? TRUE : (!bMode && m_iOpenJobs == 0) ? TRUE : FALSE, 0);
HWND hwndOK = GetDlgItem(GetParent(GetParent(m_hwnd)), IDOK);
if (IsWindow(hwndOK))
@@ -1728,12 +1728,7 @@ bool CTabBaseDlg::IsAutoSplitEnabled() const
LONG CTabBaseDlg::GetDefaultMinimumInputHeight() const
{
- LONG height;
-
- if (m_bType == SESSIONTYPE_IM)
- height = ((m_pContainer->dwFlags & CNT_BOTTOMTOOLBAR) ? DPISCALEY_S(46 + 22) : DPISCALEY_S(46));
- else
- height = ((m_pContainer->dwFlags & CNT_BOTTOMTOOLBAR) ? DPISCALEY_S(22 + 46) : DPISCALEY_S(46)) - DPISCALEY_S(23);
+ LONG height = (m_pContainer->dwFlags & CNT_BOTTOMTOOLBAR) ? DPISCALEY_S(46 + 22) : DPISCALEY_S(46);
if (CSkin::m_skinEnabled && !SkinItems[ID_EXTBKINPUTAREA].IGNORED)
height += (SkinItems[ID_EXTBKINPUTAREA].MARGIN_BOTTOM + SkinItems[ID_EXTBKINPUTAREA].MARGIN_TOP - 2);
diff --git a/plugins/TabSRMM/src/msglog.cpp b/plugins/TabSRMM/src/msglog.cpp
index e0c563f554..2a73f8f2d9 100644
--- a/plugins/TabSRMM/src/msglog.cpp
+++ b/plugins/TabSRMM/src/msglog.cpp
@@ -1092,7 +1092,7 @@ static void ReplaceIcons(HWND hwndDlg, CTabBaseDlg *dat, LONG startAt, int fAppe
FINDTEXTEX fi;
fi.chrg.cpMin = startAt;
- if (dat->m_clr_added) {
+ if (dat->m_bClrAdded) {
fi.lpstrText = L"##col##";
fi.chrg.cpMax = -1;
CHARFORMAT2 cf2;
@@ -1278,7 +1278,7 @@ void CTabBaseDlg::StreamInEvents(MEVENT hDbEventFirst, int count, int fAppend, D
}
// separator strings used for grid lines, message separation and so on...
- m_clr_added = FALSE;
+ m_bClrAdded = false;
if (m_szMicroLf[0] == 0)
SetupLogFormatting(this);
@@ -1355,7 +1355,7 @@ void CTabBaseDlg::StreamInEvents(MEVENT hDbEventFirst, int count, int fAppend, D
}
ReplaceIcons(m_hwnd, this, startAt, fAppend, isSent);
- m_clr_added = FALSE;
+ m_bClrAdded = false;
if (m_hwndIEView == nullptr && m_hwndHPP == nullptr) {
int len = GetWindowTextLength(hwndrtf);
diff --git a/plugins/TabSRMM/src/msgs.cpp b/plugins/TabSRMM/src/msgs.cpp
index 0e95268fc6..1ca98b630c 100644
--- a/plugins/TabSRMM/src/msgs.cpp
+++ b/plugins/TabSRMM/src/msgs.cpp
@@ -132,6 +132,21 @@ CTabBaseDlg::CTabBaseDlg(int iResource)
m_forceResizable = true;
}
+CTabBaseDlg::~CTabBaseDlg()
+{
+ delete m_pWnd;
+ delete m_sbCustom;
+
+ mir_free(m_sendBuffer);
+ mir_free(m_hHistoryEvents);
+ mir_free(m_hQueuedEvents);
+
+ if (m_hClientIcon) DestroyIcon(m_hClientIcon);
+ if (m_hSmileyIcon) DestroyIcon(m_hSmileyIcon);
+ if (m_hXStatusIcon) DestroyIcon(m_hXStatusIcon);
+ if (m_hTaskbarIcon) DestroyIcon(m_hTaskbarIcon);
+}
+
INT_PTR CTabBaseDlg::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg) {
@@ -147,7 +162,7 @@ INT_PTR CTabBaseDlg::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam)
m_pPanel.loadHeight();
else {
if (srcDat && lParam && this != srcDat && !m_pPanel.isPrivateHeight()) {
- if (srcDat->m_bType != m_bType && M.GetByte("syncAllPanels", 0) == 0)
+ if (srcDat->isChat() != isChat() && M.GetByte("syncAllPanels", 0) == 0)
return 0;
if (m_pContainer->settings->fPrivate && srcDat->m_pContainer != m_pContainer)
@@ -208,7 +223,7 @@ INT_PTR CTabBaseDlg::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam)
break;
db_set_ws(m_hContact, SRMSGMOD_T, "containerW", szNewName);
- m_fIsReattach = TRUE;
+ m_bIsReattach = true;
PostMessage(PluginConfig.g_hwndHotkeyHandler, DM_DOCREATETAB, (WPARAM)pNewContainer, m_hContact);
if (iOldItems > 1) // there were more than 1 tab, container is still valid
SendMessage(m_pContainer->hwndActive, WM_SIZE, 0, 0);
@@ -586,7 +601,7 @@ int TSAPI ActivateExistingTab(TContainerData *pContainer, HWND hwndChild)
TabCtrl_SetCurSel(GetDlgItem(pContainer->hwnd, IDC_MSGTABS), GetTabIndexFromHWND(GetDlgItem(pContainer->hwnd, IDC_MSGTABS), hwndChild));
SendMessage(pContainer->hwnd, WM_NOTIFY, 0, (LPARAM)&nmhdr); // just select the tab and let WM_NOTIFY do the rest
}
- if (dat->m_bType == SESSIONTYPE_IM)
+ if (!dat->isChat())
SendMessage(pContainer->hwnd, DM_UPDATETITLE, dat->m_hContact, 0);
if (IsIconic(pContainer->hwnd)) {
SendMessage(pContainer->hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
@@ -613,7 +628,7 @@ int TSAPI ActivateExistingTab(TContainerData *pContainer, HWND hwndChild)
else if (GetForegroundWindow() != pContainer->hwnd)
SetForegroundWindow(pContainer->hwnd);
- if (dat->m_bType == SESSIONTYPE_IM)
+ if (!dat->isChat())
SetFocus(GetDlgItem(hwndChild, IDC_MESSAGE));
return TRUE;
}
@@ -828,14 +843,13 @@ int TABSRMM_FireEvent(MCONTACT hContact, HWND hwnd, unsigned int type, unsigned
CSrmmWindow *dat = (CSrmmWindow*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
if (dat == nullptr)
return 0;
- BYTE bType = dat->m_bType;
MessageWindowEventData mwe = { sizeof(mwe) };
mwe.hContact = hContact;
mwe.hwndWindow = hwnd;
mwe.szModule = "tabSRMsgW";
mwe.uType = type;
- if (bType == SESSIONTYPE_IM) {
+ if (!dat->isChat()) {
mwe.hwndInput = GetDlgItem(hwnd, IDC_MESSAGE);
mwe.hwndLog = GetDlgItem(hwnd, IDC_LOG);
}
diff --git a/plugins/TabSRMM/src/msgs.h b/plugins/TabSRMM/src/msgs.h
index 9ba81facec..d1213b9395 100644
--- a/plugins/TabSRMM/src/msgs.h
+++ b/plugins/TabSRMM/src/msgs.h
@@ -132,7 +132,6 @@ struct TitleBtn {
class CTaskbarInteract;
class CMenuBar;
-class CInfoPanel;
class CSideBar;
class CProxyWindow;
class CThumbBase;
@@ -231,6 +230,7 @@ struct SESSION_INFO;
class CTabBaseDlg : public CSrmmBaseDialog
{
+ friend class CInfoPanel;
protected:
CCtrlEdit m_log, m_message;
@@ -252,7 +252,6 @@ protected:
void ResizeIeView();
public:
- BYTE m_bType;
DWORD m_dwFlags;
DWORD m_dwFlagsEx;
char *m_szProto;
@@ -265,14 +264,12 @@ public:
size_t m_iSendBufferSize;
int m_iSendLength; // message length in utf-8 octets
HICON m_hTabIcon, m_hTabStatusIcon, m_hXStatusIcon, m_hClientIcon, m_hTaskbarIcon;
- HICON m_iFlashIcon;
- bool m_bCanFlashTab, m_bTabFlash;
+ HICON m_iFlashIcon, m_hSmileyIcon;
HWND m_hwndIEView, m_hwndIWebBrowserControl, m_hwndHPP;
HWND m_hwndContactPic, m_hwndPanelPic, m_hwndPanelPicParent;
UINT m_bbLSideWidth, m_bbRSideWidth;
BYTE kstate[256];
- SESSION_INFO *si;
StatusTextData *m_sbCustom;
TContainerData *m_pContainer; // parent container description structure
@@ -282,7 +279,6 @@ public:
int m_originalSplitterY;
int m_iSplitterY, m_dynaSplitter;
int m_savedSplitterY, m_savedDynaSplit;
- int m_iMultiSplit;
SIZE m_minEditBoxSize;
int m_nTypeSecs;
int m_nTypeMode;
@@ -293,11 +289,21 @@ public:
DWORD m_dwTickLastEvent, m_dwUnread;
HBITMAP m_hOwnPic;
SIZE m_pic;
+
BYTE m_bShowTyping;
bool m_bShowAvatar, m_bShowInfoAvatar, m_bShowUIElements;
bool m_bUseOffset;
bool m_bIsHistory, m_bIsMeta, m_bNotOnList;
- HICON m_hSmileyIcon;
+ bool m_bkeyProcessed;
+ bool m_bEditNotesActive;
+ bool m_bActualHistory;
+ bool m_bIsReattach;
+ bool m_bIsAutosizingInput;
+ bool m_fLimitedUpdate;
+ bool m_bClrAdded;
+ bool m_bInsertMode;
+ bool m_bCanFlashTab, m_bTabFlash;
+
int m_iLastEventType;
time_t m_lastEventTime;
int m_iRealAvatarHeight;
@@ -329,15 +335,9 @@ public:
int m_nMax; // max message size
int m_textLen; // current text len
LONG m_ipFieldHeight;
- BOOL m_clr_added;
- BOOL m_fIsReattach;
WPARAM m_wParam; // used for "delayed" actions like moved splitters in minimized windows
LPARAM m_lParam;
int m_iHaveRTLLang;
- BOOL m_fInsertMode;
- bool m_fkeyProcessed;
- bool m_fEditNotesActive;
- bool m_bActualHistory;
CInfoPanel m_pPanel;
CContactCache *m_cache;
@@ -345,8 +345,6 @@ public:
CProxyWindow *m_pWnd; // proxy window object (win7+, for taskbar support).
// ALWAYS check this pointer before using it, it is not guaranteed to exist.
- bool m_bIsAutosizingInput;
- bool m_fLimitedUpdate;
DWORD m_iSplitterSaved;
LONG m_iInputAreaHeight;
POINT m_ptTipActivation;
@@ -356,12 +354,15 @@ public:
public:
CTabBaseDlg(int iDialogId);
+ virtual ~CTabBaseDlg() override;
virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override;
virtual CThumbBase* CreateThumb(CProxyWindow*) const = 0;
virtual void ClearLog() = 0;
+ static LONG_PTR CALLBACK StatusBarSubclassProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
+
HWND DM_CreateClist();
void DM_EventAdded(WPARAM wParam, LPARAM lParam);
void DM_InitRichEdit();
@@ -439,6 +440,7 @@ class CSrmmWindow : public CTabBaseDlg
void ReplayQueue();
public:
+ int m_iMultiSplit;
int msgTop, rcLogBottom;
wchar_t *wszInitialText;
bool m_bActivate, m_bWantPopup;
@@ -464,6 +466,9 @@ class CChatRoomDlg : public CTabBaseDlg
CCtrlButton m_btnBold, m_btnItalic, m_btnUnderline, m_btnColor, m_btnBkColor;
CCtrlListBox m_list;
+ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+ static LRESULT CALLBACK NicklistSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+
virtual CThumbBase* CreateThumb(CProxyWindow *pProxy) const override;
virtual void ClearLog() override;
@@ -954,10 +959,6 @@ struct SIDEBARITEM {
#define ID_EXTBKSIDEBARBG 24
#define ID_EXTBK_LAST 24
-#define SESSIONTYPE_ANY 0
-#define SESSIONTYPE_IM 1
-#define SESSIONTYPE_CHAT 2
-
#define DEFAULT_SIDEBARWIDTH 30
#define THEME_READ_FONTS 1
diff --git a/plugins/TabSRMM/src/tabctrl.cpp b/plugins/TabSRMM/src/tabctrl.cpp
index 0de6d200fe..253ff90468 100644
--- a/plugins/TabSRMM/src/tabctrl.cpp
+++ b/plugins/TabSRMM/src/tabctrl.cpp
@@ -184,7 +184,7 @@ static void DrawItem(TabControlData *tabdat, HDC dc, RECT *rcItem, int nHint, in
else if (dat->m_bCanFlashTab)
hIcon = dat->m_iFlashIcon;
else {
- if (dat->m_bType == SESSIONTYPE_CHAT && dat->m_iFlashIcon) {
+ if (dat->isChat() && dat->m_iFlashIcon) {
hIcon = dat->m_iFlashIcon;
int sizeY;
@@ -829,7 +829,7 @@ page_done:
FillRect(hdc, &rcPage, CSkin::m_BrushBack);
rcPage.top = 0;
}
- GetWindowRect(GetDlgItem(tabdat->helperDat->GetHwnd(), tabdat->helperDat->m_bType == SESSIONTYPE_IM ? IDC_LOG : IDC_LOG), &rcLog);
+ GetWindowRect(GetDlgItem(tabdat->helperDat->GetHwnd(), IDC_LOG), &rcLog);
pt.y = rcLog.top;
pt.x = rcLog.left;
@@ -1475,7 +1475,7 @@ int TSAPI RegisterTabCtrlClass(void)
RegisterClassEx(&wc);
wc.lpszClassName = L"TSStatusBarClass";
- wc.lpfnWndProc = StatusBarSubclassProc;
+ wc.lpfnWndProc = &CTabBaseDlg::StatusBarSubclassProc;
wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
wc.cbWndExtra = sizeof(void*);
wc.style = CS_GLOBALCLASS | CS_DBLCLKS | CS_PARENTDC;
diff --git a/plugins/TabSRMM/src/taskbar.cpp b/plugins/TabSRMM/src/taskbar.cpp
index 1073cb0271..4d3f846610 100644
--- a/plugins/TabSRMM/src/taskbar.cpp
+++ b/plugins/TabSRMM/src/taskbar.cpp
@@ -326,8 +326,8 @@ void CProxyWindow::sendPreview()
RECT rcContainer, rcTemp, rcRich, rcLog;
HDC hdc, dc;
int twips = (int)(15.0f / PluginConfig.m_DPIscaleY);
- bool fIsChat = m_dat->m_bType != SESSIONTYPE_IM;
- HWND hwndRich = ::GetDlgItem(m_dat->GetHwnd(), fIsChat ? IDC_LOG : IDC_LOG);
+ bool fIsChat = m_dat->isChat();
+ HWND hwndRich = ::GetDlgItem(m_dat->GetHwnd(), IDC_LOG);
LONG cx, cy;
POINT ptOrigin = { 0 }, ptBottom;
@@ -357,7 +357,7 @@ void CProxyWindow::sendPreview()
pt = m_dat->m_pContainer->ptLogSaved;
}
- ::GetWindowRect(::GetDlgItem(m_dat->m_pContainer->hwndActive, dat_active->m_bType == SESSIONTYPE_IM ? IDC_LOG : IDC_LOG), &rcTemp);
+ ::GetWindowRect(::GetDlgItem(m_dat->m_pContainer->hwndActive, IDC_LOG), &rcTemp);
ptBottom.x = rcTemp.left;
ptBottom.y = rcTemp.bottom;
::ScreenToClient(m_dat->m_pContainer->hwnd, &ptBottom);
@@ -679,7 +679,7 @@ void CThumbBase::renderBase()
m_rcIcon.top += (lIconSize + 3);
CSkin::RenderText(m_hdc, m_dat->m_hTheme, m_dat->m_wszStatus, &m_rcIcon, m_dtFlags | DT_CENTER | DT_WORD_ELLIPSIS, 10, 0, true);
- if (m_dat->m_dwUnread && SESSIONTYPE_IM == m_dat->m_bType) {
+ if (m_dat->m_dwUnread && !m_dat->isChat()) {
wchar_t tszTemp[30];
m_rcIcon.top += m_sz.cy;
@@ -698,7 +698,7 @@ void CThumbBase::renderBase()
*/
void CThumbBase::setupRect()
{
- if (SESSIONTYPE_IM == m_pWnd->getDat()->m_bType) {
+ if (!m_pWnd->getDat()->isChat()) {
m_rcTop = m_rc;
m_rcBottom = m_rc;
m_rcBottom.top = m_rc.bottom - (2 * (m_rcBottom.bottom / 5)) - 2;
diff --git a/plugins/TabSRMM/src/themes.cpp b/plugins/TabSRMM/src/themes.cpp
index b42d334f86..f57c7ab7ec 100644
--- a/plugins/TabSRMM/src/themes.cpp
+++ b/plugins/TabSRMM/src/themes.cpp
@@ -1957,7 +1957,7 @@ UINT CSkin::NcCalcRichEditFrame(HWND hwnd, const CTabBaseDlg *mwdat, UINT skinID
return orig;
}
if ((mwdat->m_sendMode & SMODE_MULTIPLE || mwdat->m_sendMode & SMODE_CONTAINER ||
- mwdat->m_fEditNotesActive || mwdat->m_sendMode & SMODE_SENDLATER) && skinID == ID_EXTBKINPUTAREA) {
+ mwdat->m_bEditNotesActive || mwdat->m_sendMode & SMODE_SENDLATER) && skinID == ID_EXTBKINPUTAREA) {
InflateRect(&nccp->rgrc[0], -1, -1);
return WVR_REDRAW;
}
@@ -1975,7 +1975,7 @@ UINT CSkin::DrawRichEditFrame(HWND hwnd, const CTabBaseDlg *mwdat, UINT skinID,
if (0 == mwdat)
return result;
- BOOL isEditNotesReason = ((mwdat->m_fEditNotesActive) && (skinID == ID_EXTBKINPUTAREA));
+ BOOL isEditNotesReason = ((mwdat->m_bEditNotesActive) && (skinID == ID_EXTBKINPUTAREA));
BOOL isSendLaterReason = ((mwdat->m_sendMode & SMODE_SENDLATER) && (skinID == ID_EXTBKINPUTAREA));
BOOL isMultipleReason = ((skinID == ID_EXTBKINPUTAREA) && (mwdat->m_sendMode & SMODE_MULTIPLE || mwdat->m_sendMode & SMODE_CONTAINER));
@@ -2205,14 +2205,14 @@ void CTabBaseDlg::RenderToolbarBG(HDC hdc, const RECT &rcWindow) const
POINT pt;
if (!(m_pContainer->dwFlags & CNT_BOTTOMTOOLBAR)) {
- ::GetWindowRect(::GetDlgItem(m_hwnd, m_bType == SESSIONTYPE_CHAT ? IDC_LOG : IDC_LOG), &rc);
+ ::GetWindowRect(m_log.GetHwnd(), &rc);
pt.y = rc.bottom + 0;
::ScreenToClient(m_hwnd, &pt);
rcToolbar.top = pt.y;
rcToolbar.left = 0;
rcToolbar.right = rcWindow.right;
- if (m_bType == SESSIONTYPE_IM) {
+ if (!isChat()) {
if (m_dwFlags & MWF_ERRORSTATE)
rcToolbar.top += ERRORPANEL_HEIGHT;
if (m_dwFlagsEx & MWF_SHOW_SCROLLINGDISABLED || m_bNotOnList) {
@@ -2225,13 +2225,13 @@ void CTabBaseDlg::RenderToolbarBG(HDC hdc, const RECT &rcWindow) const
}
}
- ::GetWindowRect(::GetDlgItem(m_hwnd, m_bType == SESSIONTYPE_CHAT ? IDC_MESSAGE : IDC_MESSAGE), &rc);
+ ::GetWindowRect(m_message.GetHwnd(), &rc);
pt.y = rc.top - (m_bIsAutosizingInput ? 1 : 2);
::ScreenToClient(m_hwnd, &pt);
rcToolbar.bottom = pt.y;
}
else {
- GetWindowRect(::GetDlgItem(m_hwnd, m_bType == SESSIONTYPE_CHAT ? IDC_MESSAGE : IDC_MESSAGE), &rc);
+ GetWindowRect(m_message.GetHwnd(), &rc);
pt.y = rc.bottom - 2;
ScreenToClient(m_hwnd, &pt);
rcToolbar.top = pt.y + 1;
@@ -2454,7 +2454,7 @@ void CSkin::extractSkinsAndLogo(bool fForceOverwrite) const
void CTabBaseDlg::UpdateToolbarBG()
{
RECT rcUpdate, rcTmp;
- ::GetWindowRect(::GetDlgItem(m_hwnd, m_bType == SESSIONTYPE_IM ? IDC_LOG : IDC_LOG), &rcTmp);
+ ::GetWindowRect(m_log.GetHwnd(), &rcTmp);
POINT pt;
pt.x = rcTmp.left;
diff --git a/plugins/TabSRMM/src/utils.cpp b/plugins/TabSRMM/src/utils.cpp
index e160b81b3b..2e2a6f690d 100644
--- a/plugins/TabSRMM/src/utils.cpp
+++ b/plugins/TabSRMM/src/utils.cpp
@@ -159,7 +159,7 @@ invalid_code:
}
if (!(dwFlags & MWF_LOG_TEXTFORMAT) || message.find(L"://") != message.npos) {
- dat->m_clr_added = clr_was_added ? TRUE : FALSE;
+ dat->m_bClrAdded = clr_was_added;
return(message.c_str());
}
@@ -226,7 +226,7 @@ ok:
message.insert(beginmark, L"%%%");
message.replace(beginmark, 4, formatting_strings_begin[index]);
}
- dat->m_clr_added = clr_was_added ? TRUE : FALSE;
+ dat->m_bClrAdded = clr_was_added;
return(message.c_str());
}
diff --git a/src/core/stdmsg/src/chat_window.cpp b/src/core/stdmsg/src/chat_window.cpp
index 8af9e7db0c..b66912c87d 100644
--- a/src/core/stdmsg/src/chat_window.cpp
+++ b/src/core/stdmsg/src/chat_window.cpp
@@ -827,7 +827,6 @@ static void __cdecl phase2(void * lParam)
CChatRoomDlg::CChatRoomDlg(SESSION_INFO *si) :
CSrmmBaseDialog(g_hInst, g_Settings.bTabsEnable ? IDD_CHANNEL_TAB : IDD_CHANNEL),
- m_si(si),
m_nickList(this, IDC_LIST),
m_message(this, IDC_MESSAGE),
m_log(this, IDC_LOG),
@@ -849,6 +848,7 @@ CChatRoomDlg::CChatRoomDlg(SESSION_INFO *si) :
m_splitterX(this, IDC_SPLITTERX),
m_splitterY(this, IDC_SPLITTERY)
{
+ m_si = si;
m_pLog = &m_log;
m_pEntry = &m_message;
m_hContact = si->hContact;
diff --git a/src/core/stdmsg/src/stdafx.h b/src/core/stdmsg/src/stdafx.h
index 9fe02becd0..076d743dad 100644
--- a/src/core/stdmsg/src/stdafx.h
+++ b/src/core/stdmsg/src/stdafx.h
@@ -177,8 +177,6 @@ class CChatRoomDlg : public CSrmmBaseDialog
HWND m_hwndStatus;
- SESSION_INFO *m_si;
-
CCtrlEdit m_message, m_log;
CCtrlListBox m_nickList;
CCtrlButton m_btnOk;
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def
index 1c3331b386..58a81567f4 100644
--- a/src/mir_app/src/mir_app.def
+++ b/src/mir_app/src/mir_app.def
@@ -407,3 +407,4 @@ ProtoGetAvatarMimeType @401
?DlgProc@CSrmmBaseDialog@@MAEHIIJ@Z @408 NONAME
??2CSrmmBaseDialog@@SAPAXI@Z @409 NONAME
??3CSrmmBaseDialog@@SAXPAX@Z @410 NONAME
+?isChat@CSrmmBaseDialog@@QBE_NXZ @411 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def
index 7d21ef797f..4616073840 100644
--- a/src/mir_app/src/mir_app64.def
+++ b/src/mir_app/src/mir_app64.def
@@ -407,3 +407,4 @@ ProtoGetAvatarMimeType @401
?DlgProc@CSrmmBaseDialog@@MEAA_JI_K_J@Z @408 NONAME
??2CSrmmBaseDialog@@SAPEAX_K@Z @409 NONAME
??3CSrmmBaseDialog@@SAXPEAX@Z @410 NONAME
+?isChat@CSrmmBaseDialog@@QEBA_NXZ @411 NONAME
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp
index 5968514838..65f6c65d3c 100644
--- a/src/mir_app/src/srmm_base.cpp
+++ b/src/mir_app/src/srmm_base.cpp
@@ -27,6 +27,7 @@ extern HCURSOR g_hCurHyperlinkHand;
CSrmmBaseDialog::CSrmmBaseDialog(HINSTANCE hInst, int idDialog) :
CDlgBase(hInst, idDialog),
+ m_si(nullptr),
m_pLog(nullptr),
m_pEntry(nullptr),
m_hContact(0)