GTK を使用していますが、テキストを TextView に挿入すると、バックグラウンド スレッドで処理されているようです。
- 1行にテキストを挿入します
- 私は他のことをしていますが、この瞬間、テキストはまだそこにレンダリングされていません
- ScrollToIter() を使用して下にスクロールしますが、テキストがまだレンダリングされておらず、スクロールする終わりがないため、実際には何も起こりません
スクロールを挿入してタイマーを終了すると、機能しますが、かなり遅くて奇妙です。(テキストは最初に描画され、描画が完了すると下にジャンプします。長いテキストの場合、描画に時間がかかるため、数回ジャンプします)。
また、Buffer.Text を変更するたびに、コントロールはすべての行を再描画します (ループ内で行ごとに追加されますが、これも非常に面倒です)。
私がする必要があるのは、次のとおりです。
- TextView.Buffer.Text を別の文字列に変更します
- すべてのテキストを処理してすぐに再描画するように TextView を強制する
- 一番下までスクロール
例:
大きなテキスト ファイル (100 000 行) を開くテキスト エディターを作成し、ファイルを開いた直後に一番下までスクロールするとします。理想的には、ファイルを開いて最初に表示されるのはファイルの下部です。これは、多くのテキスト エディターで発生することです。この動作をこの gtk で実装したいと思います。
どうやってやるの?