diff options
author | George Hazan <ghazan@miranda.im> | 2016-12-16 16:16:21 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2016-12-16 16:16:21 +0300 |
commit | eaf0435f78ea8c0317e7f2628176c2325e95b022 (patch) | |
tree | 8a676a7e0d0fd97491c74aef9cc5da017ceff6c5 | |
parent | 4a3fcb3dbc6b928415d7b5500b4d32b795b86602 (diff) |
- GC_SAVEWNDPOS removed and replaced with class member;
- TabCtrl_* functions replaced with CCtrlPages members
-rw-r--r-- | include/m_chat_int.h | 1 | ||||
-rw-r--r-- | src/core/stdmsg/src/chat_window.cpp | 51 | ||||
-rw-r--r-- | src/core/stdmsg/src/stdafx.h | 1 | ||||
-rw-r--r-- | src/core/stdmsg/src/tabs.cpp | 40 |
4 files changed, 44 insertions, 49 deletions
diff --git a/include/m_chat_int.h b/include/m_chat_int.h index 09b435fb14..d1f83b3a15 100644 --- a/include/m_chat_int.h +++ b/include/m_chat_int.h @@ -49,7 +49,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define GC_FILTERFIX (WM_USER+111)
#define GC_CHANGEFILTERFLAG (WM_USER+112)
#define GC_SHOWFILTERMENU (WM_USER+113)
-#define GC_SAVEWNDPOS (WM_USER+115)
#define GC_CONTROL_MSG (WM_USER+116)
#define GC_REDRAWWINDOW (WM_USER+118)
#define GC_SHOWCOLORCHOOSER (WM_USER+119)
diff --git a/src/core/stdmsg/src/chat_window.cpp b/src/core/stdmsg/src/chat_window.cpp index 75bba991a2..cc13f1e28d 100644 --- a/src/core/stdmsg/src/chat_window.cpp +++ b/src/core/stdmsg/src/chat_window.cpp @@ -216,7 +216,7 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, if (wParam == VK_TAB && isCtrl && !isShift) { // CTRL-TAB (switch tab/window) if (g_Settings.bTabsEnable) - SendMessage(hwndDlg, GC_SWITCHNEXTTAB, 0, 0); + SendMessage(GetParent(GetParent(hwndDlg)), GC_SWITCHNEXTTAB, 0, 0); else pci->ShowRoom(SM_GetNextWindow(dat->si), WINDOW_VISIBLE, TRUE); return TRUE; @@ -224,7 +224,7 @@ static LRESULT CALLBACK MessageSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, if (wParam == VK_TAB && isCtrl && isShift) { // CTRL_SHIFT-TAB (switch tab/window) if (g_Settings.bTabsEnable) - SendMessage(hwndDlg, GC_SWITCHPREVTAB, 0, 0); + SendMessage(GetParent(GetParent(hwndDlg)), GC_SWITCHPREVTAB, 0, 0); else pci->ShowRoom(SM_GetPrevWindow(dat->si), WINDOW_VISIBLE, TRUE); return TRUE; @@ -946,7 +946,7 @@ void CChatRoomDlg::OnInitDialog() void CChatRoomDlg::OnDestroy() { NotifyLocalWinEvent(m_si->hContact, m_hwnd, MSG_WINDOW_EVT_CLOSING); - SendMessage(m_hwnd, GC_SAVEWNDPOS, 0, 0); + SaveWindowPosition(true); m_si->pDlg = NULL; m_si->hWnd = NULL; @@ -1167,6 +1167,25 @@ void CChatRoomDlg::SetWindowPosition() } } +void CChatRoomDlg::SaveWindowPosition(bool bUpdateSession) +{ + WINDOWPLACEMENT wp = { 0 }; + wp.length = sizeof(wp); + GetWindowPlacement(getCaptionWindow(), &wp); + + g_Settings.iX = wp.rcNormalPosition.left; + g_Settings.iY = wp.rcNormalPosition.top; + g_Settings.iWidth = wp.rcNormalPosition.right - wp.rcNormalPosition.left; + g_Settings.iHeight = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top; + + if (bUpdateSession) { + m_si->iX = g_Settings.iX; + m_si->iY = g_Settings.iY; + m_si->iWidth = g_Settings.iWidth; + m_si->iHeight = g_Settings.iHeight; + } +} + INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { SESSION_INFO *s; @@ -1275,26 +1294,6 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) } return TRUE; - case GC_SAVEWNDPOS: - { - WINDOWPLACEMENT wp = { 0 }; - wp.length = sizeof(wp); - GetWindowPlacement(getCaptionWindow(), &wp); - - g_Settings.iX = wp.rcNormalPosition.left; - g_Settings.iY = wp.rcNormalPosition.top; - g_Settings.iWidth = wp.rcNormalPosition.right - wp.rcNormalPosition.left; - g_Settings.iHeight = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top; - - if (!lParam) { - m_si->iX = g_Settings.iX; - m_si->iY = g_Settings.iY; - m_si->iWidth = g_Settings.iWidth; - m_si->iHeight = g_Settings.iHeight; - } - } - break; - case WM_SIZE: if (wParam == SIZE_MAXIMIZED) PostMessage(m_hwnd, GC_SCROLLTOBOTTOM, 0, 0); @@ -1342,7 +1341,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) InvalidateRect(m_si->hwndStatus, NULL, TRUE); RedrawWindow(m_message.GetHwnd(), NULL, NULL, RDW_INVALIDATE); RedrawWindow(m_btnOk.GetHwnd(), NULL, NULL, RDW_INVALIDATE); - SendMessage(m_hwnd, GC_SAVEWNDPOS, 0, 1); + SaveWindowPosition(false); } return TRUE; @@ -1486,7 +1485,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) case SESSION_TERMINATE: if (!g_Settings.bTabsEnable) { - SendMessage(m_hwnd, GC_SAVEWNDPOS, 0, 0); + SaveWindowPosition(true); if (db_get_b(NULL, CHAT_MODULE, "SavePosition", 0)) { db_set_dw(m_si->hContact, CHAT_MODULE, "roomx", m_si->iX); db_set_dw(m_si->hContact, CHAT_MODULE, "roomy", m_si->iY); @@ -1850,7 +1849,7 @@ LABEL_SHOWWINDOW: break; case WM_MOVE: - SendMessage(m_hwnd, GC_SAVEWNDPOS, 0, 1); + SaveWindowPosition(false); break; case WM_GETMINMAXINFO: diff --git a/src/core/stdmsg/src/stdafx.h b/src/core/stdmsg/src/stdafx.h index 2b0f23a72c..67baab68f7 100644 --- a/src/core/stdmsg/src/stdafx.h +++ b/src/core/stdmsg/src/stdafx.h @@ -187,6 +187,7 @@ class CChatRoomDlg : public CDlgBase { return (g_Settings.bTabsEnable) ? GetParent(m_hwndParent) : m_hwnd;
}
+ void SaveWindowPosition(bool bUpdateSession);
void SetWindowPosition();
public:
diff --git a/src/core/stdmsg/src/tabs.cpp b/src/core/stdmsg/src/tabs.cpp index 288ba61d18..520e778913 100644 --- a/src/core/stdmsg/src/tabs.cpp +++ b/src/core/stdmsg/src/tabs.cpp @@ -222,7 +222,7 @@ void CTabbedWindow::AddPage(SESSION_INFO *si, int insertAt) TCITEM tci; tci.mask = TCIF_PARAM; - int tabCount = TabCtrl_GetItemCount(m_tab.GetHwnd()); + int tabCount = m_tab.GetCount(); // does the tab already exist? for (int i = 0; i < tabCount; i++) { @@ -323,14 +323,14 @@ INT_PTR CTabbedWindow::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) case GC_SWITCHNEXTTAB: { - int total = TabCtrl_GetItemCount(m_tab.GetHwnd()); + int total = m_tab.GetCount(); int i = TabCtrl_GetCurSel(m_tab.GetHwnd()); - if (i != -1 && total != -1 && total != 1) { + if (i != -1 && total > 1) { if (i < total - 1) i++; else i = 0; - TabCtrl_SetCurSel(m_tab.GetHwnd(), i); + m_tab.ActivatePage(i); TabClicked(); } } @@ -338,14 +338,14 @@ INT_PTR CTabbedWindow::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) case GC_SWITCHPREVTAB: { - int total = TabCtrl_GetItemCount(m_tab.GetHwnd()); + int total = m_tab.GetCount(); int i = TabCtrl_GetCurSel(m_tab.GetHwnd()); - if (i != -1 && total != -1 && total != 1) { + if (i != -1 && total >= 1) { if (i > 0) i--; else i = total - 1; - TabCtrl_SetCurSel(m_tab.GetHwnd(), i); + m_tab.ActivatePage(i); TabClicked(); } } @@ -353,10 +353,10 @@ INT_PTR CTabbedWindow::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) case GC_SWITCHTAB: { - int total = TabCtrl_GetItemCount(m_tab.GetHwnd()); + int total = m_tab.GetCount(); int i = TabCtrl_GetCurSel(m_tab.GetHwnd()); if (i != -1 && total != -1 && total != 1 && i != lParam && total > lParam) { - TabCtrl_SetCurSel(m_tab.GetHwnd(), lParam); + m_tab.ActivatePage(i); TabClicked(); } } @@ -365,7 +365,7 @@ INT_PTR CTabbedWindow::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) case GC_REMOVETAB: { int i = -1; - int tabCount = TabCtrl_GetItemCount(m_tab.GetHwnd()); + int tabCount = m_tab.GetCount(); if (lParam) { for (i = 0; i < tabCount; i++) { TCITEM tci = {}; @@ -378,7 +378,7 @@ INT_PTR CTabbedWindow::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) else i = TabCtrl_GetCurSel(m_tab.GetHwnd()); if (i != -1 && i < tabCount) { - TabCtrl_DeleteItem(m_tab.GetHwnd(), i); + m_tab.RemovePage(i); TCITEM id = {}; id.mask = TCIF_PARAM; @@ -439,12 +439,11 @@ INT_PTR CTabbedWindow::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) TabCtrl_GetItem(m_tab.GetHwnd(), begin, &tci); SESSION_INFO *s = (SESSION_INFO*)tci.lParam; if (s) { - TabCtrl_DeleteItem(m_tab.GetHwnd(), begin); - - SendMessage(m_hwnd, GC_ADDTAB, end, (LPARAM)s); + m_tab.RemovePage(begin); + AddPage(s); // fix the "fixed" positions - int tabCount = TabCtrl_GetItemCount(m_tab.GetHwnd()); + int tabCount = m_tab.GetCount(); for (int i = 0; i < tabCount; i++) { TabCtrl_GetItem(m_tab.GetHwnd(), i, &tci); s = (SESSION_INFO*)tci.lParam; @@ -510,23 +509,20 @@ INT_PTR CTabbedWindow::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) if (TabCtrl_GetCurSel(GetDlgItem(m_hwnd, IDC_TAB)) == i) PostMessage(m_hwnd, WM_COMMAND, MAKEWPARAM(IDCANCEL, BN_CLICKED), 0); else - TabCtrl_DeleteItem(GetDlgItem(m_hwnd, IDC_TAB), i); + m_tab.RemovePage(i); break; case ID_CLOSEOTHER: { - int tabCount = TabCtrl_GetItemCount(GetDlgItem(m_hwnd, IDC_TAB)) - 1; + int tabCount = m_tab.GetCount()-1; if (tabCount > 0) { - if (TabCtrl_GetCurSel(GetDlgItem(m_hwnd, IDC_TAB)) != i) - if (s) - pci->ShowRoom(s, WINDOW_VISIBLE, TRUE); - for (tabCount; tabCount >= 0; tabCount--) { if (tabCount == i) continue; - TabCtrl_DeleteItem(GetDlgItem(m_hwnd, IDC_TAB), tabCount); + m_tab.RemovePage(tabCount); } + m_tab.ActivatePage(0); } } break; |