]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/docview.cpp
Added chapter on collection and container classes to contents
[wxWidgets.git] / src / common / docview.cpp
index cf02ef0e08584ea95a5f6df75b0952e57408bf0c..bcb467b60e3fbd3305a6183aa80480dd24368afb 100644 (file)
@@ -1114,8 +1114,8 @@ wxDocument *wxDocManager::CreateDocument(const wxString& path, long flags)
         }
         return newDoc;
     }
-    else
-        return (wxDocument *) NULL;
+
+    return (wxDocument *) NULL;
 }
 
 wxView *wxDocManager::CreateView(wxDocument *doc, long flags)
@@ -1364,7 +1364,7 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
     wxString descrBuf = wxT("*.*");
 #endif
 
-    int FilterIndex = 0;
+    int FilterIndex = -1;
 
     wxWindow* parent = wxFindSuitableParent();
 
@@ -1376,6 +1376,7 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
                                         0,
                                         parent);
 
+    wxDocTemplate *theTemplate = (wxDocTemplate *)NULL;
     if (!pathTmp.IsEmpty())
     {
         if (!wxFileExists(pathTmp))
@@ -1396,21 +1397,20 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
 
         path = pathTmp;
 
-        // This is dodgy in that we're selecting the template on the
-        // basis of the file extension, which may not be a standard
-        // one. We really want to know exactly which template was
-        // chosen by using a more advanced file selector.
-        wxDocTemplate *theTemplate = FindTemplateForPath(path);
-        if ( !theTemplate )
+        // first choose the template using the extension, if this fails (i.e.
+        // wxFileSelectorEx() didn't fill it), then use the path
+        if ( FilterIndex != -1 )
             theTemplate = templates[FilterIndex];
-
-        return theTemplate;
+        if ( !theTemplate )
+            theTemplate = FindTemplateForPath(path);
     }
     else
     {
         path = wxT("");
-        return (wxDocTemplate *) NULL;
     }
+
+    return theTemplate;
+
 #if 0
     // In all other windowing systems, until we have more advanced
     // file selectors, we must select the document type (template) first, and
@@ -2253,7 +2253,7 @@ bool wxTransferFileToStream(const wxString& filename, wxOutputStream& stream)
     FILE *fd1;
     int ch;
 
-    if ((fd1 = wxFopen (filename.fn_str(), wxT("rb"))) == NULL)
+    if ((fd1 = wxFopen (filename, wxT("rb"))) == NULL)
         return FALSE;
 
     while ((ch = getc (fd1)) != EOF)
@@ -2268,7 +2268,7 @@ bool wxTransferStreamToFile(wxInputStream& stream, const wxString& filename)
     FILE *fd1;
     char ch;
 
-    if ((fd1 = wxFopen (filename.fn_str(), wxT("wb"))) == NULL)
+    if ((fd1 = wxFopen (filename, wxT("wb"))) == NULL)
     {
         return FALSE;
     }