mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 15:17:45 +00:00
HackStudio: Fix editor not marking file with unsaved changes as dirty
The editor's on_change callback was being overwritten in HackStudioWidget.cpp in order to call update_gml_preview on every change. This stopped the original callback from being called and marking files as dirty when changed. Now we call update_gml_preview in a new callback within the editor wrapper, which is then called within the original on_change callback in the editor.
This commit is contained in:
parent
d454c63bde
commit
82b88c6e16
3 changed files with 6 additions and 2 deletions
|
@ -43,6 +43,8 @@ EditorWrapper::EditorWrapper()
|
||||||
};
|
};
|
||||||
|
|
||||||
m_editor->on_change = [this] {
|
m_editor->on_change = [this] {
|
||||||
|
if (this->on_change)
|
||||||
|
this->on_change();
|
||||||
bool was_dirty = m_document_dirty;
|
bool was_dirty = m_document_dirty;
|
||||||
m_document_dirty = true;
|
m_document_dirty = true;
|
||||||
if (!was_dirty)
|
if (!was_dirty)
|
||||||
|
|
|
@ -52,6 +52,8 @@ public:
|
||||||
void update_diff();
|
void update_diff();
|
||||||
Vector<Diff::Hunk> const& hunks() const { return m_hunks; }
|
Vector<Diff::Hunk> const& hunks() const { return m_hunks; }
|
||||||
|
|
||||||
|
Function<void()> on_change;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
EditorWrapper();
|
EditorWrapper();
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,7 @@ bool HackStudioWidget::open_file(const String& full_filename)
|
||||||
current_editor().set_focus(true);
|
current_editor().set_focus(true);
|
||||||
|
|
||||||
current_editor().on_cursor_change = [this] { update_statusbar(); };
|
current_editor().on_cursor_change = [this] { update_statusbar(); };
|
||||||
current_editor().on_change = [this] { update_gml_preview(); };
|
current_editor_wrapper().on_change = [this] { update_gml_preview(); };
|
||||||
update_gml_preview();
|
update_gml_preview();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -541,7 +541,7 @@ void HackStudioWidget::add_new_editor(GUI::Widget& parent)
|
||||||
wrapper->editor().set_focus(true);
|
wrapper->editor().set_focus(true);
|
||||||
wrapper->set_project_root(LexicalPath(m_project->root_path()));
|
wrapper->set_project_root(LexicalPath(m_project->root_path()));
|
||||||
wrapper->editor().on_cursor_change = [this] { update_statusbar(); };
|
wrapper->editor().on_cursor_change = [this] { update_statusbar(); };
|
||||||
wrapper->editor().on_change = [this] { update_gml_preview(); };
|
wrapper->on_change = [this] { update_gml_preview(); };
|
||||||
set_edit_mode(EditMode::Text);
|
set_edit_mode(EditMode::Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue