[niepce: 32/34] gtk4: Fix crash
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce: 32/34] gtk4: Fix crash
- Date: Sun, 15 May 2022 02:54:05 +0000 (UTC)
commit 2a5d3eaf0d4a34001bf3e783b635be70575da2db
Author: Hubert Figuière <hub figuiere net>
Date: Sat May 14 21:18:40 2022 -0400
gtk4: Fix crash
- Crash happen when quitting the app with Ctrl-Q
src/niepce/ui/gridviewmodule.cpp | 6 ++----
src/niepce/ui/workspacecontroller.cpp | 13 +++++++++----
src/niepce/ui/workspacecontroller.hpp | 2 ++
3 files changed, 13 insertions(+), 8 deletions(-)
---
diff --git a/src/niepce/ui/gridviewmodule.cpp b/src/niepce/ui/gridviewmodule.cpp
index 87e3b22..3b4c32c 100644
--- a/src/niepce/ui/gridviewmodule.cpp
+++ b/src/niepce/ui/gridviewmodule.cpp
@@ -138,10 +138,8 @@ Gtk::Widget * GridViewModule::buildWidget()
m_librarylistview->set_vexpand(true);
m_context_menu->set_parent(*m_librarylistview);
- m_librarylistview->signal_unrealize().connect([this] {
- m_context_menu->unparent();
- });
-
+ m_librarylistview->signal_unrealize().connect(
+ sigc::mem_fun(*m_context_menu, &Gtk::PopoverMenu::unparent));
auto gesture = Gtk::GestureClick::create();
m_librarylistview->add_controller(gesture);
diff --git a/src/niepce/ui/workspacecontroller.cpp b/src/niepce/ui/workspacecontroller.cpp
index dc6c32c..d337fa9 100644
--- a/src/niepce/ui/workspacecontroller.cpp
+++ b/src/niepce/ui/workspacecontroller.cpp
@@ -77,6 +77,12 @@ WorkspaceController::WorkspaceController(const Glib::RefPtr<Gio::SimpleActionGro
}
}
+WorkspaceController::~WorkspaceController()
+{
+ m_context_menu->unparent();
+ delete m_context_menu;
+}
+
libraryclient::LibraryClientPtr WorkspaceController::getLibraryClient() const
{
return std::dynamic_pointer_cast<NiepceWindow>(m_parent.lock())->getLibraryClient();
@@ -465,11 +471,10 @@ Gtk::Widget * WorkspaceController::buildWidget()
add_btn->set_menu_model(m_menu);
- m_context_menu = Gtk::manage(new Gtk::PopoverMenu(m_menu));
+ m_context_menu = new Gtk::PopoverMenu(m_menu);
m_context_menu->set_parent(m_librarytree);
- m_librarytree.signal_unrealize().connect([this] {
- m_context_menu->unparent();
- });
+ m_librarytree.signal_unrealize().connect(
+ sigc::mem_fun(*m_context_menu, &Gtk::PopoverMenu::unparent));
header->append(*add_btn);
m_vbox.append(*header);
diff --git a/src/niepce/ui/workspacecontroller.hpp b/src/niepce/ui/workspacecontroller.hpp
index a578442..eae0882 100644
--- a/src/niepce/ui/workspacecontroller.hpp
+++ b/src/niepce/ui/workspacecontroller.hpp
@@ -50,6 +50,8 @@ public:
};
WorkspaceController(const Glib::RefPtr<Gio::SimpleActionGroup>& action_group);
+ virtual ~WorkspaceController();
+
class WorkspaceTreeColumns
: public Gtk::TreeModelColumnRecord
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]