From ce123d52d54a3ef1d7fc5264c5a0a81b5ebf5930 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sat, 30 Jan 2016 20:11:56 +0900 Subject: [PATCH] Add "Swap Panes" menu item to Folder Compare Window (2) --- Src/7zCommon.cpp | 8 ++++++++ Src/7zCommon.h | 1 + Src/DirDoc.cpp | 3 +++ Src/DirDoc.h | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Src/7zCommon.cpp b/Src/7zCommon.cpp index 26b942568..922903e2e 100644 --- a/Src/7zCommon.cpp +++ b/Src/7zCommon.cpp @@ -255,6 +255,14 @@ CTempPathContext *CTempPathContext::DeleteHead() return pParent; } +void CTempPathContext::Swap(int idx1, int idx2) +{ + std::swap(m_strDisplayRoot[idx1], m_strDisplayRoot[idx2]); + std::swap(m_strRoot[idx1], m_strRoot[idx2]); + if (m_pParent) + m_pParent->Swap(idx1, idx2); +} + /** * @brief Return installed or local version of 7-Zip. */ diff --git a/Src/7zCommon.h b/Src/7zCommon.h index 754aad5ec..477adc26b 100644 --- a/Src/7zCommon.h +++ b/Src/7zCommon.h @@ -28,6 +28,7 @@ public: String m_strDisplayRoot[3]; String m_strRoot[3]; CTempPathContext *DeleteHead(); + void Swap(int idx1, int idx2); }; /** diff --git a/Src/DirDoc.cpp b/Src/DirDoc.cpp index 43fed2d99..d0f9fa7c1 100644 --- a/Src/DirDoc.cpp +++ b/Src/DirDoc.cpp @@ -639,8 +639,11 @@ void CDirDoc::Swap(int idx1, int idx2) { std::swap(m_bRO[idx1], m_bRO[idx2]); std::swap(m_strDesc[idx1], m_strDesc[idx2]); + if (m_pTempPathContext) + m_pTempPathContext->Swap(idx1, idx2); m_pCtxt->Swap(idx1, idx2); m_pCompareStats->Swap(idx1, idx2); for (int nIndex = 0; nIndex < m_nDirs; nIndex++) UpdateHeaderPath(nIndex); + SetTitle(NULL); } diff --git a/Src/DirDoc.h b/Src/DirDoc.h index d23efbb2d..1ac6ccb79 100644 --- a/Src/DirDoc.h +++ b/Src/DirDoc.h @@ -99,7 +99,7 @@ public: void AddMergeDoc(IMergeDoc * pMergeDoc); void MergeDocClosing(IMergeDoc * pMergeDoc); CDiffThread m_diffThread; - void UpdateHeaderPath(BOOL bLeft); + void UpdateHeaderPath(int nIndex); void AbortCurrentScan(); bool IsCurrentScanAbortable() const; void SetDescriptions(const String strDesc[]); -- 2.11.0