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: