c - How to get avoid assertion failure when loading gtk About dialog box? -
i've programmed software gui using glade , gtk. main window has about button. when click on button first time, gtkaboutdialogbox runs perfectly. action area correctly bound events. when close , tries again open dialog (without quiting main window), nothing comes up. , additionally system thows
(tut:5424): glib-gobject-warning **: invalid unclassed pointer in cast `gtkdialog' (tut:5424): gtk-critical **: ia__gtk_dialog_run: assertion `gtk_is_dialog (dialog)' failed (tut:5424): glib-gobject-warning **: invalid unclassed pointer in cast `gtkwidget' (tut:5424): gtk-critical **: ia__gtk_widget_destroy: assertion `gtk_is_widget (widget)' failed
to shell. wrong code?
//tut.c //gcc -o tut tut.c $(pkg-config --cflags --libs gtk+-2.0 gmodule-2.0) #include <gtk/gtk.h> gtkbuilder *builder; gtkwidget *window,*window_cnb; gtkaboutdialog *abtwindow; gtklabel *label; gerror *error = null; void on_about_clicked() { gtk_dialog_run( gtk_dialog(abtwindow) ); gtk_widget_destroy( gtk_widget(abtwindow) ); } int main( int argc,char **argv ) { gtk_init( &argc, &argv ); builder = gtk_builder_new(); if( ! gtk_builder_add_from_file( builder, "my.glade", &error ) ) { g_warning( "%s", error->message ); g_free( error ); return( 1 ); } window = gtk_widget( gtk_builder_get_object( builder, "window1" ) ); abtwindow = gtk_about_dialog( gtk_builder_get_object( builder, "aboutdialog1" ) ); label = gtk_label( gtk_builder_get_object( builder, "label16" ) ); gtk_builder_connect_signals( builder, null ); g_object_unref( g_object( builder ) ); gtk_widget_show( window ); gtk_main(); return( 0 ); }
i use gtkbuilder. how can fix it?
use gtk_widget_hide() instead of gtk_widget_destroy().
Comments
Post a Comment