我的印象是树视图在获得事件焦点之前获取光标已更改事件。我的代码(在haskell中,但我认为这与其他语言绑定非常相似):
iResult2 <- builderGetObject builder castToTreeView (t2s "titleView")
on iResult2 focusInEvent $ do
putIOwordsT ["------------------title view focus in"]
return False
on iResult2 cursorChanged $ do
putIOwordsT ["-----------iResult selection"]
“titleView”是包含其他小部件的窗口中的树视图;如果我点击树视图中的一行,我得到cursorChangedEvent并可以读取所选的行。只有AFTERWARDS我得到focusInEvent(前面带有焦点的前一个条目的相应focusOutEvent)。
这不是预期的(只有在焦点位于小部件之后才能进行选择)并使我的程序逻辑变得复杂。我假设在cursorChangedEvent之前有上一个条目的focusOutEvent,以便在被所选新数据写入之前将数据保存在该条目中。
有没有办法影响事件的顺序?
是故意行为还是错误?