> 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 > >