widget derived from dialog and gtk_dialog_run
- From: Jiri Pavlovsky <jpavlovsky mbox dkm cz>
- To: gtk-list gnome org
- Subject: widget derived from dialog and gtk_dialog_run
- Date: Thu, 26 Jun 2003 11:32:39 +0200
Hi,
I created simple custom widget derived from dialog. But the program
segfaults when I run gtk_dialog_run on it.
I'm still learning gtk and I'm not sure how to trace the error.
I'm attaching the source code and backtrace.
Thanks,
Jiri
--
Jiri Pavlovsky
jpavlovsky mbox dkm cz
tel: (+420) 737196433
/* login.h
* widget to get username and password for db login
*/
#include <gtk/gtk.h>
#include <gtk/gtkdialog.h>
#include "login.h"
enum {
TICTACTOE_SIGNAL,
LAST_SIGNAL
};
/*static void login_class_init (LoginClass *klass);*/
static void login_init (Login *l);
/*static void login_toggle (GtkWidget *widget, Login *l);*/
GType login_get_type (void)
{
static GType l_type = 0;
if (!l_type)
{
static const GTypeInfo l_info =
{
sizeof (LoginClass),
NULL, /* base_init */
NULL, /* base_finalize */
/*(GClassInitFunc) login_class_init,*/
NULL,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (Login),
0,
(GInstanceInitFunc) login_init,
};
l_type = g_type_register_static (GTK_TYPE_DIALOG, "Login", &l_info, 0);
}
return l_type;
}
/*static void
login_class_init (LoginClass *klass)
{
}*/
static void login_init (Login *l)
{
GtkWidget *hbox1;
GtkWidget *vbox1;
GtkWidget *vbox2;
GtkWidget *name_label;
GtkWidget *passwd_label;
vbox1 = gtk_vbox_new(FALSE, 2);
vbox2 = gtk_vbox_new(FALSE, 2);
hbox1 = gtk_hbox_new(FALSE, 2);
gtk_window_set_destroy_with_parent(GTK_WINDOW(l), TRUE);
gtk_window_set_position(GTK_WINDOW(l), GTK_WIN_POS_CENTER_ON_PARENT);
gtk_window_set_modal(GTK_WINDOW(l), TRUE);
gtk_window_set_title(GTK_WINDOW(l), "Login");
gtk_window_set_resizable(GTK_WINDOW(l), FALSE);
l->name_entry = gtk_entry_new();
l->passwd_entry = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(l->passwd_entry), FALSE);
gtk_dialog_add_buttons(GTK_DIALOG(l), GTK_STOCK_OK,
GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL);
name_label = gtk_label_new("Username:");
passwd_label = gtk_label_new("Password:");
gtk_box_pack_start(GTK_BOX(vbox1), name_label, FALSE, FALSE, 2);
gtk_box_pack_start(GTK_BOX(vbox1), passwd_label, FALSE, FALSE, 2);
gtk_box_pack_start(GTK_BOX(vbox2), l->name_entry, TRUE, TRUE, 2);
gtk_box_pack_start(GTK_BOX(vbox2), l->passwd_entry, TRUE, TRUE, 2);
gtk_box_pack_start(GTK_BOX(hbox1), vbox1, FALSE, FALSE, 2);
gtk_box_pack_start(GTK_BOX(hbox1), vbox2, FALSE, FALSE, 2);
gtk_box_pack_start(GTK_BOX (GTK_DIALOG (l)->vbox),
hbox1, TRUE, TRUE, 0);
gtk_widget_show(GTK_WIDGET(name_label));
gtk_widget_show(GTK_WIDGET(l->name_entry));
gtk_widget_show(GTK_WIDGET(passwd_label));
gtk_widget_show(GTK_WIDGET(l->passwd_entry));
gtk_widget_show(GTK_WIDGET(vbox1));
gtk_widget_show(GTK_WIDGET(vbox2));
gtk_widget_show(GTK_WIDGET(hbox1));
}
GtkWidget* login_new ()
{
return GTK_WIDGET (g_object_new (login_get_type(), NULL));
}
/* login.h
* widget to get username and password for db login
*/
#ifndef __LOGIN_H__
#define __LOGIN_H__
#include <glib.h>
#include <glib-object.h>
#include <gtk/gtkdialog.h>
G_BEGIN_DECLS
#define LOGIN_TYPE (login_get_type ())
#define LOGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LOGIN_TYPE, Login))
#define LOGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LOGIN_TYPE, LoginClass))
#define IS_LOGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LOGIN_TYPE))
#define IS_LOGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LOGIN_TYPE))
typedef struct _Login Login;
typedef struct _LoginClass LoginClass;
struct _Login
{
GtkDialog dialog;
GtkWidget *name_entry;
GtkWidget *passwd_entry;
};
struct _LoginClass
{
GtkDialogClass parent_class;
void (* login) (Login *l);
};
GType login_get_type (void);
GtkWidget* login_new (void);
void login_clear (Login *l);
G_END_DECLS
#endif /* __LOGIN_H__ */
#0 0x4207c45c in memcpy () from /lib/tls/libc.so.6
#1 0x41f7e857 in png_set_iCCP () from /usr/lib/libpng12.so.0
#2 0x41f81867 in png_handle_iCCP () from /usr/lib/libpng12.so.0
#3 0x41f890a6 in png_read_info () from /usr/lib/libpng12.so.0
#4 0x41f49b7f in _init () from /usr/lib/gtk-2.0/2.2.0/loaders/libpixbufloader-png.so
#5 0x4030bb48 in _gdk_pixbuf_generic_image_load () from /usr/lib/libgdk_pixbuf-2.0.so.0
#6 0x4030bd7a in gdk_pixbuf_new_from_file () from /usr/lib/libgdk_pixbuf-2.0.so.0
#7 0x400dace9 in gtk_icon_set_copy () from /usr/lib/libgtk-x11-2.0.so.0
#8 0x400daf9b in gtk_icon_set_render_icon () from /usr/lib/libgtk-x11-2.0.so.0
#9 0x401e8678 in gtk_widget_render_icon () from /usr/lib/libgtk-x11-2.0.so.0
#10 0x400df12e in gtk_image_get () from /usr/lib/libgtk-x11-2.0.so.0
#11 0x400df152 in gtk_image_get () from /usr/lib/libgtk-x11-2.0.so.0
#12 0x403b8814 in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#13 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#14 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#15 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#16 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#17 0x403b6cc3 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#18 0x40144df3 in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#19 0x4014518f in _gtk_size_group_compute_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#20 0x401e3e0c in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#21 0x400d2d14 in gtk_hbox_new () from /usr/lib/libgtk-x11-2.0.so.0
#22 0x403b8814 in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#23 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#24 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#25 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#26 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#27 0x403b6cc3 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#28 0x40144df3 in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#29 0x4014518f in _gtk_size_group_compute_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#30 0x401e3e0c in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#31 0x4006d284 in gtk_alignment_set () from /usr/lib/libgtk-x11-2.0.so.0
#32 0x403b8814 in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#33 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#34 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#35 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#36 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#37 0x403b6cc3 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#38 0x40144df3 in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#39 0x4014518f in _gtk_size_group_compute_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#40 0x401e3e0c in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#41 0x40075342 in gtk_button_get_relief () from /usr/lib/libgtk-x11-2.0.so.0
#42 0x403b8814 in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#43 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#44 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#45 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#46 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#47 0x403b6cc3 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#48 0x40144df3 in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#49 0x4014518f in _gtk_size_group_compute_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#50 0x401e3e0c in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#51 0x400721f9 in _gtk_button_box_child_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#52 0x400d27d9 in gtk_hbutton_box_get_layout_default () from /usr/lib/libgtk-x11-2.0.so.0
#53 0x403b8814 in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#54 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#55 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#56 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#57 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#58 0x403b6cc3 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#59 0x40144df3 in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#60 0x4014518f in _gtk_size_group_compute_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#61 0x401e3e0c in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#62 0x401dbbb4 in gtk_vbox_new () from /usr/lib/libgtk-x11-2.0.so.0
#63 0x403b8814 in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#64 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#65 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#66 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#67 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#68 0x403b6cc3 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#69 0x40144df3 in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#70 0x4014518f in _gtk_size_group_compute_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#71 0x401e3e0c in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#72 0x401f2e44 in gtk_window_reshow_with_initial_size () from /usr/lib/libgtk-x11-2.0.so.0
#73 0x403b8814 in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#74 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#75 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#76 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#77 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#78 0x403b6cc3 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#79 0x40144df3 in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#80 0x4014518f in _gtk_size_group_compute_requisition () from /usr/lib/libgtk-x11-2.0.so.0
#81 0x401e3e0c in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#82 0x401f3dd1 in _gtk_window_unset_focus_and_default () from /usr/lib/libgtk-x11-2.0.so.0
#83 0x401f26ab in gtk_window_reshow_with_initial_size () from /usr/lib/libgtk-x11-2.0.so.0
#84 0x403b7d77 in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#85 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#86 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#87 0x403b720f in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#88 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#89 0x403b6be4 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#90 0x401e2d48 in gtk_widget_show () from /usr/lib/libgtk-x11-2.0.so.0
#91 0x400b4948 in gtk_dialog_run () from /usr/lib/libgtk-x11-2.0.so.0
#92 0x0804a711 in menu_connect_callback (object=0x42706878, data=0x0) at callbacks.c:35
#93 0x403b7d77 in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#94 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#95 0x403b7983 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#96 0x403b69a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#97 0x403b6be4 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#98 0x401e58ed in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
#99 0x4010f682 in gtk_menu_shell_activate_item () from /usr/lib/libgtk-x11-2.0.so.0
#100 0x4010e8ff in _gtk_menu_shell_activate () from /usr/lib/libgtk-x11-2.0.so.0
#101 0x40107d6b in gtk_menu_reorder_child () from /usr/lib/libgtk-x11-2.0.so.0
#102 0x400ffc2f in _gtk_marshal_BOOLEAN__BOXED () from /usr/lib/libgtk-x11-2.0.so.0
#103 0x403a5247 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#104 0x403a4ed7 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#105 0x403b7439 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#106 0x403b67af in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#107 0x403b6be4 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#108 0x401e56fb in gtk_widget_send_expose () from /usr/lib/libgtk-x11-2.0.so.0
#109 0x400ffa27 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#110 0x400fe725 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#111 0x402bd1a5 in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
#112 0x403fcb35 in g_get_current_time () from /usr/lib/libglib-2.0.so.0
#113 0x403fdb78 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#114 0x403fde8d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#115 0x403fe58f in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#116 0x400fdf5f in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#117 0x0804d63a in main (argc=1, argv=0xbfffe2f4) at subscriptions.c:31
#118 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]