From f44f361975443bc3e2192b9153087733962a2a82 Mon Sep 17 00:00:00 2001 From: Yue Lin Ho Date: Wed, 8 Oct 2014 06:20:09 +0800 Subject: [PATCH] Prevent possible endless going back Assume history is A B C A. go back will never stop => C B A C B A... Signed-off-by: Yue Lin Ho Signed-off-by: Sven Strickroth --- src/TortoiseProc/LogDlg.cpp | 5 ++++- src/TortoiseProc/LogDlg.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/TortoiseProc/LogDlg.cpp b/src/TortoiseProc/LogDlg.cpp index f8dc4f77b..490947a35 100644 --- a/src/TortoiseProc/LogDlg.cpp +++ b/src/TortoiseProc/LogDlg.cpp @@ -66,6 +66,7 @@ CLogDlg::CLogDlg(CWnd* pParent /*=NULL*/) , m_limit(0) , m_hAccel(NULL) + , m_bNavigatingWithSelect(false) { m_bFilterWithRegex = !!CRegDWORD(_T("Software\\TortoiseGit\\UseRegexFilter"), TRUE); @@ -1021,8 +1022,10 @@ void CLogDlg::GoBackForward(bool select, bool bForward) { m_LogList.m_highlight.Empty(); m_LogList.SetItemState(m_LogList.GetSelectionMark(), 0, LVIS_SELECTED); + m_bNavigatingWithSelect = true; m_LogList.SetItemState(i, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_LogList.SetSelectionMark(i); + m_bNavigatingWithSelect = false; } else m_LogList.m_highlight = gotoHash; @@ -1570,7 +1573,7 @@ void CLogDlg::OnLvnItemchangedLoglist(NMHDR *pNMHDR, LRESULT *pResult) } if (pNMLV->uChanged & LVIF_STATE) { - if (pNMLV->uNewState & LVIS_SELECTED) + if ((pNMLV->uNewState & LVIS_SELECTED) && !m_bNavigatingWithSelect) { m_LogList.m_selectionHistory.Add(m_LogList.m_lastSelectedHash); m_LogList.m_lastSelectedHash = pLogEntry->m_CommitHash; diff --git a/src/TortoiseProc/LogDlg.h b/src/TortoiseProc/LogDlg.h index a870e44a5..d2b58cb3d 100644 --- a/src/TortoiseProc/LogDlg.h +++ b/src/TortoiseProc/LogDlg.h @@ -230,6 +230,7 @@ private: bool m_bNoMerges; int m_iCompressedGraph; BOOL m_bWalkBehavior; + bool m_bNavigatingWithSelect; CTGitPathList * m_currentChangedArray; LogChangedPathArray m_CurrentFilteredChangedArray; -- 2.11.4.GIT