проблема в следующем, gtk_file_chooser_set_do_overwrite_confirmation() работает только, если GtkFileChooser получен из GtkFileChooserDialog, если же создавать свой диалог, и встраивать в него GtkFileChooserWidget, использование gtk_file_chooser_set_do_overwrite_confirmation() не дает никакого эффекта
рабочий код
#include <gtk/gtk.h>
int
main (int argc, char *argv[])
{
GtkWidget *d;
gtk_init (&argc, &argv);
d = gtk_file_chooser_dialog_new ("Save File", NULL,
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (d), TRUE);
gtk_dialog_run (GTK_DIALOG (d));
gtk_widget_destroy (d);
}
нерабочий код
#include <gtk/gtk.h>
int
main (int argc, char *argv[])
{
GtkWidget *d, *w;
gtk_init (&argc, &argv);
d = gtk_dialog_new_with_buttons ("Save File", NULL,
GTK_DIALOG_MODAL |
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
w = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_SAVE);
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (w), TRUE);
gtk_widget_show (w);
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
w, TRUE, TRUE, 0);
gtk_dialog_run (GTK_DIALOG (d));
gtk_widget_destroy (d);
}
во втором случае пробовал добавлять обработчик сигнала confirm-overwrite, но без видимого эффекта, обработчик не вызывался
кто-нибудь знает, как заставить второй вариант вызывать диалог подтверждения перезаписи?