OSDN Git Service

Stick Patch View basic work at
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / CommitDlg.cpp
index 1ceab7c..e2d4283 100644 (file)
@@ -98,6 +98,8 @@ BEGIN_MESSAGE_MAP(CCommitDlg, CResizableStandAloneDialog)
        ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_NEEDSREFRESH, OnGitStatusListCtrlNeedsRefresh)\r
        ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ADDFILE, OnFileDropped)\r
        ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_CHECKCHANGED, &CCommitDlg::OnGitStatusListCtrlCheckChanged)\r
+       ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ITEMCHANGED, &CCommitDlg::OnGitStatusListCtrlItemChanged)\r
+       \r
        ON_REGISTERED_MESSAGE(WM_AUTOLISTREADY, OnAutoListReady) \r
        ON_WM_TIMER()\r
     ON_WM_SIZE()\r
@@ -112,6 +114,7 @@ BEGIN_MESSAGE_MAP(CCommitDlg, CResizableStandAloneDialog)
        ON_WM_MOVE()\r
        ON_WM_MOVING()\r
        ON_WM_SIZING()\r
+       ON_NOTIFY(HDN_ITEMCHANGED, 0, &CCommitDlg::OnHdnItemchangedFilelist)\r
 END_MESSAGE_MAP()\r
 \r
 BOOL CCommitDlg::OnInitDialog()\r
@@ -1518,6 +1521,36 @@ void CCommitDlg::OnBnClickedBugtraqbutton()
        SysFreeString(temp);\r
 \r
 }\r
+LRESULT CCommitDlg::OnGitStatusListCtrlItemChanged(WPARAM wparam, LPARAM lparam)\r
+{\r
+       TRACE("OnGitStatusListCtrlItemChanged %d\r\n", wparam);\r
+       if(::IsWindow(this->m_patchViewdlg.m_hWnd))\r
+       {\r
+               m_patchViewdlg.m_ctrlPatchView.SetText(CString());\r
+\r
+               POSITION pos=m_ListCtrl.GetFirstSelectedItemPosition();\r
+               m_patchViewdlg.m_ctrlPatchView.Call(SCI_SETREADONLY, FALSE);\r
+               while(pos)\r
+               {\r
+                       int nSelect = m_ListCtrl.GetNextSelectedItem(pos);\r
+                       CTGitPath * p=(CTGitPath*)m_ListCtrl.GetItemData(nSelect);\r
+                       if(p)\r
+                       {\r
+                               CString cmd,out;\r
+                               cmd.Format(_T("git.exe diff -- \"%s\""),p->GetGitPathString());\r
+                               g_Git.Run(cmd,&out,CP_ACP);\r
+\r
+                               m_patchViewdlg.m_ctrlPatchView.SetText(out);\r
+                       }\r
+\r
+               }\r
+               m_patchViewdlg.m_ctrlPatchView.Call(SCI_SETREADONLY, TRUE);\r
+               m_patchViewdlg.m_ctrlPatchView.Call(SCI_GOTOPOS, 0);\r
+\r
+       }\r
+       return 0;\r
+}\r
+\r
 \r
 LRESULT CCommitDlg::OnGitStatusListCtrlCheckChanged(WPARAM, LPARAM)\r
 {\r
@@ -1804,3 +1837,11 @@ void CCommitDlg::OnSizing(UINT fwSide, LPRECT pRect)
        }\r
        // TODO: Add your message handler code here\r
 }\r
+\r
+void CCommitDlg::OnHdnItemchangedFilelist(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+       LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);\r
+       // TODO: Add your control notification handler code here\r
+       *pResult = 0;\r
+       TRACE("Item Changed\r\n");\r
+}\r