OSDN Git Service

PATCH: [ 1453252 ] Fix closing filecompare after error
authorKimmo Varis <kimmov@gmail.com>
Sun, 19 Mar 2006 08:55:37 +0000 (08:55 +0000)
committerKimmo Varis <kimmov@gmail.com>
Sun, 19 Mar 2006 08:55:37 +0000 (08:55 +0000)
Src/Changes.txt
Src/MainFrm.cpp
Src/MergeDoc.cpp

index 26c28a2..c5834e2 100644 (file)
@@ -5,6 +5,8 @@ Add new items to top.
 2006-03-19 Kimmo
  PATCH: [ 1449892 ] Add compare method to configlog
   Src: ConfigLog.cpp ConfigLog.h MainFrm.cpp
+ PATCH: [ 1453252 ] Fix closing filecompare after error
+  Src: MainFrm.cpp MergeDoc.cpp
 
 2006-03-17 Tim
  PATCH: [ 1449571 ] Add '*.pm' and '*.plx' to Perl highlighter
index d3bfe40..0d12504 100644 (file)
@@ -632,6 +632,7 @@ CMainFrame::ShowMergeDoc(CDirDoc * pDirDoc,  const FileLocation & ifilelocLeft,
                }
        }
 
+       // Note that OpenDocs() takes care of closing compare window when needed.
        OPENRESULTS_TYPE openResults = pMergeDoc->OpenDocs(filelocLeft, filelocRight,
                        bROLeft, bRORight);
 
@@ -645,12 +646,6 @@ CMainFrame::ShowMergeDoc(CDirDoc * pDirDoc,  const FileLocation & ifilelocLeft,
                else
                        MDINext();
        }
-       else
-       {
-               // Close file compare when loading files fails
-               CWnd* pWnd = pMergeDoc->GetParentFrame();
-               pWnd->DestroyWindow();
-       }
        return openResults;
 }
 
index 4d72859..bb81c05 100644 (file)
@@ -2579,7 +2579,7 @@ bool CMergeDoc::IsValidCodepageForMergeEditor(unsigned cp) const
 }
 
 /**
- * @brief Loads files and does initial rescan
+ * @brief Loads files and does initial rescan.
  * @param filelocLeft [in] File to open to left side (path & encoding info)
  * @param fileLocRight [in] File to open to right side (path & encoding info)
  * @param bROLeft [in] Is left file read-only
@@ -2588,8 +2588,7 @@ bool CMergeDoc::IsValidCodepageForMergeEditor(unsigned cp) const
  * @todo Options are still read from CMainFrame, this will change
  * @sa CMainFrame::ShowMergeDoc()
  */
-OPENRESULTS_TYPE
-CMergeDoc::OpenDocs(FileLocation filelocLeft, FileLocation filelocRight,
+OPENRESULTS_TYPE CMergeDoc::OpenDocs(FileLocation filelocLeft, FileLocation filelocRight,
                BOOL bROLeft, BOOL bRORight)
 {
        BOOL bBinary = FALSE;
@@ -2700,12 +2699,19 @@ CMergeDoc::OpenDocs(FileLocation filelocLeft, FileLocation filelocRight,
        // Bail out if either side failed
        if (!FileLoadResult::IsOk(nLeftSuccess) || !FileLoadResult::IsOk(nRightSuccess))
        {
+               OPENRESULTS_TYPE retVal = OPENRESULTS_FAILED_MISC;
                if (FileLoadResult::IsBinary(nLeftSuccess) || FileLoadResult::IsBinary(nRightSuccess))
                {
                        CompareBinaries(sLeftFile, sRightFile, nLeftSuccess, nRightSuccess);
-                       return OPENRESULTS_FAILED_BINARY;
+                       retVal = OPENRESULTS_FAILED_BINARY;
                }
-               return OPENRESULTS_FAILED_MISC;
+               CChildFrame *pFrame = GetParentFrame();
+               if (pFrame)
+               {
+                       // Use verify macro to trap possible error in debug.
+                       VERIFY(pFrame->DestroyWindow());
+               }
+               return retVal;
        }
 
        // Warn user if file load was lossy (bad encoding)