2011-12-15 17 views
9

Sto tentando di acquisire lo Immettere il codice quando viene premuto in un GtkEntry. La maggior parte delle risorse che ho trovato suggerire il collegamento al segnale activate, ma le documentation for GtkEntry stati (sottolineatura mia):Come acquisire Premere il tasto Invio in GtkEntry

Le applicazioni non dovrebbero collegarsi ad esso, ma può emettere con g_signal_emit_by_name() se hanno bisogno per controllare l'attivazione a livello di programmazione.

Sono curioso di conoscere la logica alla base di questo e anche quello che è l'alternativa generalmente accettata. So che posso connettermi al segnale key-press-event e controllare il codice chiave, ma mi chiedo se c'è una soluzione più elegante.

+0

Sono abbastanza consapevole di ciò che i documenti hanno detto, ma ho sempre usato, finora non è mai emerso alcun problema. Se fossi in te, userei e scoprirò attraverso i test se non funziona.Sebbene tu possa controllare il codice dietro il sorgente in GtkEntry per vedere se non si adatta alle tue esigenze. – erick2red

risposta

9

È un segnale di rilegatura. Ciò significa che GTK è impostato in modo tale che quando si preme Immettere nella voce, il segnale viene emesso. Può anche essere emesso a livello di programmazione se si desidera simulare premendo Immettere, quindi non è possibile garantire che il segnale sia effettivamente il risultato di una pressione di un tasto.

Se si desidera acquisire una pressione di un tasto, il modo migliore è collegarsi a key-press-event.

Detto questo, non vedo perché non è possibile utilizzare il segnale activate. La maggior parte dei segnali di keybinding non dovrebbero essere collegati a, ma questo sembra avere un senso. Penso che dovresti chiedere chiarimenti sulla mailing list gtk-devel o presentare un bug su bugzilla.gnome.org dicendo che la documentazione per questo segnale dovrebbe essere chiarita.

+1

Fatto e fatto. Grazie per la risposta. https://bugzilla.gnome.org/show_bug.cgi?id=666364 –

2

La documentazione GtkEntry menzionato per il segnale di attivazione:

Le applicazioni non dovrebbero collegarsi ad esso, ma possono emettere con g_signal_emit_by_name(), se hanno bisogno di controllare l'attivazione di programmazione.

... è modificata per:

Mentre questo segnale viene utilizzato come segnale di scorciatoia, è anche comunemente utilizzato dalle applicazioni per intercettare l'attivazione di voci.

Questo è accaduto il 2012-06-11 con commit 4a25bac0e7685000fff90a211db6ac60f6b74ab1. Il messaggio di commit è:

Aggiornamento documentazione per GtkEntry :: attivano

Rimuovere il 'voi non collegare' messaggio da questo segnale. Mentre si tratta di un segnale di keybinding, usarlo da applicazioni va bene e, di fatto, è previsto.

Problemi correlati