summaryrefslogtreecommitdiffstats
path: root/tdeio/tdeio/kdirlister.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-04-19 15:47:26 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-04-19 15:47:26 -0500
commit7217eca58605fb57b4dd0ffcd7ca4445681ce619 (patch)
treee38171eebe75ade33b056156ad09b43591a747f2 /tdeio/tdeio/kdirlister.cpp
parent947d16dfde60d75d9cc596673cb1be718c8210d0 (diff)
downloadtdelibs-7217eca58605fb57b4dd0ffcd7ca4445681ce619.tar.gz
tdelibs-7217eca58605fb57b4dd0ffcd7ca4445681ce619.zip
Fix KDirLister failure to emit events for all watchers of a given path
Fix KURL comparison
Diffstat (limited to 'tdeio/tdeio/kdirlister.cpp')
-rw-r--r--tdeio/tdeio/kdirlister.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/tdeio/tdeio/kdirlister.cpp b/tdeio/tdeio/kdirlister.cpp
index 8df6755f1..91f025013 100644
--- a/tdeio/tdeio/kdirlister.cpp
+++ b/tdeio/tdeio/kdirlister.cpp
@@ -274,7 +274,7 @@ bool KDirListerCache::listDir( KDirLister *lister, const KURL& _u,
urlsCurrentlyListed[urlStr + ":" + urlReferenceStr]->append( lister );
- TDEIO::ListJob *job = jobForUrl( urlStr );
+ TDEIO::ListJob *job = jobForUrl( urlStr + ":" + urlReferenceStr );
Q_ASSERT( job );
lister->jobStarted( job );
@@ -282,8 +282,9 @@ bool KDirListerCache::listDir( KDirLister *lister, const KURL& _u,
Q_ASSERT( itemU );
- if ( !lister->d->rootFileItem && lister->d->url == _url )
+ if ( !lister->d->rootFileItem && lister->d->url == _url ) {
lister->d->rootFileItem = itemU->rootItem;
+ }
lister->addNewItems( *(itemU->lstItems) );
lister->emitItems();
@@ -343,10 +344,11 @@ void KDirListerCache::stop( KDirLister *lister )
//kdDebug(7004) << k_funcinfo << " found lister in list - for " << url << endl;
bool ret = listers->removeRef( lister );
Q_ASSERT( ret );
-
+
TDEIO::ListJob *job = jobForUrl( url );
- if ( job )
+ if ( job ) {
lister->jobDone( job );
+ }
// move lister to urlsCurrentlyHeld
TQPtrList<KDirLister> *holders = urlsCurrentlyHeld[url];
@@ -411,7 +413,7 @@ void KDirListerCache::stop( KDirLister *lister, const KURL& _u )
holders->append( lister );
- TDEIO::ListJob *job = jobForUrl( urlStr );
+ TDEIO::ListJob *job = jobForUrl( urlStr + ":" + urlReferenceStr );
if ( job )
lister->jobDone( job );
@@ -498,7 +500,7 @@ void KDirListerCache::forgetDirs( KDirLister *lister, const KURL& _url, bool not
itemsInUse.remove( urlStr + ":" + urlReferenceStr );
// this job is a running update
- TDEIO::ListJob *job = jobForUrl( urlStr );
+ TDEIO::ListJob *job = jobForUrl( urlStr + ":" + urlReferenceStr );
if ( job )
{
lister->jobDone( job );
@@ -582,7 +584,7 @@ void KDirListerCache::updateDirectory( const KURL& _dir )
// restart the job for _dir if it is running already
bool killed = false;
TQWidget *window = 0;
- TDEIO::ListJob *job = jobForUrl( urlStr );
+ TDEIO::ListJob *job = jobForUrl( urlStr + ":" + urlReferenceStr );
if ( job )
{
window = job->window();
@@ -1230,7 +1232,7 @@ void KDirListerCache::slotRedirection( TDEIO::Job *j, const KURL& url )
// get the job if one's running for newUrl already (can be a list-job or an update-job), but
// do not return this 'job', which would happen because of the use of redirectionURL()
- TDEIO::ListJob *oldJob = jobForUrl( newUrl.url(), job );
+ TDEIO::ListJob *oldJob = jobForUrl( newUrl.url() + ":" + newUrl.internalReferenceURL(), job );
// listers of newUrl with oldJob: forget about the oldJob and use the already running one
// which will be converted to an updateJob
@@ -1445,7 +1447,7 @@ void KDirListerCache::emitRedirections( const KURL &oldUrl, const KURL &url )
TQString oldReferenceUrlStr = oldUrl.internalReferenceURL();
TQString urlReferenceStr = url.internalReferenceURL();
- TDEIO::ListJob *job = jobForUrl( oldUrlStr );
+ TDEIO::ListJob *job = jobForUrl( oldUrlStr + ":" + oldReferenceUrlStr );
if ( job )
killJob( job );