[Winmerge-svn] SF.net SVN: winmerge:[6637] trunk
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <ki...@us...> - 2009-04-03 14:57:28
|
Revision: 6637 http://winmerge.svn.sourceforge.net/winmerge/?rev=6637&view=rev Author: kimmov Date: 2009-04-03 14:57:23 +0000 (Fri, 03 Apr 2009) Log Message: ----------- PATCH: [ 2669526 ] ViewColor Submitted by Matthias Mayer Show deleted in-line differences with own configurable color. Modified Paths: -------------- trunk/Docs/Users/ChangeLog.txt trunk/Src/Merge.rc trunk/Src/MergeDiffDetailView.cpp trunk/Src/MergeEditView.cpp trunk/Src/MergeEditView.h trunk/Src/OptionsDef.h trunk/Src/OptionsInit.cpp trunk/Src/PropColors.cpp trunk/Src/PropColors.h trunk/Src/SyntaxColors.cpp trunk/Src/SyntaxColors.h trunk/Src/resource.h Modified: trunk/Docs/Users/ChangeLog.txt =================================================================== --- trunk/Docs/Users/ChangeLog.txt 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Docs/Users/ChangeLog.txt 2009-04-03 14:57:23 UTC (rev 6637) @@ -4,6 +4,8 @@ http://winmerge.org/tracker/[tracker-id] WinMerge 2.13.6 + Show deleted differences in difference highlight with own + color (#2669526) Disable folder compare tree-view by default (#2714968) Bugfix: Says files are identical after making files different in another application and re-loading them (#2672737) Modified: trunk/Src/Merge.rc =================================================================== --- trunk/Src/Merge.rc 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/Merge.rc 2009-04-03 14:57:23 UTC (rev 6637) @@ -967,6 +967,9 @@ CONTROL "",IDC_WORDDIFFERENCE_COLOR,"Button",BS_OWNERDRAW | WS_TABSTOP,113,129,17,14,WS_EX_TRANSPARENT | WS_EX_CLIENTEDGE + CONTROL "",IDC_WORDDIFFERENCE_DELETED_COLOR,"Button",BS_OWNERDRAW | + WS_TABSTOP,156,130,17,14,WS_EX_TRANSPARENT | + WS_EX_CLIENTEDGE CONTROL "",IDC_WORDDIFFERENCE_TEXT_COLOR,"Button", BS_OWNERDRAW | WS_TABSTOP,199,129,17,14,WS_EX_TRANSPARENT | WS_EX_CLIENTEDGE Modified: trunk/Src/MergeDiffDetailView.cpp =================================================================== --- trunk/Src/MergeDiffDetailView.cpp 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/MergeDiffDetailView.cpp 2009-04-03 14:57:23 UTC (rev 6637) @@ -195,18 +195,17 @@ DWORD dwLineFlags = GetLineFlags(nLineIndex); if ((dwLineFlags & LF_DIFF) != LF_DIFF || (dwLineFlags & LF_MOVED) == LF_MOVED) - return 0; + return 0; // No diff if (!GetOptionsMgr()->GetBool(OPT_WORDDIFF_HIGHLIGHT)) - return 0; + return 0; // No coloring int nLineLength = GetLineLength(nLineIndex); vector<wdiff*> worddiffs; GetDocument()->GetWordDiffArray(nLineIndex, &worddiffs); - if (worddiffs.size() == 0 || (worddiffs[0]->end[0] == -1 && - worddiffs[0]->start[1] == 0 && worddiffs[0]->end[1] + 1 == nLineLength) || - (worddiffs[0]->end[1] == -1 && - worddiffs[0]->start[0] == 0 && worddiffs[0]->end[0] + 1 == nLineLength)) + if (worddiffs.size() == 0 || // Both sides are empty + (worddiffs[0]->end[0] == -1 && worddiffs[0]->end[1] + 1 == nLineLength) || // Side0 is empty + (worddiffs[0]->end[1] == -1 && worddiffs[0]->end[0] + 1 == nLineLength)) // Side1 is empty { while (!worddiffs.empty()) { @@ -226,7 +225,13 @@ pBuf[1 + i * 2].m_nCharPos = worddiffs[i]->start[m_nThisPane]; pBuf[2 + i * 2].m_nCharPos = worddiffs[i]->end[m_nThisPane] + 1; pBuf[1 + i * 2].m_nColorIndex = COLORINDEX_HIGHLIGHTTEXT1 | COLORINDEX_APPLYFORCE; - pBuf[1 + i * 2].m_nBgColorIndex = COLORINDEX_HIGHLIGHTBKGND1 | COLORINDEX_APPLYFORCE; + if (worddiffs[i]->start[0] == worddiffs[i]->end[0] + 1 || + worddiffs[i]->start[1] == worddiffs[i]->end[1] + 1) + // Case on one side char/words are inserted or deleted + pBuf[1 + i * 2].m_nBgColorIndex = COLORINDEX_HIGHLIGHTBKGND3 | COLORINDEX_APPLYFORCE; + else + pBuf[1 + i * 2].m_nBgColorIndex = COLORINDEX_HIGHLIGHTBKGND2 | COLORINDEX_APPLYFORCE; + pBuf[2 + i * 2].m_nColorIndex = COLORINDEX_NONE; pBuf[2 + i * 2].m_nBgColorIndex = COLORINDEX_NONE; } @@ -252,6 +257,8 @@ return GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF); case COLORINDEX_HIGHLIGHTTEXT2: return GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF_TEXT); + case COLORINDEX_HIGHLIGHTBKGND3: + return GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF_DELETED); default: return CCrystalTextView::GetColor(nColorIndex); } Modified: trunk/Src/MergeEditView.cpp =================================================================== --- trunk/Src/MergeEditView.cpp 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/MergeEditView.cpp 2009-04-03 14:57:23 UTC (rev 6637) @@ -94,6 +94,7 @@ m_cachedColors.clrSelMovedDeleted = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_MOVEDBLOCK_DELETED); m_cachedColors.clrSelMovedText = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_MOVEDBLOCK_TEXT); m_cachedColors.clrWordDiff = GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF); + m_cachedColors.clrWordDiffDeleted = GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF_DELETED); m_cachedColors.clrSelWordDiff = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_WORDDIFF); m_cachedColors.clrWordDiffText = GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF_TEXT); m_cachedColors.clrSelWordDiffText = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_WORDDIFF_TEXT); @@ -375,7 +376,16 @@ else { pBuf[1 + i * 2].m_nColorIndex = COLORINDEX_HIGHLIGHTTEXT2 | COLORINDEX_APPLYFORCE; - pBuf[1 + i * 2].m_nBgColorIndex = COLORINDEX_HIGHLIGHTBKGND2 | COLORINDEX_APPLYFORCE; + if (worddiffs[i]->start[0] == worddiffs[i]->end[0] + 1 || + worddiffs[i]->start[1] == worddiffs[i]->end[1] + 1) + { + // Case on one side char/words are inserted or deleted + pBuf[1 + i * 2].m_nBgColorIndex = COLORINDEX_HIGHLIGHTBKGND3 | COLORINDEX_APPLYFORCE; + } + else + { + pBuf[1 + i * 2].m_nBgColorIndex = COLORINDEX_HIGHLIGHTBKGND2 | COLORINDEX_APPLYFORCE; + } } pBuf[2 + i * 2].m_nColorIndex = COLORINDEX_NONE; pBuf[2 + i * 2].m_nBgColorIndex = COLORINDEX_NONE; @@ -402,6 +412,9 @@ return m_cachedColors.clrWordDiff; case COLORINDEX_HIGHLIGHTTEXT2: return m_cachedColors.clrWordDiffText; + case COLORINDEX_HIGHLIGHTBKGND3: + return m_cachedColors.clrWordDiffDeleted; + default: return CCrystalTextView::GetColor(nColorIndex); } @@ -2350,6 +2363,7 @@ m_cachedColors.clrSelMovedDeleted = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_MOVEDBLOCK_DELETED); m_cachedColors.clrSelMovedText = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_MOVEDBLOCK_TEXT); m_cachedColors.clrWordDiff = GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF); + m_cachedColors.clrWordDiffDeleted = GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF_DELETED); m_cachedColors.clrSelWordDiff = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_WORDDIFF); m_cachedColors.clrWordDiffText = GetOptionsMgr()->GetInt(OPT_CLR_WORDDIFF_TEXT); m_cachedColors.clrSelWordDiffText = GetOptionsMgr()->GetInt(OPT_CLR_SELECTED_WORDDIFF_TEXT); Modified: trunk/Src/MergeEditView.h =================================================================== --- trunk/Src/MergeEditView.h 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/MergeEditView.h 2009-04-03 14:57:23 UTC (rev 6637) @@ -50,6 +50,7 @@ COLORREF clrSelMovedDeleted; /**< Selected moved block deleted color */ COLORREF clrSelMovedText; /**< Selected moved block text color */ COLORREF clrWordDiff; /**< Word difference color */ + COLORREF clrWordDiffDeleted; /**< Word differenceDeleted color */ COLORREF clrWordDiffText; /**< Word difference text color */ COLORREF clrSelWordDiff; /**< Selected word difference color */ COLORREF clrSelWordDiffText; /**< Selected word difference text color */ Modified: trunk/Src/OptionsDef.h =================================================================== --- trunk/Src/OptionsDef.h 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/OptionsDef.h 2009-04-03 14:57:23 UTC (rev 6637) @@ -116,6 +116,8 @@ const TCHAR OPT_CLR_SELECTED_MOVEDBLOCK_TEXT[] = _T("Settings/SelectedMovedBlockTextColor"); // The word difference color const TCHAR OPT_CLR_WORDDIFF[] = _T("Settings/WordDifferenceColor"); +// The word difference deleted color +const TCHAR OPT_CLR_WORDDIFF_DELETED[] = _T("Settings/WordDifferenceDeletedColor"); // The selected word difference color const TCHAR OPT_CLR_SELECTED_WORDDIFF[] = _T("Settings/SelectedWordDifferenceColor"); // The word difference text color Modified: trunk/Src/OptionsInit.cpp =================================================================== --- trunk/Src/OptionsInit.cpp 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/OptionsInit.cpp 2009-04-03 14:57:23 UTC (rev 6637) @@ -125,6 +125,7 @@ m_pOptions->InitOption(OPT_CLR_SELECTED_MOVEDBLOCK_DELETED, (int)RGB(252, 181, 163)); m_pOptions->InitOption(OPT_CLR_SELECTED_MOVEDBLOCK_TEXT, (int)RGB(0,0,0)); m_pOptions->InitOption(OPT_CLR_WORDDIFF, (int)RGB(241,226,173)); + m_pOptions->InitOption(OPT_CLR_WORDDIFF_DELETED, (int)RGB(241,226,173)); m_pOptions->InitOption(OPT_CLR_SELECTED_WORDDIFF, (int)RGB(255,160,160)); m_pOptions->InitOption(OPT_CLR_WORDDIFF_TEXT, (int)RGB(0,0,0)); m_pOptions->InitOption(OPT_CLR_SELECTED_WORDDIFF_TEXT, (int)RGB(0,0,0)); Modified: trunk/Src/PropColors.cpp =================================================================== --- trunk/Src/PropColors.cpp 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/PropColors.cpp 2009-04-03 14:57:23 UTC (rev 6637) @@ -55,6 +55,7 @@ DDX_Control(pDX, IDC_WORDDIFFERENCE_TEXT_COLOR, m_cWordDiffText); DDX_Control(pDX, IDC_SEL_WORDDIFFERENCE_COLOR, m_cSelWordDiff); DDX_Control(pDX, IDC_WORDDIFFERENCE_COLOR, m_cWordDiff); + DDX_Control(pDX, IDC_WORDDIFFERENCE_DELETED_COLOR, m_cWordDiffDeleted); //}}AFX_DATA_MAP } @@ -78,6 +79,7 @@ ON_BN_CLICKED(IDC_SEL_MOVEDBLOCK_DELETED_COLOR, OnSelMovedDeletedColor) ON_BN_CLICKED(IDC_SEL_MOVEDBLOCK_TEXT_COLOR, OnSelMovedTextColor) ON_BN_CLICKED(IDC_WORDDIFFERENCE_COLOR, OnWordDifferenceColor) + ON_BN_CLICKED(IDC_WORDDIFFERENCE_DELETED_COLOR, OnWordDifferenceDeletedColor) ON_BN_CLICKED(IDC_SEL_WORDDIFFERENCE_COLOR, OnSelWordDifferenceColor) ON_BN_CLICKED(IDC_WORDDIFFERENCE_TEXT_COLOR, OnWordDifferenceTextColor) ON_BN_CLICKED(IDC_SEL_WORDDIFFERENCE_TEXT_COLOR, OnSelWordDifferenceTextColor) @@ -234,6 +236,13 @@ { BrowseColor(m_cWordDiff, m_clrWordDiff); } +/** + * @brief User wants to change word difference deleted color + */ +void CPropMergeColors::OnWordDifferenceDeletedColor() +{ + BrowseColor(m_cWordDiffDeleted, m_clrWordDiffDeleted); +} /** * @brief User wants to change selected word difference color @@ -282,6 +291,7 @@ SerializeColor(op, m_cSelMovedText, OPT_CLR_SELECTED_MOVEDBLOCK_TEXT, m_clrSelMovedText); SerializeColor(op, m_cWordDiff, OPT_CLR_WORDDIFF, m_clrWordDiff); + SerializeColor(op, m_cWordDiffDeleted, OPT_CLR_WORDDIFF_DELETED, m_clrWordDiffDeleted); SerializeColor(op, m_cSelWordDiff, OPT_CLR_SELECTED_WORDDIFF, m_clrSelWordDiff); SerializeColor(op, m_cWordDiffText, OPT_CLR_WORDDIFF_TEXT, m_clrWordDiffText); Modified: trunk/Src/PropColors.h =================================================================== --- trunk/Src/PropColors.h 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/PropColors.h 2009-04-03 14:57:23 UTC (rev 6637) @@ -55,6 +55,7 @@ CColorButton m_cWordDiffText; CColorButton m_cSelWordDiff; CColorButton m_cWordDiff; + CColorButton m_cWordDiffDeleted; //}}AFX_DATA @@ -74,6 +75,7 @@ COLORREF m_clrSelMovedDeleted; COLORREF m_clrSelMovedText; COLORREF m_clrWordDiff; + COLORREF m_clrWordDiffDeleted; COLORREF m_clrWordDiffText; COLORREF m_clrSelWordDiff; COLORREF m_clrSelWordDiffText; @@ -117,6 +119,7 @@ afx_msg void OnSelMovedDeletedColor(); afx_msg void OnSelMovedTextColor(); afx_msg void OnWordDifferenceColor(); + afx_msg void OnWordDifferenceDeletedColor(); afx_msg void OnSelWordDifferenceColor(); afx_msg void OnWordDifferenceTextColor(); afx_msg void OnSelWordDifferenceTextColor(); Modified: trunk/Src/SyntaxColors.cpp =================================================================== --- trunk/Src/SyntaxColors.cpp 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/SyntaxColors.cpp 2009-04-03 14:57:23 UTC (rev 6637) @@ -163,6 +163,9 @@ case COLORINDEX_HIGHLIGHTTEXT2: color = RGB (0, 0, 0); break; + case COLORINDEX_HIGHLIGHTBKGND3: + color = RGB (255, 255, 0); + break; default: // return RGB(255, 0, 0); color = RGB (128, 0, 0); Modified: trunk/Src/SyntaxColors.h =================================================================== --- trunk/Src/SyntaxColors.h 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/SyntaxColors.h 2009-04-03 14:57:23 UTC (rev 6637) @@ -38,10 +38,11 @@ COLORINDEX_STRING, COLORINDEX_PREPROCESSOR, // - COLORINDEX_HIGHLIGHTBKGND1, + COLORINDEX_HIGHLIGHTBKGND1, // standard COLORINDEX_HIGHLIGHTTEXT1, - COLORINDEX_HIGHLIGHTBKGND2, + COLORINDEX_HIGHLIGHTBKGND2, // changed COLORINDEX_HIGHLIGHTTEXT2, + COLORINDEX_HIGHLIGHTBKGND3, // insert or delete // COLORINDEX_USER1, COLORINDEX_USER2, Modified: trunk/Src/resource.h =================================================================== --- trunk/Src/resource.h 2009-04-03 13:45:29 UTC (rev 6636) +++ trunk/Src/resource.h 2009-04-03 14:57:23 UTC (rev 6637) @@ -446,6 +446,7 @@ #define IDC_ENABLE_SHELL_CONTEXT_MENU 1343 #define IDC_STARTUP_FOLDER_SELECT 1344 #define IDC_BREAK_CHARS 1345 +#define IDC_WORDDIFFERENCE_DELETED_COLOR 1346 #define IDC_EDIT_WHOLE_WORD 8603 #define IDC_EDIT_MATCH_CASE 8604 #define IDC_EDIT_FINDTEXT 8605 @@ -1084,7 +1085,7 @@ #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 237 #define _APS_NEXT_COMMAND_VALUE 33178 -#define _APS_NEXT_CONTROL_VALUE 1346 +#define _APS_NEXT_CONTROL_VALUE 1347 #define _APS_NEXT_SYMED_VALUE 113 #endif #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |