[Winmerge-svn] SF.net SVN: winmerge: [4801] trunk
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <ki...@us...> - 2007-11-28 18:05:06
|
Revision: 4801 http://winmerge.svn.sourceforge.net/winmerge/?rev=4801&view=rev Author: kimmov Date: 2007-11-28 10:05:01 -0800 (Wed, 28 Nov 2007) Log Message: ----------- PATCH: [ 1837457 ] TouchPad scrolling patches Modified Paths: -------------- trunk/Docs/Users/ChangeLog.txt trunk/Src/Common/SplitterWndEx.cpp trunk/Src/LocationView.cpp trunk/Src/LocationView.h trunk/Src/MergeEditView.cpp trunk/Src/MergeEditView.h Modified: trunk/Docs/Users/ChangeLog.txt =================================================================== --- trunk/Docs/Users/ChangeLog.txt 2007-11-28 15:44:49 UTC (rev 4800) +++ trunk/Docs/Users/ChangeLog.txt 2007-11-28 18:05:01 UTC (rev 4801) @@ -3,6 +3,7 @@ to Subversion revision numbers (rXXXXX). WinMerge 2.7.5.8 + Touchpad scrolling improvements (#1837457) BugFix: Values with "," inside could break the CSV report (#1831512) BugFix: Failed to create backup file in folder compare (#1835283) BugFix: Revert difference highlight code to 2.6.12 version (#1811695) Modified: trunk/Src/Common/SplitterWndEx.cpp =================================================================== --- trunk/Src/Common/SplitterWndEx.cpp 2007-11-28 15:44:49 UTC (rev 4800) +++ trunk/Src/Common/SplitterWndEx.cpp 2007-11-28 18:05:01 UTC (rev 4801) @@ -59,6 +59,10 @@ void CSplitterWndEx::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) { + // Ignore scroll events sent directly to the splitter (i.e. not from a + // scroll bar) + if (pScrollBar == NULL) + return; // maintain original synchronization functionality (all panes above the scrollbar) CSplitterWnd::OnHScroll(nSBCode, nPos, pScrollBar); @@ -106,6 +110,10 @@ void CSplitterWndEx::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) { + // Ignore scroll events sent directly to the splitter (i.e. not from a + // scroll bar) + if (pScrollBar == NULL) + return; // maintain original synchronization functionality (all panes left from the scrollbar) CSplitterWnd::OnVScroll(nSBCode, nPos, pScrollBar); @@ -128,7 +136,7 @@ if(row==curRow) continue; - CScrollBar* curBar = GetPane(0, curRow)->GetScrollBarCtrl(SB_VERT); + CScrollBar* curBar = GetPane(curRow, 0)->GetScrollBarCtrl(SB_VERT); double temp = ((double) pScrollBar->GetScrollPos()) * curBar->GetScrollLimit() + oldLimit/2; int newPos = (int) (temp/oldLimit); Modified: trunk/Src/LocationView.cpp =================================================================== --- trunk/Src/LocationView.cpp 2007-11-28 15:44:49 UTC (rev 4800) +++ trunk/Src/LocationView.cpp 2007-11-28 18:05:01 UTC (rev 4801) @@ -225,6 +225,7 @@ ON_WM_CONTEXTMENU() ON_WM_CLOSE() ON_WM_SIZE() + ON_WM_VSCROLL() ON_WM_ERASEBKGND() ON_WM_PAINT() //}}AFX_MSG_MAP @@ -647,6 +648,24 @@ } /** + * @brief Handle scroll events sent directly. + * + */ +void CLocationView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) +{ + if (pScrollBar == NULL) + { + // Scroll did not come frome a scroll bar + // Send it to the right view instead + CMergeDoc *pDoc = GetDocument(); + pDoc->GetRightView()->SendMessage(WM_VSCROLL, + MAKELONG(nSBCode, nPos), (LPARAM)NULL); + return; + } + CView::OnVScroll (nSBCode, nPos, pScrollBar); +} + +/** * Show context menu and handle user selection. */ void CLocationView::OnContextMenu(CWnd* pWnd, CPoint point) Modified: trunk/Src/LocationView.h =================================================================== --- trunk/Src/LocationView.h 2007-11-28 15:44:49 UTC (rev 4800) +++ trunk/Src/LocationView.h 2007-11-28 18:05:01 UTC (rev 4801) @@ -91,6 +91,7 @@ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); afx_msg void OnClose(); + afx_msg void OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnPaint(); Modified: trunk/Src/MergeEditView.cpp =================================================================== --- trunk/Src/MergeEditView.cpp 2007-11-28 15:44:49 UTC (rev 4800) +++ trunk/Src/MergeEditView.cpp 2007-11-28 18:05:01 UTC (rev 4801) @@ -173,6 +173,7 @@ ON_UPDATE_COMMAND_UI(ID_STATUS_MERGINGMODE, OnUpdateMergingStatus) ON_COMMAND(ID_FILE_CLOSE, OnWindowClose) ON_WM_VSCROLL () + ON_WM_HSCROLL () ON_COMMAND(ID_EDIT_COPY_LINENUMBERS, OnEditCopyLineNumbers) ON_UPDATE_COMMAND_UI(ID_EDIT_COPY_LINENUMBERS, OnUpdateEditCopyLinenumbers) ON_COMMAND(ID_VIEW_LINEDIFFS, OnViewLineDiffs) @@ -2569,10 +2570,45 @@ } /** + * @brief Check for horizontal scroll. Re-route to CSplitterEx if not from + * a scroll bar. + */ +void CMergeEditView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) +{ + if (pScrollBar == NULL) + { + // Scroll did not come frome a scroll bar + // Find the appropriate scroll bar + // and send the message to the splitter window instead + // The event should eventually come back here but with a valid scrollbar + // Along the way it will be propagated to other windows that need it + CSplitterWnd *pSplitterWnd = GetParentSplitter(this, FALSE); + CScrollBar* curBar = this->GetScrollBarCtrl(SB_HORZ); + pSplitterWnd->SendMessage(WM_HSCROLL, + MAKELONG(nSBCode, nPos), (LPARAM)curBar->m_hWnd); + return; + } + CCrystalTextView::OnHScroll (nSBCode, nPos, pScrollBar); +} + +/** * @brief When view is scrolled using scrollbars update location pane. */ void CMergeEditView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) { + if (pScrollBar == NULL) + { + // Scroll did not come frome a scroll bar + // Find the appropriate scroll bar + // and send the message to the splitter window instead + // The event should eventually come back here but with a valid scrollbar + // Along the way it will be propagated to other windows that need it + CSplitterWnd *pSplitterWnd = GetParentSplitter(this, FALSE); + CScrollBar* curBar = this->GetScrollBarCtrl(SB_VERT); + pSplitterWnd->SendMessage(WM_VSCROLL, + MAKELONG(nSBCode, nPos), (LPARAM)curBar->m_hWnd); + return; + } CCrystalTextView::OnVScroll (nSBCode, nPos, pScrollBar); if (nSBCode == SB_ENDSCROLL) Modified: trunk/Src/MergeEditView.h =================================================================== --- trunk/Src/MergeEditView.h 2007-11-28 15:44:49 UTC (rev 4800) +++ trunk/Src/MergeEditView.h 2007-11-28 18:05:01 UTC (rev 4801) @@ -280,6 +280,7 @@ afx_msg void OnUpdateMergingMode(CCmdUI* pCmdUI); afx_msg void OnUpdateMergingStatus(CCmdUI* pCmdUI); afx_msg void OnWindowClose(); + afx_msg void OnHScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar); afx_msg void OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar); afx_msg void OnEditCopyLineNumbers(); afx_msg void OnUpdateEditCopyLinenumbers(CCmdUI* pCmdUI); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |