Domanda

Con una finestra di dialogo Errore Windows posso utilizzare Ctrl-C per copiare il testo della finestra.

Vorrei consentire agli utenti di fare la stessa cosa con le finestre di dialogo del messaggio che sto usando nella mia app GTK.

C'è un modo per consentire a una classe GTK MessageDialog di gestire il comando della copia?

È stato utile?

Soluzione

Quello che ho finito per fare era aggiungere un gestore di messaggi alla finestra di dialogo per intrappolare il comando tastiera up.

Quando è stato attivato ho controllato per la combo Ctrl-C e metto il testo negli Appunti lì.

Altri suggerimenti

C'è un modo più semplice per farlo. Chiama _set_lables_Selezionabile () con la finestra di dialogo, dopo 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);
}
.

Esempio

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top