OSDN Git Service

Ver0.08pre
authorMasayuki Satoh <miyabi.satoh@gmail.com>
Sat, 23 Aug 2014 03:39:45 +0000 (12:39 +0900)
committerMasayuki Satoh <miyabi.satoh@gmail.com>
Sat, 23 Aug 2014 03:39:45 +0000 (12:39 +0900)
filetablemodel.cpp

index a8526e7..04b8148 100644 (file)
@@ -53,18 +53,9 @@ bool FileTableModel::setPath(const QString &path)
         qDebug() << path;\r
     }\r
     else {\r
-        QFileInfoList::iterator it, itRoot = m_fileInfoList.end();\r
+        QFileInfoList::iterator it;\r
+        bool removeDotDot = false;\r
         for (it = m_fileInfoList.begin(); it != m_fileInfoList.end(); ) {\r
-            if (it->fileName() == "..") {\r
-                if (m_dir.isRoot()) {\r
-                   it = m_fileInfoList.erase(it);\r
-                    itRoot = m_fileInfoList.end();\r
-                    continue;\r
-                }\r
-                else {\r
-                    itRoot = it;\r
-                }\r
-            }\r
 #ifdef Q_OS_WIN32\r
             if (!(filter() & QDir::System)){\r
                 DWORD dwFlags = ::GetFileAttributes(\r
@@ -78,13 +69,30 @@ bool FileTableModel::setPath(const QString &path)
                 }\r
             }\r
 #endif\r
+            if (it->fileName() == "..") {\r
+                if (m_dir.isRoot()) {\r
+                    qDebug() << m_dir.absolutePath() << " is root.";\r
+                    it = m_fileInfoList.erase(it);\r
+                    removeDotDot = true;\r
+                    continue;\r
+                }\r
+            }\r
             it++;\r
         }\r
         // ソート方法によらず、".."は必ず先頭にする\r
-        if (itRoot != m_fileInfoList.begin() && itRoot != m_fileInfoList.end()) {\r
-            QFileInfo info(*itRoot);\r
-            m_fileInfoList.erase(itRoot);\r
-            m_fileInfoList.push_front(info);\r
+        if (!removeDotDot) {\r
+            QFileInfoList::iterator itRoot = m_fileInfoList.end();\r
+            for (it = m_fileInfoList.begin(); it != m_fileInfoList.end(); it++) {\r
+                if (it->fileName() == "..") {\r
+                    itRoot = it;\r
+                    break;\r
+                }\r
+            }\r
+            if (itRoot != m_fileInfoList.end()) {\r
+                QFileInfo info(*itRoot);\r
+                m_fileInfoList.erase(itRoot);\r
+                m_fileInfoList.push_front(info);\r
+            }\r
         }\r
     }\r
 \r