From d2ea776a534899737b8f4c541d026deb5c95edf0 Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Sat, 5 Jan 2013 11:43:23 +0100 Subject: [PATCH] When taking over changed blocks, make sure previous (non empty) line have an EOL set Based on TortoiseSVN revision 23786. Signed-off-by: Sven Strickroth --- src/TortoiseMerge/BottomView.cpp | 26 ++++++++++++++++++++++++++ src/TortoiseMerge/RightView.cpp | 12 ++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/TortoiseMerge/BottomView.cpp b/src/TortoiseMerge/BottomView.cpp index 566bd10f6..4d9762e31 100644 --- a/src/TortoiseMerge/BottomView.cpp +++ b/src/TortoiseMerge/BottomView.cpp @@ -66,6 +66,19 @@ void CBottomView::UseBlock(CBaseView * pwndView, int nFirstViewLine, int nLastVi SetViewData(viewLine, lineData); } + // make sure previous (non empty) line have EOL set + for (int nCheckViewLine = nFirstViewLine-1; nCheckViewLine > 0; nCheckViewLine--) + { + if (!IsViewLineEmpty(nCheckViewLine)) + { + if (GetViewLineEnding(nCheckViewLine) == EOL_NOENDING) + { + SetViewLineEnding(nCheckViewLine, lineendings); + } + break; + } + } + int nRemovedLines = CleanEmptyLines(); SaveUndoStep(); UpdateViewLineNumbers(); @@ -108,6 +121,19 @@ void CBottomView::UseBothBlocks(CBaseView * pwndFirst, CBaseView * pwndLast) pwndFirst->SetViewState(viewLine, DIFFSTATE_YOURSADDED); // this is improper (may be DIFFSTATE_THEIRSADDED) but seems not to produce any visible bug } } + // make sure previous (non empty) line have EOL set + for (int nCheckViewLine = nFirstViewLine-1; nCheckViewLine > 0; nCheckViewLine--) + { + if (!IsViewLineEmpty(nCheckViewLine)) + { + if (GetViewLineEnding(nCheckViewLine) == EOL_NOENDING) + { + SetViewLineEnding(nCheckViewLine, lineendings); + } + break; + } + } + SaveUndoStep(); // use (insert) last block diff --git a/src/TortoiseMerge/RightView.cpp b/src/TortoiseMerge/RightView.cpp index 4832b076f..419778fcd 100644 --- a/src/TortoiseMerge/RightView.cpp +++ b/src/TortoiseMerge/RightView.cpp @@ -263,6 +263,18 @@ void CRightView::UseBlock(int nFirstViewLine, int nLastViewLine) } SetViewData(viewLine, line); } + // make sure previous (non empty) line have EOL set + for (int nCheckViewLine = nFirstViewLine-1; nCheckViewLine > 0; nCheckViewLine--) + { + if (!IsViewLineEmpty(nCheckViewLine)) + { + if (GetViewLineEnding(nCheckViewLine) == EOL_NOENDING) + { + SetViewLineEnding(nCheckViewLine, lineendings); + } + break; + } + } SaveUndoStep(); int nRemovedLines = CleanEmptyLines(); -- 2.11.4.GIT