From 78fecef02d269554ab286e6ebfd2568f968d00ae Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Sun, 26 Jul 2020 09:58:20 +0300 Subject: [PATCH] Fix add source dispose bug --- applications/gui2/src/modules/addsource.cpp | 9 +++++++-- applications/gui2/src/modules/addsource.hpp | 1 + applications/gui2/src/views/addsource.cpp | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/applications/gui2/src/modules/addsource.cpp b/applications/gui2/src/modules/addsource.cpp index 166d76a91..89eef76af 100644 --- a/applications/gui2/src/modules/addsource.cpp +++ b/applications/gui2/src/modules/addsource.cpp @@ -13,14 +13,19 @@ void AddCtrl::init() { } void AddCtrl::show() { - if (screen->childIndex(window) == -1) { + if (!window || screen->childIndex(window) == -1) { window = new ftl::gui2::AddSourceWindow(screen, this); } - window->requestFocus(); window->setVisible(true); + window->requestFocus(); screen->performLayout(); } +void AddCtrl::disposeWindow() { + window->dispose(); + window = nullptr; +} + ftl::Configurable *AddCtrl::add(const std::string &uri) { try { if (io->feed()->sourceActive(uri)) { diff --git a/applications/gui2/src/modules/addsource.hpp b/applications/gui2/src/modules/addsource.hpp index b76daad9b..eab8fef9d 100644 --- a/applications/gui2/src/modules/addsource.hpp +++ b/applications/gui2/src/modules/addsource.hpp @@ -18,6 +18,7 @@ public: virtual void init() override; virtual void show(); + void disposeWindow(); ftl::Configurable *add(const std::string &uri); diff --git a/applications/gui2/src/views/addsource.cpp b/applications/gui2/src/views/addsource.cpp index 362eb2a4f..e698d2dcd 100644 --- a/applications/gui2/src/views/addsource.cpp +++ b/applications/gui2/src/views/addsource.cpp @@ -32,7 +32,7 @@ AddSourceWindow::AddSourceWindow(nanogui::Widget* parent, AddCtrl *ctrl) : auto close = new nanogui::Button(buttonPanel(), "", ENTYPO_ICON_CROSS); close->setTheme(dynamic_cast<ftl::gui2::Screen*>(screen())->getTheme("window_dark")); close->setBackgroundColor(theme()->mWindowHeaderGradientBot); - close->setCallback([this](){ dispose();}); + close->setCallback([this](){ this->close();}); rebuild(); @@ -267,7 +267,8 @@ void AddSourceWindow::rebuild() { void AddSourceWindow::close() { setVisible(false); - dispose(); + //dispose(); + ctrl_->disposeWindow(); } void AddSourceWindow::draw(NVGcontext *ctx) { -- GitLab