LINUX.ORG.RU

Как правильно закрыть диалог из Callback функции?

 ,


0

1

Привет всем!

У меня есть диалог , созданный при помощи gtk_dialog_new () с простой кнопкой. Вызываю диалог при помощи gtk_dialog_run. На кнопку повесил callback «clicked». Как из этой callback функции (при клике по кнопке) правильно закрыть диалог? Если я просто укажу gtk_widget_destroy(dialog) , то вываливается ошибка:

gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed


Зачем тебе callback если прямо в хелпе показывается, как правильно делать? :)

gint result = gtk_dialog_run (GTK_DIALOG (dialog));
switch (result)
  {
    case GTK_RESPONSE_ACCEPT:
       do_application_specific_something ();
       break;
    default:
       do_nothing_since_dialog_was_cancelled ();
       break;
  }
gtk_widget_destroy (dialog);

anonymous
()
Ответ на: комментарий от anonymous

Данный код работает , если нажал крестик(закрытие окна). Мне же нужно закрыть своей кнопкой , со своим обработчиком. Диалог у меня НЕ СТАНДАРТНЫЙ , то есть это не вывод сообщения, выбор цвета и пр. , там кнопки изначально приводят к закрытию диалога.

morm
() автор топика
Ответ на: комментарий от morm

Еще раз крайне рекомендую официальную документацию почитать :).
You can force gtk_dialog_run() to return at any time by calling gtk_dialog_response() to emit the ::response signal.
в своем обработчике дергаешь:

void gtk_dialog_response (GtkDialog *dialog, gint response_id);

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