From c381b7a239c76b1dd8bc144148da70e29047eaae Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Fri, 16 May 2014 14:43:32 +0200 Subject: [PATCH] Fixed issue #2180: When opening revision graph, scroll to current branch Signed-off-by: Sven Strickroth --- src/Changelog.txt | 1 + .../RevisionGraph/RevisionGraphDlgFunc.cpp | 6 ++++++ src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp | 21 ++++++++++++++++----- src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h | 1 + 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Changelog.txt b/src/Changelog.txt index fa158df75..f6dee3cda 100644 --- a/src/Changelog.txt +++ b/src/Changelog.txt @@ -16,6 +16,7 @@ Released: Unreleased * Fixed issue #2175: TortoiseGitBlame fails to search if line has non-ascii chars and system locale is not US * Fixed issue #2141: libgit2 still added the file with mixing EOL, while autocrlf and safecrlf are true * Fixed issue #2183: Explorer Property Page "Last modified" stays empty + * Fixed issue #2180: When opening revision graph, scroll to current branch = Release 1.8.8.0 = Released: 2014-04-01 diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp index 172e135f5..8172ee022 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp @@ -222,6 +222,10 @@ bool CRevisionGraphWnd::FetchRevisionData dev.graphics = Graphics::FromHDC(dev.pDC->m_hDC); dev.graphics->SetPageUnit (UnitPixel); + CGitHash head; + g_Git.GetHash(head, _T("HEAD")); + m_HeadNode = nullptr; + for (size_t i = 0; i < m_logEntries.size(); ++i) { node nd; @@ -230,6 +234,8 @@ bool CRevisionGraphWnd::FetchRevisionData m_GraphAttr.width(nd)=100; m_GraphAttr.height(nd)=20; SetNodeRect(dev, &nd, m_logEntries[i], 0); + if (m_logEntries[i] == head) + m_HeadNode = nd; } for (size_t i = 0; i < m_logEntries.size(); ++i) diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp index bbc289be6..24fd790cc 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp @@ -86,6 +86,7 @@ CRevisionGraphWnd::CRevisionGraphWnd() : CWnd() , m_SelectedEntry1(NULL) , m_SelectedEntry2(NULL) + , m_HeadNode(nullptr) , m_pDlgTip(NULL) , m_nFontSize(12) , m_bTweakTrunkColors(true) @@ -1739,11 +1740,21 @@ LRESULT CRevisionGraphWnd::OnWorkerThreadDone(WPARAM, LPARAM) InitView(); BuildPreview(); - SCROLLINFO sinfo = {0}; - sinfo.cbSize = sizeof(SCROLLINFO); - GetScrollInfo(SB_HORZ, &sinfo); - sinfo.nPos = sinfo.nMax; - SetScrollInfo(SB_HORZ, &sinfo); + if (m_HeadNode) + { + SCROLLINFO sinfo = { 0 }; + sinfo.cbSize = sizeof(SCROLLINFO); + if (GetScrollInfo(SB_HORZ, &sinfo)) + { + sinfo.nPos = (int)min(max(sinfo.nMin, m_GraphAttr.x(m_HeadNode) - m_GraphAttr.width(m_HeadNode) / 2), sinfo.nMax); + SetScrollInfo(SB_HORZ, &sinfo); + } + if (GetScrollInfo(SB_VERT, &sinfo)) + { + sinfo.nPos = (int)min(max(sinfo.nMin, m_GraphAttr.y(m_HeadNode) - m_GraphAttr.height(m_HeadNode) / 2), sinfo.nMax); + SetScrollInfo(SB_VERT, &sinfo); + } + } Invalidate(FALSE); diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h index 5d1215b86..a314292f1 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h @@ -207,6 +207,7 @@ protected: CRevisionGraphDlg *m_parent; + ogdf::node m_HeadNode; ogdf::node m_SelectedEntry1; ogdf::node m_SelectedEntry2; LOGFONT m_lfBaseFont; -- 2.11.4.GIT