gtk_file_chooser_dialogを複数回再利用したいと思います。しかし、ユーザーが最初にダイアログを閉じると、GtkFileChooserDialog構造体へのポインタが壊れているように見えます。gtk_file_chooser_dialogを複数回再利用
最初に診断ログを開くと成功します。 同じダイアログを開く
(crystal_facet_uml:3797): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkWidget'
(crystal_facet_uml:3797): Gtk-CRITICAL **: gtk_widget_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
で二回目の結果は、私の最初のアイデアは、最大cleaedされるのを防ぐために、ダイアログ上の参照カウンタを増加させることであった:
(*this_).use_db_file_chooser = gtk_file_chooser_dialog_new ("Select DB to use",
GTK_WINDOW((*this_).window),
GTK_FILE_CHOOSER_ACTION_SAVE,
"Cancel",
GTK_RESPONSE_CANCEL,
"Create/Use DB-File",
GTK_RESPONSE_ACCEPT,
NULL
);
g_object_ref((*this_).use_db_file_chooser);
...しかし、これが唯一の問題をシフト:ダイアログウィンドウが滞在するようだが、含まれているウィジェットがなくなっている:
(crystal_facet_uml:3797): Gtk-CRITICAL **: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed
(crystal_facet_uml:3797): Gtk-CRITICAL **: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed
(crystal_facet_uml:3797): Gtk-CRITICAL **: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed
(crystal_facet_uml:3797): Gtk-CRITICAL **: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed
(crystal_facet_uml:3797): Gtk-CRITICAL **: _gtk_file_chooser_embed_initial_focus: assertion 'GTK_IS_FILE_CHOOSER_EMBED (chooser_embed)' failed
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
(crystal_facet_uml:3797): Gtk-CRITICAL **: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed
あなたはこの権利を行うにはどのようなアイデアを持っていますか?
(ファイル選択ダイアログを再利用する理由は次のとおりです。)1)最初にそれを割り当て、NULLポインタを気にしないで2)現在のフォルダ、現在のファイル名)、3)私はこの非モーダルダイアログを一度だけ、一度に2つのダイアログを決して開始したくない、4)私のプログラムの寿命を通してg_signalバインディングを保持したい。