From d9a33eb7bcf71989d5188b84671c69b46308243d Mon Sep 17 00:00:00 2001 From: Enri Miho Date: Wed, 9 Aug 2023 15:05:00 +0200 Subject: [PATCH] [desktop_multi_window] handle close button click and destroy sub-window explicitly --- packages/desktop_multi_window/linux/flutter_window.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/desktop_multi_window/linux/flutter_window.cc b/packages/desktop_multi_window/linux/flutter_window.cc index 9930b82f..577645de 100755 --- a/packages/desktop_multi_window/linux/flutter_window.cc +++ b/packages/desktop_multi_window/linux/flutter_window.cc @@ -15,6 +15,11 @@ WindowCreatedCallback _g_window_created_callback = nullptr; } +gboolean on_close_clicked(GtkWidget *widget, GdkEvent *event, gpointer user_data) { + gtk_widget_destroy(widget); + return TRUE; +} + FlutterWindow::FlutterWindow( int64_t id, const std::string &args, @@ -26,6 +31,7 @@ FlutterWindow::FlutterWindow( gtk_window_set_position(GTK_WINDOW(window_), GTK_WIN_POS_CENTER); gtk_widget_show(GTK_WIDGET(window_)); + g_signal_connect(G_OBJECT(window_), "delete-event", G_CALLBACK(on_close_clicked), NULL); g_signal_connect(window_, "destroy", G_CALLBACK(+[](GtkWidget *, gpointer arg) { auto *self = static_cast(arg); if (auto callback = self->callback_.lock()) {