作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我正在编写一个简单文本编辑器,我使用此回调来处理主窗口删除事件
g_signal_connect(G_OBJECT(mainWindow),"delete-event",G_CALLBACK(quit), (gpointer)textView);
这是我处理此事件的回调函数
void quit(GtkWidget *wid,GdkEvent *e,gpointer data)
{
GtkTextIter iStart,iEnd;
GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textView));
gtk_text_buffer_get_bounds(buffer,&iStart,&iEnd);
gchar * text = gtk_text_buffer_get_text(buffer,&iStart,&iEnd,FALSE);
if(docFile.isSaved == FALSE && strcmp("",text) )
{
GtkWidget * msgDialog;
msgDialog = gtk_message_dialog_new(NULL,
GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
"Do you manna save your file ?",
NULL);
switch (gtk_dialog_run (GTK_DIALOG(msgDialog)))
{
case GTK_RESPONSE_YES:
if(docFile.name == NULL)
{
if(saveAs(textView))
{
gtk_widget_destroy (msgDialog);
gtk_main_quit ();
}
}
else
{
save(textView);
gtk_widget_destroy (msgDialog);
gtk_main_quit ();
}
break;
case GTK_RESPONSE_NO:
gtk_widget_destroy (msgDialog);
gtk_main_quit ();
}
}else{
gtk_main_quit();
}
}
但是当我退出窗口时,我在终端中发现了这个
(Black Hole) adil Tux : SimpleEditor
>>>> ./a.out
*** Error in `./a.out': free(): invalid pointer: 0x0000000000604570 ***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x7340e)[0x7fefc476a40e]
/usr/lib/libc.so.6(+0x7884e)[0x7fefc476f84e]
/usr/lib/libc.so.6(+0x7900b)[0x7fefc477000b]
./a.out[0x402ad0]
/usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7fefc4717040]
./a.out[0x402069]
======= Memory map: ========
00400000-00404000 r-xp 00000000 08:06 2107681 /home/adil/Src/SimpleEditor/a.out
00604000-00605000 rw-p 00004000 08:06 2107681 /home/adil/Src/SimpleEditor/a.out
01a38000-01b83000 rw-p 00000000 00:00 0
[heap]
....
7fefc736b000-7fefc736c000 rw-p 00022000 08:06 920725 /usr/lib/ld-2.20.so
7fefc736c000-7fefc736d000 rw-p 00000000 00:00 0
7fff6fd1c000-7fff6fd3d000 rw-p 00000000 00:00 0 [stack]
7fff6fdfc000-7fff6fdfe000 r-xp 00000000 00:00 0 [vdso]
7fff6fdfe000-7fff6fe00000 r--p 00000000 00:00 0 [vvar]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Aborted (core dumped)
并且认为你。
最佳答案
您的delete-event
回调签名错误。它应该返回一个 bool 值来表示窗口是否被删除。
gboolean quit (GtkWidget *wid, GdkEvent *e, gpointer user_data)
{
. . .
return TRUE;
}
参见https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-delete-event了解更多详情
关于c - GTK+2 : My App is Crashing on quit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26216079/
我是一名优秀的程序员,十分优秀!