Копирование текста из GTK Messagedialog
-
15-09-2020 - |
Вопрос
с диалоговом окна ошибки Windows, который я могу использовать Ctrl-C, чтобы скопировать текст окна.
Я хотел бы позволить пользователям делать то же самое с диалоговыми окнами сообщения, которую я использую в моем приложении GTK.
Есть ли способ разрешить класс MessageLog GTK для обработки команды копирования?
Решение
Что я в итоге делал, это добавить обработчик сообщений в диалоговое окно для ловушки команды клавиатуры.
Когда это было вызвано, я проверил Ctrl-C Combo и поместите текст на буфер обмена там.
Другие советы
Есть более простой способ сделать это. Вызовите _set_lables_selectable () с диалоговым окном после gtk_message_dialog_new ()
static void _set_label_selectable(gpointer data, gpointer user_data)
{
GtkWidget *widget = GTK_WIDGET(data);
if (GTK_IS_LABEL(widget))
{
gtk_label_set_selectable(GTK_LABEL(widget), TRUE);
}
}
static void _set_lables_selectable(GtkWidget *dialog)
{
GtkWidget *area = gtk_message_dialog_get_message_area(
GTK_MESSAGE_DIALOG(dialog));
GtkContainer *box = (GtkContainer *) area;
GList *children = gtk_container_get_children(box);
g_list_foreach(children, _set_label_selectable, NULL);
g_list_free(children);
}
.
Пример
GtkWidget *dialog = gtk_message_dialog_new(opgU_window,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
"%s", mbuf);
_set_lables_selectable(dialog);
. Не связан с StackOverflow