<table><tr><td style="">progwolff added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D7671" rel="noreferrer">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D7671#143269" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D7671#143269</a>, <a href="https://phabricator.kde.org/p/aacid/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;" rel="noreferrer">@aacid</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>Have you read my email? There clearly says what happens and what the documentation says it should happen (at least to my understanding of reading it).</p></div>
</blockquote>

<p>Sure, I read your mail. But I still don't think that KDirWatch behaves wrong.<br />
On saving a file with QSaveFile or on a plain <tt style="background: #ebebeb; font-size: 13px;">mv somefile watchedfile</tt> the watched file is never removed. As the docs say, the dirty signal of a directory is emitted when a file in this directory is removed or created. This is not the case here.<br />
KDirWatch yet does send a "created" signal on inotify's MOVE_TO flag and a "removed" signal on inotify's MOVE_FROM flag. This does not mean, the file actually has been removed or added at any time.</p>

<p>So, this behaviour is a little strange and confusing, but from my perspective it's still coherent with the documentation.</p>

<p>Even if KDirWatch would work as you expect it to, there are cases where Okular still does not react to those signals:<br />
Consider the command <tt style="background: #ebebeb; font-size: 13px;">rm watchedfile && touch watchedfile</tt>.<br />
KDirWatch will send the signals: file removed, directory dirty, file added, directory dirty.<br />
Okular receives the first dirty signal asynchronously. Okular checks if the file exists via <tt style="background: #ebebeb; font-size: 13px;">QFile::exists</tt>. It is likely that the file has already been added (<tt style="background: #ebebeb; font-size: 13px;">touch</tt>) by that time, so Okular will miss to reload the file.</p>

<hr class="remarkup-hr" />

<blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D7671#143360" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D7671#143360</a>, <a href="https://phabricator.kde.org/p/rkflx/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;" rel="noreferrer">@rkflx</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>Concerning <a href="https://phabricator.kde.org/R223:f93ccd7923491c6b1412ba5cb1fe0711e44496d8" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">f93ccd7</a>, I find the part re-adding the watch for removed files is also not needed with <a href="https://phabricator.kde.org/D7671" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D7671</a>.</p></div>
</blockquote>

<p>I agree. I think KDirWatch does this internally. Something that could be mentioned in the docs too.</p>

<blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D7671#143360" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D7671#143360</a>, <a href="https://phabricator.kde.org/p/rkflx/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;" rel="noreferrer">@rkflx</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>Here's my suggestion going forward:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Independently from Okular's case, evaluate accuracy of KDirWatch autotests and docs regarding "move/rename" (currently not mentioned at all, thus to be considered undefined behaviour…) as well as directory operations in general, fix potential code bugs and doc confusions</li>
<li class="remarkup-list-item">Agree to accept <a href="https://phabricator.kde.org/D7671" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D7671</a> in any case (reasons: code is simpler and less error-prone, fixes the issue even for users on LTS distros with old KF5 libs)</li>
<li class="remarkup-list-item">Try to revert <a href="https://phabricator.kde.org/R223:f93ccd7923491c6b1412ba5cb1fe0711e44496d8" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">f93ccd7</a> including later fixups
<br /><br />
TL;DR: Do both: Fix KDirWatch and apply <a href="https://phabricator.kde.org/D7671" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D7671</a>.</li>
</ul></div>
</blockquote>

<p>I'd be perfectly happy with this. It's probably a good idea to recheck the docs of KDirWatch and mention the move_to and move_from cases there.<br />
Thanks for your constructive participation!</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R223 Okular</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D7671" rel="noreferrer">https://phabricator.kde.org/D7671</a></div></div><br /><div><strong>To: </strong>progwolff, aacid<br /><strong>Cc: </strong>sander, rkflx, Okular, aacid<br /></div>