私はテキスト エディターを書いていますが、gtksourceview と undo について理解していないようです。各呼び出しで単一の操作を元に戻す操作を元に戻したいのですが、それ以上のことをしたいようです。
次に例を示します。
次の 2 行を入力します。
最初の行
二行目
次に、上に移動して最初に「r」を削除し、次にctrl + zを押して元に戻します。これはどのような結果ですか:
最初の行
2番目
ドキュメントには次のように記載されています。
アクションは、gtk_text_buffer_begin_user_action() と gtk_text_buffer_end_user_action() への呼び出しの間の操作のグループ、または同じ行の同様の編集 (挿入または削除) のシーケンスとして定義されます。
「r」の復元と「行」という単語の削除が「同じ行での同様の編集 (挿入または削除)」であることがわかりません。
元に戻すボタンを押すのは非常に混乱し、やり直しボタンを押すことを覚えておく必要があります。他のエディターはこのように行動しないので、実装が間違っているのでしょうか?
これが私の元に戻すコードです: GtkSourceBuffer *sbuffer;
sbuffer = GTK_SOURCE_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(txtinput[current_tab])));
if (gtk_source_buffer_can_undo(sbuffer))
{
gtk_source_buffer_undo(sbuffer);
}