> On Dec. 28, 2011, 7:37 a.m., David Faure wrote:
> > kio/kio/kdirlister.cpp, line 1078
> > <http://git.reviewboard.kde.org/r/103555/diff/1/?file=44960#file44960line1078>
> >
> >     Yes, but changing permissions is only one case for ending up here. The 
> > most common case is that KDirWatch (in Stat mode) notifies us that a 
> > directory has changed because files have been created in it, or deleted, 
> > etc. In that case we do want to make the directory as dirty, not its parent.
> >     I guess that means we need to do both, mark the parent and the 
> > directory itself, as dirty. Sucks for performance, though.
> >     The real issue is that KDirWatch's dirty() signal is pretty unspecific.
> >     
> >     Ah, I know. This is called by KDirWatch so it's local only, no networ 
> > transparency.
> >     So we should just clear the permissions/owner in the KFileItem for the 
> > directory, they'll be re-determined on demand by KFileItem.
> 
> Dawit Alemayehu wrote:
>     > Yes, but changing permissions is only one case for ending up here. The 
> most common case is that KDirWatch (in Stat mode) notifies us that a 
> directory has changed > because files have been created in it, or deleted, 
> etc. In that case we do want to make the directory as dirty, not its parent.
>     
>     Yes, I got that. But when an item in a given directory is renamed, 
> deleted or created, slotFileDirty is invoked with the path set to that 
> directory and not the specific file or directory that was modified. IOW if I 
> have a directory called "Test" that contains two items, a directory named 
> "New Folder" and a file named "New File.txt", then when either one of those 
> two items are renamed or deleted or a third item is created the parameter to 
> slotFileDirty is the full path to "Test". However, if I simply touch or 
> change permission on either one of those items, then the parameter to 
> slotFileDirty is set to the full path for "Test/New Folder" or "Test/New 
> File.txt".
>     
>     Everything works fine except when you change permissions or timestamp on 
> the child directory, i.e "New Folder". In that case because the parameter 
> passed to slotFileDirty is the full path to the directory that was modified, 
> "Test/New Folder", the call to updateDirectory, called from handleDirtyDir, 
> does nothing. Why ? The call to checkUpdate always returns false since "New 
> Folder" is in neither itemsInUse nor itemsCached containers.

@David: Tried this approach, i.e. calling refresh on the changed directory's 
KFileItem if it is not in the cache, but it did not seem to work for me. I am 
sure I am doing it wrong. Here is what I changed my patch into:

if (!itemsInUse.contains(url.path()) && !itemsCached.contains(url.path())) {
    KFileItem* item = findByUrl(0, url);
    if (item) {
        kDebug(7004) << "*** Refreshing" << item;
        item->refresh();
        return;
    }
}

But that does not seem to work. The code path is definitely hit called because 
the debug statement is printed out on the command line.


- Dawit


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103555/#review9322
-----------------------------------------------------------


On Dec. 27, 2011, 6:26 p.m., Dawit Alemayehu wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103555/
> -----------------------------------------------------------
> 
> (Updated Dec. 27, 2011, 6:26 p.m.)
> 
> 
> Review request for kdelibs and David Faure.
> 
> 
> Description
> -------
> 
> If you open a directory that contains other directories in Konqueror or 
> Dolphin, change the permission of one of these directories from outside, say 
> the command line, and right click on the same directory to look at the 
> permission tab in the properties dialog, you will see that the permission 
> change has not been updated. This patch addresses that bug.
> 
> 
> This addresses bug 173733.
>     http://bugs.kde.org/show_bug.cgi?id=173733
> 
> 
> Diffs
> -----
> 
>   kio/kio/kdirlister.cpp ec3d622 
> 
> Diff: http://git.reviewboard.kde.org/r/103555/diff/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Dawit Alemayehu
> 
>

Reply via email to