#define ID_EDIT_GOTO 220\r
#define IDD_GOTODLG 221\r
#define IDC_LINENUMBER 222\r
+#define ID_VIEW_NEXT 223\r
+#define ID_VIEW_PREV 224\r
+\r
#define IDS_STATUS_PANE1 20122\r
#define IDS_STATUS_PANE2 20123\r
#define IDS_TOOLBAR_STANDARD 20124\r
ON_COMMAND(ID_EDIT_FIND,OnEditFind)\r
ON_COMMAND(ID_EDIT_GOTO,OnEditGoto)\r
ON_COMMAND(ID_EDIT_COPY,CopySelectedLogToClipboard)\r
+ ON_COMMAND(ID_VIEW_NEXT,OnViewNext)\r
+ ON_COMMAND(ID_VIEW_PREV,OnViewPrev)\r
ON_WM_CREATE()\r
ON_WM_SIZE()\r
ON_WM_MOUSEMOVE()\r
HFONT oldfont = (HFONT)::SelectObject(hDC, m_font);\r
\r
TCHAR buf[MAX_PATH];\r
- //_stprintf_s(buf, MAX_PATH, _T("%8ld "), 88888888);\r
- //::GetTextExtentPoint(hDC, buf, _tcslen(buf), &width);\r
- //m_revwidth = width.cx + BLAMESPACE;\r
- //blamewidth += m_revwidth;\r
\r
int maxnum=0;\r
for (unsigned int i=0;i<this->m_ID.size();i++)\r
this->GetDocument()->GetMainFrame()->m_wndProperties.UpdateProperties(pRev);\r
\r
this->Invalidate();\r
+\r
+ int i;\r
+ for(i=0;i<m_CommitHash.size();i++)\r
+ {\r
+ if( pRev->m_CommitHash == m_CommitHash[i] )\r
+ break;\r
+ }\r
+ this->GotoLine(i);\r
this->m_TextView.Invalidate();\r
\r
}\r
return 0; \r
} \r
\r
+void CTortoiseGitBlameView::OnViewNext()\r
+{\r
+ FindNextLine(this->m_SelectedHash,false);\r
+}\r
+void CTortoiseGitBlameView::OnViewPrev()\r
+{\r
+ FindNextLine(this->m_SelectedHash,true);\r
+}\r
+\r
+int CTortoiseGitBlameView::FindNextLine(CString CommitHash,bool bUpOrDown)\r
+{\r
+ LONG_PTR line = SendEditor(SCI_GETFIRSTVISIBLELINE);\r
+ LONG_PTR startline =line;\r
+ bool findNoMatch =false;\r
+ while(line>=0 && line<m_CommitHash.size())\r
+ {\r
+ if(m_CommitHash[line]!=CommitHash)\r
+ {\r
+ findNoMatch=true;\r
+ }\r
+\r
+ if(m_CommitHash[line] == CommitHash && findNoMatch)\r
+ {\r
+ if( line == startline+2 )\r
+ {\r
+ findNoMatch=false;\r
+ }\r
+ else\r
+ {\r
+ if( bUpOrDown )\r
+ {\r
+ line=FindFirstLine(CommitHash,line);\r
+ }\r
+ SendEditor(SCI_LINESCROLL,0,line-startline-2);\r
+ return line;\r
+ }\r
+ }\r
+ if(bUpOrDown)\r
+ line--;\r
+ else\r
+ line++;\r
+ }\r
+ return -1;\r
+}
\ No newline at end of file
afx_msg void OnMouseHover(UINT nFlags, CPoint point);\r
afx_msg void OnMouseMove(UINT nFlags, CPoint point);\r
afx_msg LRESULT OnFindDialogMessage(WPARAM wParam, LPARAM lParam);\r
+ afx_msg void OnViewNext();\r
+ afx_msg void OnViewPrev();\r
+ \r
+ int FindNextLine(CString commithash, bool bUpOrDown=false);\r
+ int FindFirstLine(CString commithash, int line)\r
+ {\r
+ while(line>=0)\r
+ {\r
+ if( m_CommitHash[line] != commithash )\r
+ {\r
+ return line++;\r
+ }\r
+ line--;\r
+ }\r
+ return line;\r
+ }\r
+\r
DECLARE_MESSAGE_MAP()\r
\r
static UINT m_FindDialogMessage;\r