OSDN Git Service

Fix git blame log dialog show nothing
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / GitLogListBase.cpp
index 5f64ad9..294f30e 100644 (file)
@@ -322,7 +322,7 @@ void CGitLogListBase::ResizeAllListCtrlCols()
 \r
 BOOL CGitLogListBase::GetShortName(CString ref, CString &shortname,CString prefix)\r
 {\r
-       TRACE(_T("%s %s\r\n"),ref,prefix);\r
+       //TRACE(_T("%s %s\r\n"),ref,prefix);\r
        if(ref.Left(prefix.GetLength()) ==  prefix)\r
        {\r
                shortname = ref.Right(ref.GetLength()-prefix.GetLength());\r
@@ -993,7 +993,7 @@ void CGitLogListBase::OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult)
                                                rect.right=second.left;\r
                                        }\r
                                        \r
-                                       TRACE(_T("A Graphic left %d right %d\r\n"),rect.left,rect.right);\r
+                                       //TRACE(_T("A Graphic left %d right %d\r\n"),rect.left,rect.right);\r
                                        FillBackGround(pLVCD->nmcd.hdc, (INT_PTR)pLVCD->nmcd.dwItemSpec,rect);\r
                                        \r
                                        GitRev* data = (GitRev*)m_arShownList.GetAt(pLVCD->nmcd.dwItemSpec);\r
@@ -1054,7 +1054,7 @@ void CGitLogListBase::OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult)
                                GitRev* pLogEntry = reinterpret_cast<GitRev *>(m_arShownList.GetAt(pLVCD->nmcd.dwItemSpec));\r
                                CRect rect;\r
                                GetSubItemRect(pLVCD->nmcd.dwItemSpec, pLVCD->iSubItem, LVIR_BOUNDS, rect);\r
-                               TRACE(_T("Action left %d right %d\r\n"),rect.left,rect.right);\r
+                               //TRACE(_T("Action left %d right %d\r\n"),rect.left,rect.right);\r
                                // Get the selected state of the\r
                                // item being drawn.                                                    \r
 \r
@@ -1729,12 +1729,12 @@ int CGitLogListBase::FillGitLog(CTGitPath *path,int info,CString *from,CString *
                if(m_IsOldFirst)\r
                {\r
                        m_logEntries.GetGitRevAt(m_logEntries.size()-i-1).m_IsFull=TRUE;\r
-                       this->m_arShownList.Add(&m_logEntries[m_logEntries.size()-i-1]);\r
+                       this->m_arShownList.Add(&m_logEntries.GetGitRevAt(m_logEntries.size()-i-1));\r
                \r
                }else\r
                {\r
                        m_logEntries.GetGitRevAt(i).m_IsFull=TRUE;\r
-                       this->m_arShownList.Add(&m_logEntries[i]);\r
+                       this->m_arShownList.Add(&m_logEntries.GetGitRevAt(i));\r
                }\r
        }\r
 \r
@@ -1751,6 +1751,8 @@ int CGitLogListBase::BeginFetchLog()
        this->m_logEntries.ClearAll();\r
        git_init();\r
 \r
+       this->m_LogCache.ClearAllParent();\r
+\r
        m_LogCache.FetchCacheIndex(g_Git.m_CurrentDir);\r
 \r
     CTGitPath *path;\r
@@ -2059,6 +2061,7 @@ UINT CGitLogListBase::LogThread()
        if(BeginFetchLog())\r
                return -1;\r
 \r
+       TRACE(_T("\n===Begin===\n"));\r
        //Update work copy item;\r
        if( m_logEntries.size() > 0)\r
        {\r
@@ -2097,7 +2100,6 @@ UINT CGitLogListBase::LogThread()
                        break;\r
 \r
                CGitHash hash = (char*)commit.m_hash ;\r
-\r
                        \r
                GitRev *pRev = m_LogCache.GetCacheData(hash);\r
                \r
@@ -2105,27 +2107,32 @@ UINT CGitLogListBase::LogThread()
                {\r
                        pRev->ParserFromCommit(&commit);\r
                        pRev->ParserParentFromCommit(&commit);\r
-\r
                        pRev->SafeFetchFullInfo(&g_Git);\r
-                       git_free_commit(&commit);\r
-                       \r
+                                               \r
                }else\r
                {\r
                        ASSERT(pRev->m_CommitHash == hash);\r
                        pRev->ParserParentFromCommit(&commit);\r
                }\r
+#ifdef DEBUG           \r
+               pRev->DbgPrint();\r
+               TRACE(_T("\n"));\r
+#endif\r
+               git_free_commit(&commit);\r
 \r
                this->m_critSec.Lock();\r
                m_logEntries.push_back(hash);\r
                m_arShownList.Add(pRev);\r
                this->m_critSec.Unlock();\r
 \r
-               if(t2-t1>500 )\r
+               if(t2-t1>500 || (m_logEntries.size()-oldsize >100))\r
                {\r
                        //update UI\r
                        int percent=m_logEntries.size()*100/total + GITLOG_START+1;\r
                        if(percent > 99)\r
                                percent =99;\r
+                       if(percent < GITLOG_START)\r
+                               percent = GITLOG_START +1;\r
 \r
                        oldsize = m_logEntries.size();\r
                        PostMessage(LVM_SETITEMCOUNT, (WPARAM) this->m_logEntries.size(),(LPARAM) LVSICF_NOINVALIDATEALL|LVSICF_NOSCROLL);\r
@@ -2486,7 +2493,7 @@ void CGitLogListBase::RecalculateShownList(CPtrArray * pShownlist)
                        }\r
                        if ((m_nSelectedFilter == LOGFILTER_ALL)||(m_nSelectedFilter == LOGFILTER_REVS))\r
                        {\r
-                               sRev.Format(_T("%s"), m_logEntries.GetGitRevAt(i).m_CommitHash);\r
+                               sRev.Format(_T("%s"), m_logEntries.GetGitRevAt(i).m_CommitHash.ToString());\r
                                if ((sRev.Find(find) >= 0)&&(IsEntryInDateRange(i)))\r
                                {\r
                                        pShownlist->Add(&m_logEntries.GetGitRevAt(i));\r