[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kdevelop-bugs
Subject:    [Bug 232137] Renaming a non-cmake-managed folder hides it's children
From:       Aleix Pol <aleixpol () kde ! org>
Date:       2010-08-31 0:12:07
Message-ID: 20100831001207.8D4A863754 () immanuel ! kde ! org
[Download RAW message or body]

https://bugs.kde.org/show_bug.cgi?id=232137


Aleix Pol <aleixpol@kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




--- Comment #1 from Aleix Pol <aleixpol kde org>  2010-08-31 02:12:00 ---
commit 9e07424f59343a613d58bfe395860cf8e10eecd5
Author: Aleix Pol <aleixpol@kde.org>
Date:   Tue Aug 31 01:01:54 2010 +0200

    Fix crash on renaming and make sure that folder renaming works.

    BUG: 232137

diff --git a/projectmanagers/cmake/cmakemanager.cpp
b/projectmanagers/cmake/cmakemanager.cpp
index 03de133..392be5f 100644
--- a/projectmanagers/cmake/cmakemanager.cpp
+++ b/projectmanagers/cmake/cmakemanager.cpp
@@ -363,6 +363,7 @@ QList<KDevelop::ProjectFolderItem*> CMakeManager::parse(
KDevelop::ProjectFolder
         }
         else
         {
+            reloadFiles(folder);

             KDevelop::ReferencedTopDUContext curr;
             if(item==item->project()->projectItem())
@@ -585,12 +586,9 @@ QList<KDevelop::ProjectFolderItem*> CMakeManager::parse(
KDevelop::ProjectFolder

                 setTargetFiles(targetItem, tfiles);
             }
-
         }
     }

-    reloadFiles(item);
-
     return folderList;
 }

@@ -809,14 +807,26 @@ void CMakeManager::dirtyFile(const QString & dirty)
         QList<ProjectFolderItem*> folders=p->foldersForUrl(dirty);
         Q_ASSERT(folders.isEmpty() || folders.size()==1);

-        if(!folders.isEmpty())
+        if(!folders.isEmpty()) {
+            QMutexLocker locker(&m_busyProjectsMutex);
+            m_busyProjects += folders.first();
+            locker.unlock();
+            
             reloadFiles(folders.first());
+            
+            locker.relock();
+            m_busyProjects.remove(folders.first());
+            locker.unlock();
+        }
     }
 }

 void CMakeManager::reloadFiles(ProjectFolderItem* item)
 {
-    QStringList entriesL = QDir(item->url().toLocalFile()).entryList(
QDir::AllEntries | QDir::NoDotAndDotDot );
+    QDir d(item->url().toLocalFile());
+    Q_ASSERT(d.exists());
+    
+    QStringList entriesL = d.entryList( QDir::AllEntries |
QDir::NoDotAndDotDot );
     QSet<QString> entries = filterFiles(entriesL);

     KUrl folderurl = item->url();
@@ -1373,6 +1383,9 @@ bool CMakeManager::renameFolder(ProjectFolderItem* _it,
const KUrl& newUrl)
     QString newName=KUrl::relativePath(lists.upUrl().path(), newUrl.path());
     if(newName.startsWith("./"))
         newName.remove(0,2);
+    
+    KUrl url = it->url();
+    IProject* project = it->project();

     ApplyChangesWidget e;
     e.setCaption(it->text());
@@ -1384,12 +1397,9 @@ bool CMakeManager::renameFolder(ProjectFolderItem* _it,
const KUrl& newUrl)

     bool ret = e.document()->replaceText(r, newName);

-    ret= ret && e.exec() == QDialog::Accepted;
-    if(ret)
-    {
-        ret = e.applyAllChanges();
-        ret = ret && KDevelop::renameUrl(it->project(), it->url(), newUrl);
-    }
+    ret &= e.exec() == QDialog::Accepted;
+    ret &= KDevelop::renameUrl(project, url, newUrl);
+    ret &= e.applyAllChanges();
     return ret;
 }

-- 
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

_______________________________________________
KDevelop-bugs mailing list
KDevelop-bugs@kdevelop.org
https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-bugs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic