Pregunta

Con un diálogo de error de Windows puedo usar CTRL-C para copiar el texto de la ventana.

Me gustaría permitir a los usuarios que hagan lo mismo con los cuadros de diálogo Mensaje que estoy usando en mi aplicación GTK.

¿Hay alguna manera de permitir que una clase GTK Mesagedialog maneje el comando de copia?

¿Fue útil?

Solución

Lo que terminé haciendo fue agregar un controlador de mensajes al diálogo para atrapar el comando teclado hacia arriba.

Cuando se activó que revisé el combo CTRL-C y pongo el texto en el portapapeles allí.

Otros consejos

Hay una forma más sencilla de hacerlo. Llame _set_lables_selectable () con el diálogo, después de 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);
}

Ejemplo

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);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top