Fixed issue #3089: Show parent SHA1 on cherry picking a merge commit
[TortoiseGit.git] / src / TortoiseProc / GitRefCompareList.h
blob876a56af8103ac92ff4616ead450bbbd3dc0b5b6
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2017 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 // GitLogList.cpp : implementation file
21 #pragma once
23 #include "HintCtrl.h"
24 #include "GitHash.h"
26 class CGitRefCompareList : public CHintCtrl<CListCtrl>
28 DECLARE_DYNAMIC(CGitRefCompareList);
30 enum ChangeType
32 Unknown,
33 New,
34 Deleted,
35 FastForward,
36 NewerTime,
37 Rewind,
38 OlderTime,
39 SameTime,
40 Same
43 struct RefEntry
45 CString fullName;
46 CGit::REF_TYPE refType;
47 CString shortName;
48 CString change;
49 ChangeType changeType;
50 CString oldHash;
51 CString oldMessage;
52 CString newHash;
53 CString newMessage;
56 public:
57 CGitRefCompareList();
59 virtual ~CGitRefCompareList()
63 void Init();
65 int AddEntry(git_repository* repo, const CString& ref, const CGitHash* oldHash, const CGitHash* newHash);
66 void Show();
67 void Clear();
68 static CString GetCommitMessage(git_commit *commit);
70 protected:
71 afx_msg void OnHdnItemclick(NMHDR* pNMHDR, LRESULT* pResult);
72 afx_msg void OnContextMenu(CWnd *pWnd, CPoint point);
73 void OnContextMenuList(CWnd *pWnd, CPoint point);
74 void OnContextMenuHeader(CWnd *pWnd, CPoint point);
75 virtual ULONG GetGestureStatus(CPoint ptTouch) override;
77 DECLARE_MESSAGE_MAP()
79 private:
80 static bool SortPredicate(const RefEntry &e1, const RefEntry &e2);
82 std::vector<RefEntry> m_RefList;
83 BOOL m_bHideUnchanged;
84 static BOOL m_bSortLogical;
86 int colRef;
87 int colRefType;
88 int colChange;
89 int colOldHash;
90 int colOldMessage;
91 int colNewHash;
92 int colNewMessage;
94 bool m_bAscending; ///< sort direction
95 int m_nSortedColumn; ///< which column to sort