Наведите курсор на правый клик в TextView? - PullRequest
0 голосов
/ 19 июля 2010

В тот момент, когда один щелчок правой кнопкой мыши в TextView вызывает всплывающее меню, но курсор на самом деле не меняет положение на место щелчка правой кнопкой мыши, он просто оставляет курсор в покое. Для меня, который пытается реализовать меню проверки орфографии, это не хорошо, так как я должен щелкнуть ТОГДА правой кнопкой мыши, чтобы курсор оказался в нужном месте. Итак, мой вопрос: есть ли способ каким-либо образом изменить это поведение, чтобы оно каким-то образом это делало?

1 Ответ

3 голосов
/ 19 июля 2010

Ну, я наткнулся на gtk.TextView.get_iter_at_location, что привело меня к gtk.TextView.get_pointer и gtk.TextView.window_to_buffer_coords. В основном, чтобы заставить это работать, я сделал это:

    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

По сути, он получает позицию указателя (относительно окна), преобразует его в координаты буфера (я считаю, что gtk.TEXT_WINDOW_TEXT дает те же координаты, что и gtk.TEXT_WINDOW_WIDGET, но я подумал, что я ошибся из-за осторожности и использовать окно виджета), а затем получает iter в этом месте. Прекрасно работает.

...