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

List:       kde-commits
Subject:    [kdevelop/4.2] projectmanagers/cmake
From:       Aleix Pol <aleixpol () kde ! org>
Date:       2011-01-24 1:36:43
Message-ID: 20110124013643.7F75DA6092 () git ! kde ! org
[Download RAW message or body]

Git commit 74704317d9325b8a4594a15e26a5bfe20530f619 by Aleix Pol.
Pushed by apol into branch '4.2'.

Delay watched items treatment until the project is not busy with other changes. Fixed \
the crash I could reproduce by massive project changes (git checkout on different \
calligra branches).

Please reopen if it didn't help on your case with a new backtrace.

BUG: 262206

M  +16   -12   projectmanagers/cmake/cmakemanager.cpp     

http://commits.kde.org/kdevelop/74704317d9325b8a4594a15e26a5bfe20530f619

diff --git a/projectmanagers/cmake/cmakemanager.cpp \
b/projectmanagers/cmake/cmakemanager.cpp index bfb8b7f..8f89390 100644
--- a/projectmanagers/cmake/cmakemanager.cpp
+++ b/projectmanagers/cmake/cmakemanager.cpp
@@ -729,20 +729,24 @@ void CMakeManager::deletedWatched(const QString& path)
     IProject* p=ICore::self()->projectController()->findProjectForUrl(dirurl);
     
     if(p) {
-        dirurl.adjustPath(KUrl::AddTrailingSlash);
-        if(p->folder()==dirurl)
-            ICore::self()->projectController()->closeProject(p);
-        else if(!isReloading(p)) {
-            KUrl url(path);
-            
-            if(path.endsWith("/CMakeLists.txt")) {
-                QList<ProjectFolderItem*> folders = p->foldersForUrl(url.upUrl());
-                foreach(ProjectFolderItem* folder, folders) 
-                    reload(folder);
-                
+        if(!isReloading(p)) {
+            dirurl.adjustPath(KUrl::AddTrailingSlash);
+            if(p->folder()==dirurl) {
+                ICore::self()->projectController()->closeProject(p);
             } else {
-                qDeleteAll(p->itemsForUrl(url));
+                KUrl url(path);
+                
+                if(path.endsWith("/CMakeLists.txt")) {
+                    QList<ProjectFolderItem*> folders = \
p->foldersForUrl(url.upUrl()); +                    foreach(ProjectFolderItem* \
folder, folders)  +                        reload(folder);
+                    
+                } else {
+                    qDeleteAll(p->itemsForUrl(url));
+                }
             }
+        } else {
+            QMetaObject::invokeMethod(this, "deletedWatched", Qt::QueuedConnection, \
Q_ARG(QString, path));  }
     }
 }


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

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