Gtk敏锐的焦点历史?

时间:2015-06-11 07:42:38

标签: windows focus gtk#

有没有一种简单的方法可以找出以前关注的小部件是什么?

假设我有两个(或更多)TextView(A和B)和一个ComboBoxEntry。对ComboBoxEntry的任何更改都会根据聚焦的窗口小部件(A或B)修改A或B中的当前选择。问题是ComboBoxEntry抓住焦点,所以我无法判断是否必须将更改应用于A或B.

如果我知道最后关注的对象,它可以工作。

现在我很难想象为我的应用程序中的每个小部件添加焦点处理程序,以便能够在ComboBoxEntry获得焦点之前检测哪一个是最后一个焦点。

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

最后我确实跟踪了我的主窗口中的焦点变化,但事实证明这很简单:

在顶级窗口中,覆盖OnSetFocus:

protected override void OnSetFocus(Widget focus)
{
    // Queue focus in a two entries queue (a simple array will do)
    // So this queue will always contain : Current Widget, last Widget.
}

现在,当我的带有条目的组合框触发OnChange时,它会向两个TextViews生成一个事件,后者又会读取我的队列,并确定哪一个是聚焦元素,然后它们就失去了Combobox的焦点。