Revision: 3879
http://svn.sourceforge.net/winmerge/?rev=3879&view=rev
Author: galh
Date: 2006-11-30 22:56:42 -0800 (Thu, 30 Nov 2006)
Log Message:
-----------
[ 1597814 ] 'Wrap Lines' + 'Next Diff' Bug
Modified Paths:
--------------
trunk/Src/Changes.txt
trunk/Src/MergeEditView.cpp
Modified: trunk/Src/Changes.txt
===================================================================
--- trunk/Src/Changes.txt 2006-11-30 19:42:04 UTC (rev 3878)
+++ trunk/Src/Changes.txt 2006-12-01 06:56:42 UTC (rev 3879)
@@ -2,6 +2,10 @@
Add new items to top.
(This summarizes all changes to all files under Src, including Src\Languages.)
+2006-12-01 Gal
+ PATCH: [ 1597814 ] 'Wrap Lines' + 'Next Diff' Bug
+ Src: MergeEditView.cpp
+
2006-11-30 Kimmo
PATCH: [ 1605682 ] Add Syntax Highlight option to config log
Src: ConfigLog.cpp ConfigLog.h MainFrm.cpp
Modified: trunk/Src/MergeEditView.cpp
===================================================================
--- trunk/Src/MergeEditView.cpp 2006-11-30 19:42:04 UTC (rev 3878)
+++ trunk/Src/MergeEditView.cpp 2006-12-01 06:56:42 UTC (rev 3879)
@@ -1467,19 +1467,25 @@
if (bScroll)
{
+ int nDiffStart = GetSubLineIndex(curDiff.dbegin0);
+ int nDiffEnd = GetSubLineIndex(curDiff.dend0);
+
// If diff first line outside current view - context OR
// if diff last line outside current view - context OR
// if diff is bigger than screen
- if ((ptStart.y < m_nTopLine + CONTEXT_LINES_ABOVE) ||
- (ptEnd.y >= m_nTopLine + GetScreenLines() - CONTEXT_LINES_BELOW) ||
- (ptEnd.y - ptStart.y) >= GetScreenLines())
+ // if diff is bigger than screen when word wrap enabled
+ if ((nDiffStart < m_nTopSubLine + CONTEXT_LINES_ABOVE) ||
+ (nDiffEnd >= m_nTopSubLine + GetScreenLines() - CONTEXT_LINES_BELOW) ||
+ (nDiffEnd - nDiffStart) >= GetScreenLines() ||
+ (nDiffStart + GetSubLines(ptStart.y)) >= GetScreenLines())
{
- int line = ptStart.y - CONTEXT_LINES_ABOVE;
- if (line < 0)
- line = 0;
-
- pCurrentView->ScrollToLine(line);
- pOtherView->ScrollToLine(line);
+ int nLine = nDiffStart;
+ if (nLine > CONTEXT_LINES_ABOVE)
+ {
+ nLine -= CONTEXT_LINES_ABOVE;
+ }
+ pCurrentView->ScrollToSubLine(nLine);
+ pOtherView->ScrollToSubLine(nLine);
}
pCurrentView->SetCursorPos(ptStart);
pOtherView->SetCursorPos(ptStart);
@@ -2559,7 +2565,7 @@
/**
* @brief When view is scrolled using scrollbars update location pane.
*/
-void CMergeEditView::OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar)
+void CMergeEditView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar)
{
CCrystalTextView::OnVScroll (nSBCode, nPos, pScrollBar);
@@ -2893,18 +2899,17 @@
BOOL CMergeEditView::IsDiffVisible(int nDiff)
{
CMergeDoc *pd = GetDocument();
- CPoint ptStart, ptEnd;
DIFFRANGE diff;
pd->m_diffList.GetDiff(nDiff, diff);
- ptStart.x = 0;
- ptStart.y = diff.dbegin0;
- ptEnd.x = 0;
- ptEnd.y = diff.dend0;
+
+ int nDiffStart = GetSubLineIndex(diff.dbegin0);
+ int nDiffEnd = GetSubLineIndex(diff.dend0);
- if (ptStart.y < m_nTopLine ||
- (ptEnd.y >= m_nTopLine + GetScreenLines()) ||
- (ptEnd.y - ptStart.y) >= GetScreenLines())
+ if ((nDiffStart < m_nTopSubLine) ||
+ (nDiffEnd >= m_nTopSubLine + GetScreenLines()) ||
+ (nDiffEnd - nDiffStart) >= GetScreenLines() ||
+ (nDiffStart + GetSubLines(diff.dbegin0)) >= GetScreenLines())
{
return FALSE;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|