LINUX.ORG.RU

gtk_message_dialog: некорректное закрытие


0

1

Здравствуйте! Ниже приведён фрагмент кода, выводящего окошко gtk_message_dialog:

#include <gtk/gtk.h>

int main(int argc, char** argv)
{
  gtk_init(&argc, &argv);

  GtkWidget* dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, 
                                     GTK_MESSAGE_ERROR, 
                                     GTK_BUTTONS_CLOSE, 
                                     "Error loading file", NULL);
  g_signal_connect(dialog, "response", G_CALLBACK(gtk_main_quit), NULL);

  gtk_widget_show_all(GTK_WIDGET(dialog));

  gtk_main();
  gtk_widget_destroy(dialog);

  return 0;
}

Вышедшее окно корректно закрывается по нажатию на кнопку CLOSE, но при нажатии на крестик в верхнем углу выдаёт ошибку:

Gtk-CRITICAL **: gtk_widget_destroy: assertion `GTK_IS_WIDGET (widget)' failed
Ошибка не исчезает при попытке повесить ещё один обработчик типа
g_signal_connect(dialog, "destroy", G_CALLBACK(gtk_main_quit), NULL);

Как сделать корректное закрытие по крестику?

Крестик уже удаляет dialog.

Можешь gtk_widget_destroy завернуть внутрь проверки, что dialog не убит.

Или используй gtk_dialog_run

monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.