From d76b97519c78b0d9a8498e4754eb9ae4c6804d67 Mon Sep 17 00:00:00 2001 From: Sup Yut Sum Date: Wed, 13 Mar 2013 23:51:20 +0800 Subject: [PATCH] Fixed issue #1696: Fetch from switch dialog does not refresh branches list Signed-off-by: Sup Yut Sum --- src/Changelog.txt | 1 + src/TortoiseProc/ChooseVersion.h | 33 +++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/Changelog.txt b/src/Changelog.txt index 73d442e86..ec3f06c4c 100644 --- a/src/Changelog.txt +++ b/src/Changelog.txt @@ -49,6 +49,7 @@ Released: unreleased * Fixed issue #1689: Option to make Git Commit GUI look different from TortoiseSVN equivalent * Fixed issue #1693: Cherry pick progress bar doesn't stay green * Fixed issue #1276: Cannot show diff of renamed file + * Fixed issue #1696: Fetch from switch dialog does not refresh branches list = Release 1.8.1.0 = Released: 2013-02-07 diff --git a/src/TortoiseProc/ChooseVersion.h b/src/TortoiseProc/ChooseVersion.h index b0f50e0de..bf4822d47 100644 --- a/src/TortoiseProc/ChooseVersion.h +++ b/src/TortoiseProc/ChooseVersion.h @@ -44,6 +44,9 @@ protected: CHistoryCombo m_ChooseVersioinVersion; CButton m_RadioBranch; CButton m_RadioTag; + CString m_pendingRefName; + bool m_bNotFullName; + bool m_bSelectRef; //Notification when version changed. Can be implemented in derived classes. virtual void OnVersionChanged(){} @@ -132,8 +135,13 @@ protected: UpdateRevsionName(); CString resultRef = CBrowseRefsDlg::PickRef(false, m_VersionName, gPickRef_All); if(resultRef.IsEmpty()) + { + Init(false, true, false); return; - SelectRef(resultRef, false); + } + m_pendingRefName = resultRef; + m_bNotFullName = false; + Init(false, true, true); } void SelectRef(CString refName, bool bRefNameIsPossiblyNotFullName = true) @@ -183,11 +191,15 @@ protected: int current; g_Git.GetBranchList(list,¤t,CGit::BRANCH_ALL_F); + for (int i = m_ChooseVersioinBranch.GetCount(); i >= 0; --i) + m_ChooseVersioinBranch.DeleteString(i); m_ChooseVersioinBranch.AddString(list, false); m_ChooseVersioinBranch.SetCurSel(current); list.clear(); g_Git.GetTagList(list); + for (int i = m_ChooseVersioinTags.GetCount(); i >= 0; --i) + m_ChooseVersioinTags.DeleteString(i); m_ChooseVersioinTags.AddString(list, false); m_ChooseVersioinTags.SetCurSel(0); @@ -201,16 +213,19 @@ protected: m_RadioBranch.EnableWindow(TRUE); m_RadioTag.EnableWindow(TRUE); - if (m_initialRefName.IsEmpty()) - OnVersionChanged(); - else - SelectRef(m_initialRefName); + if (m_bSelectRef) + { + if (m_pendingRefName.IsEmpty()) + OnVersionChanged(); + else + SelectRef(m_pendingRefName, m_bNotFullName); + } if (m_bIsFirstTimeToSetFocus && m_pWin->GetDlgItem(IDC_COMBOBOXEX_BRANCH)->IsWindowEnabled()) m_pWin->GetDlgItem(IDC_COMBOBOXEX_BRANCH)->SetFocus(); m_bIsFirstTimeToSetFocus = false; } - void Init(bool setFocusToBranchComboBox = false) + void Init(bool setFocusToBranchComboBox = false, bool bReInit = false, bool bSelectRef = true) { m_ChooseVersioinBranch.SetMaxHistoryItems(0x7FFFFFFF); m_ChooseVersioinTags.SetMaxHistoryItems(0x7FFFFFFF); @@ -220,6 +235,12 @@ protected: m_RadioTag.EnableWindow(FALSE); m_bIsFirstTimeToSetFocus = setFocusToBranchComboBox; + m_bSelectRef = bSelectRef; + if (!bReInit) + { + m_pendingRefName = m_initialRefName; + m_bNotFullName = true; + } InterlockedExchange(&m_bLoadingThreadRunning, TRUE); -- 2.11.4.GIT