Gtk 前向显示线不';行不通

Gtk 前向显示线不';行不通,gtk,vala,Gtk,Vala,我使用Gtk.TextView显示文本,如下所示: 我的目标是通过编程将光标移动到下一个显示行的开头(不是缓冲行的开头,而是下一个文本视图行的第一个字符) 它使用Gtk.WrapMode.WORD\u CHAR作为包装首选项。从TextBuffer访问时,移动TextIter对象可以正常工作: /* This works as expected */ Gtk.TextIter start_iter; buffer.get_start_iter (out start_iter); /* Thi

我使用
Gtk.TextView
显示文本,如下所示:

我的目标是通过编程将光标移动到下一个显示行的开头(不是缓冲行的开头,而是下一个
文本视图
行的第一个字符)

它使用
Gtk.WrapMode.WORD\u CHAR
作为包装首选项。从
TextBuffer
访问时,移动
TextIter
对象可以正常工作:

/* This works as expected */
Gtk.TextIter start_iter;
buffer.get_start_iter (out start_iter);
/* This also works as expected */
Gtk.TextIter iter;
...
iter.forward_line ();
或者直接使用
文本输入程序时:

/* This works as expected */
Gtk.TextIter start_iter;
buffer.get_start_iter (out start_iter);
/* This also works as expected */
Gtk.TextIter iter;
...
iter.forward_line ();
但是当我想使用
TextView
移动
TextIter
时,例如:

Gtk.TextView text_view;
Gtk.TextIter iter;
...
text_view.forward_display_line (iter);
它不会移动迭代器,尽管返回了
true
(表示迭代器已移动)

这是我正在使用的代码(在从
TextView
派生的类中):


为什么这个代码不起作用?
TextBuffer
初始化的
TextBuffer
是否不适用于
TextView
方法?

在您的代码中,您调用
Gtk.TextBuffer
方法,该方法“消耗”一个Gtk.TextIter,但不输出相同的“Iter”以及该方法执行的更改。对
Gtk.TextIter
的两个调用应返回相同的值

相反,如果您使用
Gtk.textier
,则更改应该并且将反映在第二次打印中,例如:

Gtk.TextIter line_end;
/* Initializing TextIter, placing it at the start of the buffer. */
this.buffer.get_start_iter (out line_end);

print ("Offset before forwarding: %i\n", line_end.get_offset ()); //returns 0

line_end.forward_line ();

print ("Offset after forwarding: %i\n", line_end.get_offset ()); // should be different from 0 if buffer has some text

正如@José所说,这确实是一个Vala C绑定的bug。问题已经公布


我将尝试修复此错误,如果修复成功,我将更新此答案。

抱歉,我不清楚我是否希望访问显示行的结尾(
forward\u line
TextIter
移动到缓冲行的结尾)。我对问题进行了编辑以澄清。@AleksandarStefanović可能是一个bug。我为任何感兴趣的人提交了一个bug: