From d6cd98cfa1a81a916a1c86551f33f57a870809d0 Mon Sep 17 00:00:00 2001 From: Rhin Date: Thu, 25 Jul 2019 23:48:39 -0500 Subject: [PATCH] TextEditor: Fix nullptr refrence to save action & m_path (#364) We forgot to persist our actions in the constructor for later reference, whoops. Also use the correct path in the "open" action. --- Applications/TextEditor/TextEditorWidget.cpp | 25 ++++++++++---------- Applications/TextEditor/TextEditorWidget.h | 4 ++++ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Applications/TextEditor/TextEditorWidget.cpp b/Applications/TextEditor/TextEditorWidget.cpp index a399a80d296..ae94a25b968 100644 --- a/Applications/TextEditor/TextEditorWidget.cpp +++ b/Applications/TextEditor/TextEditorWidget.cpp @@ -29,20 +29,20 @@ TextEditorWidget::TextEditorWidget() statusbar->set_text(builder.to_string()); }; - auto new_action = GAction::create("New", { Mod_Ctrl, Key_N }, GraphicsBitmap::load_from_file("/res/icons/16x16/new.png"), [](const GAction&) { + m_new_action = GAction::create("New", { Mod_Ctrl, Key_N }, GraphicsBitmap::load_from_file("/res/icons/16x16/new.png"), [](const GAction&) { dbgprintf("FIXME: Implement File/New\n"); }); - auto open_action = GAction::create("Open...", { Mod_Ctrl, Key_O }, GraphicsBitmap::load_from_file("/res/icons/16x16/open.png"), [this](const GAction&) { + m_open_action = GAction::create("Open...", { Mod_Ctrl, Key_O }, GraphicsBitmap::load_from_file("/res/icons/16x16/open.png"), [this](const GAction&) { Optional open_name = GFilePicker::get_open_filepath(); if (!open_name.has_value()) return; - open_sesame(m_path); + open_sesame(open_name.value()); }); - auto save_as_action = GAction::create("Save as...", { Mod_None, Key_F12 }, GraphicsBitmap::load_from_file("/res/icons/16x16/save.png"), [this](const GAction&) { + m_save_as_action = GAction::create("Save as...", { Mod_None, Key_F12 }, GraphicsBitmap::load_from_file("/res/icons/16x16/save.png"), [this](const GAction&) { Optional save_name = GFilePicker::get_save_filepath(); if (!save_name.has_value()) return; @@ -56,14 +56,14 @@ TextEditorWidget::TextEditorWidget() dbg() << "Wrote document to " << save_name.value(); }); - auto save_action = GAction::create("Save", { Mod_Ctrl, Key_S }, GraphicsBitmap::load_from_file("/res/icons/16x16/save.png"), [&](const GAction&) { + m_save_action = GAction::create("Save", { Mod_Ctrl, Key_S }, GraphicsBitmap::load_from_file("/res/icons/16x16/save.png"), [&](const GAction&) { if (!m_path.is_empty()) { if (!m_editor->write_to_file(m_path)) GMessageBox::show("Unable to save file.\n", "Error", GMessageBox::Type::Error, GMessageBox::InputType::OK, window()); return; } - save_as_action->activate(); + m_save_as_action->activate(); }); auto menubar = make(); @@ -75,10 +75,9 @@ TextEditorWidget::TextEditorWidget() menubar->add_menu(move(app_menu)); auto file_menu = make("File"); - file_menu->add_action(new_action); - file_menu->add_action(open_action); - file_menu->add_action(save_action); - file_menu->add_action(save_as_action); + file_menu->add_action(*m_new_action); + file_menu->add_action(*m_open_action); + file_menu->add_action(*m_save_action); menubar->add_menu(move(file_menu)); auto edit_menu = make("Edit"); @@ -108,9 +107,9 @@ TextEditorWidget::TextEditorWidget() GApplication::the().set_menubar(move(menubar)); - toolbar->add_action(move(new_action)); - toolbar->add_action(move(open_action)); - toolbar->add_action(move(save_action)); + toolbar->add_action(*m_new_action); + toolbar->add_action(*m_open_action); + toolbar->add_action(*m_save_action); toolbar->add_separator(); diff --git a/Applications/TextEditor/TextEditorWidget.h b/Applications/TextEditor/TextEditorWidget.h index cfeb335ee28..7515a984bbd 100644 --- a/Applications/TextEditor/TextEditorWidget.h +++ b/Applications/TextEditor/TextEditorWidget.h @@ -19,4 +19,8 @@ private: GTextEditor* m_editor { nullptr }; String m_path; + RefPtr m_new_action; + RefPtr m_open_action; + RefPtr m_save_action; + RefPtr m_save_as_action; };