mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 18:28:12 +00:00
LibGUI: Set TextEditor to unmodified after saving size=0 files
This fixes #7946 Previously, TextEditor::write_to_file() would not mark its document as unmodified if the file size was 0. This caused a desync in the Text Editor app between the window's is_modified state and the TextEditor's. It's already noted in the comments of the app's save action code that propagating the modified state automatically would be good, and it would solve issues like this, but I'm not yet familiar enough with the code to try a change like that.
This commit is contained in:
parent
5b47e9b39a
commit
6f92d1e639
1 changed files with 16 additions and 15 deletions
|
@ -1170,25 +1170,26 @@ bool TextEditor::write_to_file(const String& path)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (file_size == 0)
|
||||
return true;
|
||||
|
||||
for (size_t i = 0; i < line_count(); ++i) {
|
||||
auto& line = this->line(i);
|
||||
if (line.length()) {
|
||||
auto line_as_utf8 = line.to_utf8();
|
||||
ssize_t nwritten = write(fd, line_as_utf8.characters(), line_as_utf8.length());
|
||||
if (nwritten < 0) {
|
||||
if (file_size == 0) {
|
||||
// A size 0 file doesn't need a data copy.
|
||||
} else {
|
||||
for (size_t i = 0; i < line_count(); ++i) {
|
||||
auto& line = this->line(i);
|
||||
if (line.length()) {
|
||||
auto line_as_utf8 = line.to_utf8();
|
||||
ssize_t nwritten = write(fd, line_as_utf8.characters(), line_as_utf8.length());
|
||||
if (nwritten < 0) {
|
||||
perror("write");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
char ch = '\n';
|
||||
ssize_t nwritten = write(fd, &ch, 1);
|
||||
if (nwritten != 1) {
|
||||
perror("write");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
char ch = '\n';
|
||||
ssize_t nwritten = write(fd, &ch, 1);
|
||||
if (nwritten != 1) {
|
||||
perror("write");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
document().set_unmodified();
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue