diff options
| author | Joel Klinghed <the_jk@yahoo.com> | 2017-07-28 23:30:53 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@yahoo.com> | 2017-07-28 23:30:53 +0200 |
| commit | 3eb752a7359f3714e603b36a77514d8f6fd4741c (patch) | |
| tree | a731a17640d08b69605bc50dd2ac4d047212f309 | |
| parent | eecae6af6e99ac341ca9c3aa4b179a2280c07e5b (diff) | |
Gtk: Fix GuiMain::file_dialog, gtk_file_chooser_native is not a widget
| -rw-r--r-- | src/gui_gtk.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/gui_gtk.cc b/src/gui_gtk.cc index 2af33e2..0c251a9 100644 --- a/src/gui_gtk.cc +++ b/src/gui_gtk.cc @@ -715,26 +715,26 @@ public: std::string file_dialog(std::string const& title, std::string const& file, uint8_t flags, std::vector<GuiFile::Filter> const& filter) override { - auto chooser = gtk_file_chooser_native_new( + shared_gobject<GtkFileChooserNative> chooser(gtk_file_chooser_native_new( title.c_str(), reinterpret_cast<GtkWindow*>(impl()), flags & GuiFile::FILE_SAVE ? GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN, - nullptr, nullptr); + nullptr, nullptr)); if (flags & GuiFile::FILE_SAVE) { gtk_file_chooser_set_do_overwrite_confirmation( - GTK_FILE_CHOOSER(chooser), true); + GTK_FILE_CHOOSER(chooser.get()), true); } if (file.empty()) { - gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(chooser), file.c_str()); + gtk_file_chooser_set_filename( + GTK_FILE_CHOOSER(chooser.get()), file.c_str()); } - set_filter(GTK_FILE_CHOOSER(chooser), filter); + set_filter(GTK_FILE_CHOOSER(chooser.get()), filter); std::string ret_file; - auto ret = gtk_native_dialog_run(GTK_NATIVE_DIALOG(chooser)); + auto ret = gtk_native_dialog_run(GTK_NATIVE_DIALOG(chooser.get())); if (ret == GTK_RESPONSE_ACCEPT) { - ret_file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); + ret_file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser.get())); } - gtk_widget_destroy(GTK_WIDGET(chooser)); return ret_file; } |
