我正在编写一个文本编辑器,我似乎不了解有关 gtksourceview 和撤消的内容。我希望撤消操作在每次调用时撤消单个操作,但它似乎想做的不止于此。
这是一个例子:
我输入两行:
第一行
第二行
然后我先上去删除“r”,然后按 ctrl+z 执行撤消。这是什么结果:
第一行
第二
文档说:
动作被定义为调用 gtk_text_buffer_begin_user_action() 和 gtk_text_buffer_end_user_action() 之间的操作组,或同一行上的类似编辑(插入或删除)序列。
我看不出恢复“r”和删除“line”这个词是如何“在同一行上进行类似的编辑(插入或删除)”。
点击撤消非常令人迷惑,并且必须记住点击重做,因为撤消的操作比预期的要多。其他编辑不这样做,所以我只是执行错了吗?
这是我的撤消代码: 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);
}