2010-07-19 7 views
0

En ce moment, quand on clique avec le bouton droit dans un TextView, un menu contextuel est levé, mais le curseur ne change pas réellement de position là où on clique juste, il laisse juste le curseur seul. Pour moi, qui essaie d'implémenter un menu de vérification orthographique, ce n'est pas bon puisque je dois cliquer ALORS sur le clic droit pour placer le curseur au bon endroit. Donc, ma question est de savoir s'il existe un moyen de modifier ce comportement d'une manière ou d'une autre afin qu'il le fasse réellement d'une manière ou d'une autre?Déplacez le curseur sur un clic droit dans TextView?

Répondre

3

Eh bien, je suis tombé sur gtk.TextView.get_iter_at_location, ce qui m'a conduit à gtk.TextView.get_pointer et gtk.TextView.window_to_buffer_coords. En gros, pour obtenir ce travail, je l'ai fait:

x, y = self.textView.get_pointer() 
    x, y = self.textView.window_to_buffer_coords(gtk.TEXT_WINDOW_WIDGET, x, y) 
    if self.textView.get_iter_at_location(x, y).has_tag(self.errTag): 
     # Code here 

Fondamentalement, il obtient la position du pointeur (par rapport à la fenêtre), transforme à tampon coordonnées (je trouve que gtk.TEXT_WINDOW_TEXT donne les mêmes coordonnées que gtk .TEXT_WINDOW_WIDGET, mais j'ai pensé que je ferais une erreur du côté de la prudence et que j'utiliserais la fenêtre du widget), et ensuite j'obtiendrais un iter à cet endroit. Fonctionne à merveille.