gtk sharp focus的历史?

Gtk sharp focus history?

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

假设我有两个(或更多)TextView(A 和 B)和一个 ComboBoxEntry。对 ComboBoxEntry 的任何更改都会修改 A 或 B 中的当前选择,具体取决于聚焦的 Widget(A 或 B)。问题是 ComboBoxEntry 占据了焦点,所以我无法判断是否必须将更改应用到 A 或 B。

如果我知道最后一个焦点对象它就可以工作。

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

有人可以帮忙吗?

谢谢。

最后我确实跟踪了我的主要 window 的焦点变化,但事实证明它非常简单:

在顶层 window,覆盖 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 时,它​​会向两个 TextView 生成一个事件,这反过来会读取我的队列并确定哪个是焦点元素,然后它们就会失去组合框的焦点。