simplify the implementation of MyFileChooserButton::show_chooser
Do not try to show a native file dialog. I think this would be useless, since RT already uses non-native dialogs in other places, and I'm not sure it would be possible to replace all of them (e.g. in icmpanel.cc the dialog is customized by adding a checkbox for WB, and this is not possible with a native dialog).
This commit is contained in:
@@ -1190,58 +1190,30 @@ MyFileChooserButton::MyFileChooserButton(const Glib::ustring &title, Gtk::FileCh
|
|||||||
|
|
||||||
void MyFileChooserButton::show_chooser()
|
void MyFileChooserButton::show_chooser()
|
||||||
{
|
{
|
||||||
#if 1
|
Gtk::FileChooserDialog dlg(*static_cast<Gtk::Window *>(get_toplevel()), title_, action_);
|
||||||
Gtk::FileChooserDialog dlg(*static_cast<Gtk::Window *>(get_toplevel()), title_, action_);
|
dlg.add_button("Cancel", Gtk::RESPONSE_CANCEL);
|
||||||
dlg.add_button("Cancel", Gtk::RESPONSE_CANCEL);
|
dlg.add_button("Ok", Gtk::RESPONSE_OK);
|
||||||
dlg.add_button("Ok", Gtk::RESPONSE_OK);
|
dlg.set_filename(filename_);
|
||||||
dlg.set_filename(filename_);
|
for (auto &f : file_filters_) {
|
||||||
for (auto &f : file_filters_) {
|
dlg.add_filter(f);
|
||||||
dlg.add_filter(f);
|
}
|
||||||
}
|
if (cur_filter_) {
|
||||||
if (cur_filter_) {
|
dlg.set_filter(cur_filter_);
|
||||||
dlg.set_filter(cur_filter_);
|
}
|
||||||
}
|
for (auto &f : shortcut_folders_) {
|
||||||
for (auto &f : shortcut_folders_) {
|
dlg.add_shortcut_folder(f);
|
||||||
dlg.add_shortcut_folder(f);
|
}
|
||||||
}
|
if (!current_folder_.empty()) {
|
||||||
if (!current_folder_.empty()) {
|
dlg.set_current_folder(current_folder_);
|
||||||
dlg.set_current_folder(current_folder_);
|
}
|
||||||
}
|
dlg.set_show_hidden(show_hidden_);
|
||||||
dlg.set_show_hidden(show_hidden_);
|
int res = dlg.run();
|
||||||
int res = dlg.run();
|
if (res == Gtk::RESPONSE_OK) {
|
||||||
if (res == Gtk::RESPONSE_OK) {
|
filename_ = dlg.get_filename();
|
||||||
filename_ = dlg.get_filename();
|
current_folder_ = dlg.get_current_folder();
|
||||||
current_folder_ = dlg.get_current_folder();
|
lbl_.set_label(Glib::path_get_basename(filename_));
|
||||||
lbl_.set_label(Glib::path_get_basename(filename_));
|
selection_changed_.emit();
|
||||||
selection_changed_.emit();
|
}
|
||||||
}
|
|
||||||
#else
|
|
||||||
// TO BE COMPLETED!
|
|
||||||
GtkWindow *parent_window = static_cast<Gtk::Window *>(get_toplevel())->gobj();
|
|
||||||
GtkFileChooserNative *native;
|
|
||||||
GtkFileChooserAction action = action_;
|
|
||||||
gint res;
|
|
||||||
|
|
||||||
native = gtk_file_chooser_native_new (title_.c_str(),
|
|
||||||
parent_window,
|
|
||||||
action,
|
|
||||||
"_Ok",
|
|
||||||
"_Cancel");
|
|
||||||
|
|
||||||
res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
|
|
||||||
if (res == GTK_RESPONSE_ACCEPT)
|
|
||||||
{
|
|
||||||
char *filename;
|
|
||||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
|
|
||||||
filename = gtk_file_chooser_get_filename (chooser);
|
|
||||||
filename_ = filename;
|
|
||||||
g_free (filename);
|
|
||||||
lbl_.set_label(Glib::path_get_basename(filename_));
|
|
||||||
selection_changed_.emit();
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (native);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user