GtkSourceView でファイルを開き、特定の行までスクロールする必要があります。一種のデバッガー gui であるため、一時的なアーティファクト (コンテンツの目に見える再調整やちらつき) なしで、(スタック フレームを切り替えるときに) このアクティビティを頻繁に行う必要があります。現在、私は次のアプローチを使用しています。
from gi.repository import GtkSource
class MyClientWindow:
def __init__(self):
self.__sourceview = GtkSource.View()
self.__sourceview.connect('size-allocate', self.__source_resize)
...
def __source_resize(self, widget, allocation):
self.__sourceview.scroll_to_mark(self.__sourceview.get_buffer().get_insert(), 0.25, False, 0, 0)
このアプローチでは、目に見えるちらつきがあります。上記の __source_resize に 1 をスリープさせると、GtkSourceView が数回のパスで再調整されることがわかります (ソースの強調表示の前後に目に見えて描画され、追加の検証も行われます)。
GtkSource.View に強制的に行の高さを計算させ、画面に描画せずに検証を実行させる方法や、バッファの内容を設定したときに行の高さをすぐに計算させて後でアイドル状態にする方法はありますか? そうでない場合、目的の動作を得るために GtkSource.View コントロールをどの程度オーバーライドする必要がありますか?
注: Gtk.Stack を使用して、非表示の「背面」ビューで作業を行い、後で Gtk.idle_add を使用して表示できるようにしようとしましたが、ビューの可視性が行の検証の鍵であるという印象を受けました。少なくともこれまでのところ、望ましい結果は得られていません。