Question

Avec une boîte de dialogue d'erreur Windows, je peux utiliser CTRL-C pour copier le texte de la fenêtre.

Je voudrais permettre aux utilisateurs de faire la même chose avec les dialogues de message que j'utilise dans mon application GTK.

Y a-t-il un moyen d'autoriser une classe GTK MessageDialogog à gérer la commande de copie?

Était-ce utile?

La solution

Ce que j'ai fini par faire était d'ajouter un gestionnaire de messages à la boîte de dialogue pour piéger la commande Keyboard Up.

Lorsque cela a été déclenché, j'ai vérifié le combo CTRL-C et mettez le texte sur le presse-papiers là-bas.

Autres conseils

Il y a un moyen plus simple de le faire. Appel _set_lables_selectable () avec la boîte de dialogue, après 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);
}

exemple

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top