[niepce/gtk4] gtk4: Fix confirm dialog
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce/gtk4] gtk4: Fix confirm dialog
- Date: Mon, 9 May 2022 01:47:25 +0000 (UTC)
commit ad94d9c643b319a9c5682783c9ca1f148e848396
Author: Hubert Figuière <hub figuiere net>
Date: Sat May 7 21:47:54 2022 -0400
gtk4: Fix confirm dialog
niepce-main/build.rs | 1 +
niepce-main/src/niepce/ui/dialogs/confirm.rs | 12 ++----------
src/niepce/ui/workspacecontroller.cpp | 12 +++++++++---
3 files changed, 12 insertions(+), 13 deletions(-)
---
diff --git a/niepce-main/build.rs b/niepce-main/build.rs
index 5697a2f..0018a9f 100644
--- a/niepce-main/build.rs
+++ b/niepce-main/build.rs
@@ -38,6 +38,7 @@ fn main() {
.exclude_item("GtkListStore")
.exclude_item("GtkTreePath")
.exclude_item("GtkPopoverMenu")
+ .exclude_item("GtkMessageDialog")
.exclude_item("GtkCellRenderer")
.exclude_item("GtkWidget")
.exclude_item("GFileInfo")
diff --git a/niepce-main/src/niepce/ui/dialogs/confirm.rs b/niepce-main/src/niepce/ui/dialogs/confirm.rs
index 8359b5c..0c37c4f 100644
--- a/niepce-main/src/niepce/ui/dialogs/confirm.rs
+++ b/niepce-main/src/niepce/ui/dialogs/confirm.rs
@@ -30,8 +30,7 @@ use gtk4::MessageDialog;
pub unsafe extern "C" fn dialog_confirm(
message: *const c_char,
parent: *mut gtk4_sys::GtkWindow,
-) -> bool {
- let mut result: bool = false;
+) -> *mut gtk4_sys::GtkMessageDialog {
let msg = CStr::from_ptr(message).to_string_lossy();
let parent = gtk4::Window::from_glib_none(parent);
let dialog = MessageDialog::new(
@@ -43,13 +42,6 @@ pub unsafe extern "C" fn dialog_confirm(
);
dialog.set_modal(true);
- dialog.connect_response(|_, response| {
- if response == gtk4::ResponseType::Yes {
- // XXX fix this
- let result = true;
- }
- });
- dialog.show();
- result
+ dialog.to_glib_none().0
}
diff --git a/src/niepce/ui/workspacecontroller.cpp b/src/niepce/ui/workspacecontroller.cpp
index f59e44f..dc6c32c 100644
--- a/src/niepce/ui/workspacecontroller.cpp
+++ b/src/niepce/ui/workspacecontroller.cpp
@@ -24,6 +24,7 @@
#include <gtkmm/gestureclick.h>
#include <gtkmm/iconview.h>
#include <gtkmm/image.h>
+#include <gtkmm/messagedialog.h>
#include "fwk/base/debug.hpp"
#include "fwk/base/string.hpp"
@@ -97,9 +98,14 @@ void WorkspaceController::action_delete_folder()
auto id = get_selected_folder_id();
if (id) {
auto& window = std::dynamic_pointer_cast<NiepceWindow>(m_parent.lock())->gtkWindow();
- if (ui::dialog_confirm(_("Delete selected folder?"), window.gobj())) {
- ffi::libraryclient_delete_folder(getLibraryClient()->client(), id);
- }
+ auto dialog = Glib::wrap(ui::dialog_confirm(_("Delete selected folder?"), window.gobj()));
+ dialog->signal_response().connect([this, id, dialog] (int response) {
+ if (response == Gtk::ResponseType::YES) {
+ ffi::libraryclient_delete_folder(getLibraryClient()->client(), id);
+ }
+ delete dialog;
+ });
+ dialog->show();
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]