commit 2a771febd1ac49dbcef94d3f4b31a023ad19bc2e
Author: Pavel Sanda <[email protected]>
Date: Sat Feb 8 11:54:16 2025 +0100
Another attempt on #12819 - check for deleted documents.
ATM we detected some file rewrites as removal and we need
time delay to handle this.
More detailed comments at #12819.
https://www.mail-archive.com/[email protected]/msg223557.html
---
src/Buffer.cpp | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index f9ad2dcd6b..3d05442398 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -5681,14 +5681,26 @@ void Buffer::Impl::fileExternallyModified(bool const
exists)
// Dirty buffers must be visible at all times.
if (wa_ && wa_->unhide(owner_)) {
wa_->updateTitles();
- if (!exists) {
- lyx_clean = false;
- frontend::Alert::warning(
- _("File deleted from disk"),
- bformat(_("The file\n %1$s\n"
- "has been deleted from disk!"),
- from_utf8(filename.absFileName())));
- }
+
+ if (exists)
+ return;
+ //Essentially the same problem as in FileMonitorGuard::refresh.
+ //'exists' is not reliable marker of file removal here, e.g.
+ //file overwrite often causes short-term removal, see #12819.
+ std::this_thread::sleep_for(100ms);
+ FileName refreshf (filename.absFileName());
+ //Only double check with delay will trigger warning
+ if(refreshf.exists())
+ return;
+
+ lyx_clean = false;
+ wa_->updateTitles();
+ frontend::Alert::warning(
+ _("File deleted from disk"),
+ bformat(_("The file\n %1$s\n"
+ "has been deleted from disk!\n"
+ "It will be marked as modified now."),
+ from_utf8(filename.absFileName())));
}
else
// Unable to unhide the buffer (e.g. no GUI or not current View)
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs