我可以在GtkTextView中插入带零宽度标记的跨度吗?

时间:2019-07-18 04:04:43

标签: gtk3 gtktextview

我有一个GtkTextView,我想在其中将一些不可编辑的跨度嵌入到可以自由编辑的文档中。问题是,如果我删除了两个这样的跨度之间的所有文本,它们将“合并在一起”,从某种意义上说,我不再可以在它们之间插入字符。这是一些演示问题的红宝石代码:

require 'gtk3'

window = Gtk::Window.new("Text view")
window.set_size_request(800, 600)
window.signal_connect("delete-event") { |_widget| Gtk.main_quit }

textview = Gtk::TextView.new
buffer = textview.buffer
buffer.create_tag "locked", {"editable" => false, "background" => "light green"}
iter = buffer.get_iter_at_offset 0
buffer.insert iter, "hello", "locked"
buffer.insert iter, " "
buffer.insert iter, "world", "locked"

window.add(textview)
window.show_all
Gtk.main

由于我在“ hello”和“ world”之间添加了可编辑的“”,因此可以在它们之间插入文本,但是如果删除空格,即使“ hello”和“ world”也无法再添加回去是两个独立的锁定范围。

编辑:为澄清起见,通过“删除空格”是指如果我单击文本区域并按退格键直到空格消失并且两个不可编辑的跨度连接在一起,我将无法再单击它们之间的边界插入文本以将其推回。

1 个答案:

答案 0 :(得分:0)

您可以尝试用zero-width space替换插页式文字,而不是删除它。