OSDN Git Service

High light lines when Click Log List at gitblame
authorFrank Li <lznuaa@gmail.com>
Tue, 13 Jan 2009 05:26:27 +0000 (13:26 +0800)
committerFrank Li <lznuaa@gmail.com>
Tue, 13 Jan 2009 05:26:27 +0000 (13:26 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseGitBlame/OutputWnd.cpp
src/TortoiseGitBlame/OutputWnd.h
src/TortoiseGitBlame/TortoiseGitBlame.vcproj
src/TortoiseGitBlame/TortoiseGitBlameView.cpp
src/TortoiseGitBlame/TortoiseGitBlameView.h

index 0979d68..223180e 100644 (file)
@@ -4,6 +4,8 @@
 #include "OutputWnd.h"\r
 #include "Resource.h"\r
 #include "MainFrm.h"\r
+#include "TortoiseGitBlameDoc.h"\r
+#include "TortoiseGitBlameView.h"\r
 \r
 #ifdef _DEBUG\r
 #define new DEBUG_NEW\r
@@ -22,9 +24,22 @@ COutputWnd::~COutputWnd()
 {\r
 }\r
 \r
+IMPLEMENT_DYNCREATE(CGitMFCTabCtrl, CMFCTabCtrl)\r
+\r
+BEGIN_MESSAGE_MAP(CGitMFCTabCtrl, CMFCTabCtrl)\r
+       ON_NOTIFY(LVN_ITEMCHANGED, 0, OnLvnItemchangedLoglist)\r
+END_MESSAGE_MAP()\r
+\r
+void CGitMFCTabCtrl::OnLvnItemchangedLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+       COutputWnd *pWnd=DYNAMIC_DOWNCAST(COutputWnd,this->GetParent());\r
+       pWnd->OnLvnItemchangedLoglist(pNMHDR,pResult);\r
+}\r
+\r
 BEGIN_MESSAGE_MAP(COutputWnd, CDockablePane)\r
        ON_WM_CREATE()\r
        ON_WM_SIZE()\r
+       ON_NOTIFY(LVN_ITEMCHANGED, 0, OnLvnItemchangedLoglist)\r
 END_MESSAGE_MAP()\r
 \r
 int COutputWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)\r
@@ -32,13 +47,14 @@ int COutputWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
        if (CDockablePane::OnCreate(lpCreateStruct) == -1)\r
                return -1;\r
 \r
+       TRACE(_T("%u\n"),LVN_ITEMCHANGED);\r
        m_Font.CreateStockObject(DEFAULT_GUI_FONT);\r
 \r
        CRect rectDummy;\r
        rectDummy.SetRectEmpty();\r
 \r
        // Create tabs window:\r
-       if (!m_wndTabs.Create(CMFCTabCtrl::STYLE_FLAT, rectDummy, this, 1))\r
+       if (!m_wndTabs.Create(CMFCTabCtrl::STYLE_FLAT, rectDummy, this, 0))\r
        {\r
                TRACE0("Failed to create output tab window\n");\r
                return -1;      // fail to create\r
@@ -46,9 +62,9 @@ int COutputWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
 \r
        // Create output panes:\r
        //const DWORD dwStyle = LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL;\r
-       const DWORD dwStyle =LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | WS_BORDER | WS_TABSTOP |LVS_SINGLESEL ;\r
+       const DWORD dwStyle =LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | WS_BORDER | WS_TABSTOP |LVS_SINGLESEL |WS_CHILD | WS_VISIBLE;\r
 \r
-       if (! m_LogList.Create(dwStyle,rectDummy,&m_wndTabs,2) )\r
+       if (! m_LogList.Create(dwStyle,rectDummy,&m_wndTabs,0) )\r
        {\r
                TRACE0("Failed to create output windows\n");\r
                return -1;      // fail to create\r
@@ -159,6 +175,26 @@ int COutputWnd::LoadHistory(CString filename)
        return 0;\r
 \r
 }\r
+void COutputWnd::OnLvnItemchangedLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+       LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);\r
+       *pResult = 0;\r
+\r
+       //if (this->IsThreadRunning())\r
+       if (pNMLV->iItem >= 0)\r
+       {\r
+               if (pNMLV->iSubItem != 0)\r
+                       return;\r
+               \r
+               if (pNMLV->uNewState & LVIS_SELECTED)\r
+               {\r
+                       CMainFrame *pMain=DYNAMIC_DOWNCAST(CMainFrame,AfxGetApp()->GetMainWnd());\r
+                       POSITION pos=pMain->GetActiveDocument()->GetFirstViewPosition();\r
+                       CTortoiseGitBlameView *pView=DYNAMIC_DOWNCAST(CTortoiseGitBlameView,pMain->GetActiveDocument()->GetNextView(pos));\r
+                       pView->FocusOn(&this->m_LogList.m_logEntries[pNMLV->iItem]);\r
+               }\r
+       }\r
+}\r
 /////////////////////////////////////////////////////////////////////////////\r
 // COutputList1\r
 \r
index 7cbff0e..f9eb5ef 100644 (file)
@@ -24,6 +24,17 @@ protected:
        DECLARE_MESSAGE_MAP()\r
 };\r
 \r
+class COutputWnd;\r
+\r
+class CGitMFCTabCtrl: public CMFCTabCtrl\r
+{\r
+protected:\r
+       DECLARE_MESSAGE_MAP()\r
+       afx_msg void OnLvnItemchangedLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+\r
+       DECLARE_DYNCREATE(CGitMFCTabCtrl);\r
+};\r
+\r
 class COutputWnd : public CDockablePane\r
 {\r
 // Construction\r
@@ -34,7 +45,7 @@ public:
 public:\r
        CFont m_Font;\r
 \r
-       CMFCTabCtrl     m_wndTabs;\r
+       CGitMFCTabCtrl  m_wndTabs;\r
 \r
        CGitBlameLogList m_LogList;\r
 //     COutputList m_wndOutputBuild;\r
@@ -47,11 +58,11 @@ protected:
        void FillFindWindow();\r
 \r
        void AdjustHorzScroll(CListBox& wndListBox);\r
-\r
+       \r
 // Implementation\r
 public:\r
        virtual ~COutputWnd();\r
-\r
+       afx_msg void OnLvnItemchangedLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
        int     LoadHistory(CString filename);\r
 \r
 protected:\r
index f4249bd..0a7ec49 100644 (file)
                                RelativePath=".\TortoiseGitBlameView.h"\r
                                >\r
                        </File>\r
+                       <Filter\r
+                               Name="HTML Help Files"\r
+                               Filter="hhp;hhc;hhk;gif;jpg"\r
+                               >\r
+                               <File\r
+                                       RelativePath=".\hlp\TortoiseGitBlame.hhc"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\hlp\TortoiseGitBlame.hhk"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\hlp\TortoiseGitBlame.hhp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCustomBuildTool"\r
+                                                       Description="Making help file..."\r
+                                                       CommandLine="start /wait hhc &quot;hlp\TortoiseGitBlame.hhp&quot;&#x0D;&#x0A;if not exist &quot;hlp\TortoiseGitBlame.chm&quot; goto :HelpError&#x0D;&#x0A;copy &quot;hlp\TortoiseGitBlame.chm&quot; &quot;$(OutDir)\TortoiseGitBlame.chm&quot;&#x0D;&#x0A;goto :HelpDone&#x0D;&#x0A;:HelpError&#x0D;&#x0A;echo hlp\TortoiseGitBlame.hhp(1) : error:Problem encountered creating help file&#x0D;&#x0A;echo.&#x0D;&#x0A;:HelpDone&#x0D;&#x0A;echo.&#x0D;&#x0A;"\r
+                                                       AdditionalDependencies="hlp\HTMLDefines.h"\r
+                                                       Outputs="$(OutDir)\$(ProjectName).chm"\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCustomBuildTool"\r
+                                                       Description="Making help file..."\r
+                                                       CommandLine="start /wait hhc &quot;hlp\TortoiseGitBlame.hhp&quot;&#x0D;&#x0A;if not exist &quot;hlp\TortoiseGitBlame.chm&quot; goto :HelpError&#x0D;&#x0A;copy &quot;hlp\TortoiseGitBlame.chm&quot; &quot;$(OutDir)\TortoiseGitBlame.chm&quot;&#x0D;&#x0A;goto :HelpDone&#x0D;&#x0A;:HelpError&#x0D;&#x0A;echo hlp\TortoiseGitBlame.hhp(1) : error:Problem encountered creating help file&#x0D;&#x0A;echo.&#x0D;&#x0A;:HelpDone&#x0D;&#x0A;echo.&#x0D;&#x0A;"\r
+                                                       AdditionalDependencies="hlp\HTMLDefines.h"\r
+                                                       Outputs="$(OutDir)\$(ProjectName).chm"\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                       </Filter>\r
                </Filter>\r
                <Filter\r
                        Name="Resource Files"\r
                        </File>\r
                </Filter>\r
                <Filter\r
-                       Name="HTML Help Files"\r
-                       Filter="hhp;hhc;hhk;gif;jpg"\r
-                       >\r
-                       <File\r
-                               RelativePath=".\hlp\TortoiseGitBlame.hhc"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\hlp\TortoiseGitBlame.hhk"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\hlp\TortoiseGitBlame.hhp"\r
-                               >\r
-                               <FileConfiguration\r
-                                       Name="Debug|Win32"\r
-                                       >\r
-                                       <Tool\r
-                                               Name="VCCustomBuildTool"\r
-                                               Description="Making help file..."\r
-                                               CommandLine="start /wait hhc &quot;hlp\TortoiseGitBlame.hhp&quot;&#x0D;&#x0A;if not exist &quot;hlp\TortoiseGitBlame.chm&quot; goto :HelpError&#x0D;&#x0A;copy &quot;hlp\TortoiseGitBlame.chm&quot; &quot;$(OutDir)\TortoiseGitBlame.chm&quot;&#x0D;&#x0A;goto :HelpDone&#x0D;&#x0A;:HelpError&#x0D;&#x0A;echo hlp\TortoiseGitBlame.hhp(1) : error:Problem encountered creating help file&#x0D;&#x0A;echo.&#x0D;&#x0A;:HelpDone&#x0D;&#x0A;echo.&#x0D;&#x0A;"\r
-                                               AdditionalDependencies="hlp\HTMLDefines.h"\r
-                                               Outputs="$(OutDir)\$(ProjectName).chm"\r
-                                       />\r
-                               </FileConfiguration>\r
-                               <FileConfiguration\r
-                                       Name="Release|Win32"\r
-                                       >\r
-                                       <Tool\r
-                                               Name="VCCustomBuildTool"\r
-                                               Description="Making help file..."\r
-                                               CommandLine="start /wait hhc &quot;hlp\TortoiseGitBlame.hhp&quot;&#x0D;&#x0A;if not exist &quot;hlp\TortoiseGitBlame.chm&quot; goto :HelpError&#x0D;&#x0A;copy &quot;hlp\TortoiseGitBlame.chm&quot; &quot;$(OutDir)\TortoiseGitBlame.chm&quot;&#x0D;&#x0A;goto :HelpDone&#x0D;&#x0A;:HelpError&#x0D;&#x0A;echo hlp\TortoiseGitBlame.hhp(1) : error:Problem encountered creating help file&#x0D;&#x0A;echo.&#x0D;&#x0A;:HelpDone&#x0D;&#x0A;echo.&#x0D;&#x0A;"\r
-                                               AdditionalDependencies="hlp\HTMLDefines.h"\r
-                                               Outputs="$(OutDir)\$(ProjectName).chm"\r
-                                       />\r
-                               </FileConfiguration>\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
                        Name="HTML Help Topics"\r
                        Filter="htm;html"\r
                        >\r
index 319a4f7..d08a359 100644 (file)
@@ -2557,5 +2557,17 @@ void CTortoiseGitBlameView::OnSciGetBkColor(NMHDR* hdr, LRESULT* result)
                        notification->lParam = InterColor(DWORD(m_regOldLinesColor), DWORD(m_regNewLinesColor), (m_ID[notification->line]-m_lowestrev)*100/((m_highestrev-m_lowestrev)+1));\r
        }\r
 \r
+}\r
+\r
+void CTortoiseGitBlameView::FocusOn(GitRev *pRev)\r
+{\r
+       m_SelectedHash = pRev->m_CommitHash;\r
+\r
+       //GitRev *pRev;\r
+       //pRev=&this->GetLogData()->at(this->GetLogList()->GetItemCount()-m_ID[line]);\r
+       this->GetDocument()->GetMainFrame()->m_wndProperties.UpdateProperties(pRev);\r
+\r
+       this->Invalidate();\r
+       this->m_TextView.Invalidate();\r
 \r
 }
\ No newline at end of file
index 7fdf811..afebfb7 100644 (file)
@@ -84,6 +84,7 @@ protected:
 public:\r
 \r
        void UpdateInfo();\r
+       void FocusOn(GitRev *pRev);\r
 \r
        CSciEdit                        m_TextView;\r
 \r