取消阻止小部件而不会失去焦点
Unblock widget without lose focus
我有一个焦点小部件和一个被阻止的小部件,当我取消阻止被阻止的小部件时,焦点被盗
我不太确定您尝试实现的是 qx.ui.core.Blocker
的目的。该实现不考虑焦点在块期间移动。
如果您调用方法 block
,代码会尝试在 块完成并保存该小部件之前确定焦点 的小部件,然后将焦点设置为要阻止的小部件,并在取消阻止时将焦点恢复到已保存的小部件。
通过在子类中添加少量内容,您可以避免这种关注 save/restore:
qx.Class.define("qx.ui.core.MyBlocker",
{
extend : qx.ui.core.Blocker,
properties : {
backupActiveWidget :
{
check : "Boolean",
init : true
}
},
members : {
// overridden
_backupActiveWidget : function() {
if(this.getBackupActiveWidget() === false) {
return
}
this.base(arguments);
}
}
});
并以这种方式使用拦截器:
var blocker = new qx.ui.core.MyBlocker(widgetToBeBlocked);
blocker.setBackupActiveWidget(false);
这应该可以防止阻止者窃取可能在阻止期间设置的焦点。
我有一个焦点小部件和一个被阻止的小部件,当我取消阻止被阻止的小部件时,焦点被盗
我不太确定您尝试实现的是 qx.ui.core.Blocker
的目的。该实现不考虑焦点在块期间移动。
如果您调用方法 block
,代码会尝试在 块完成并保存该小部件之前确定焦点 的小部件,然后将焦点设置为要阻止的小部件,并在取消阻止时将焦点恢复到已保存的小部件。
通过在子类中添加少量内容,您可以避免这种关注 save/restore:
qx.Class.define("qx.ui.core.MyBlocker",
{
extend : qx.ui.core.Blocker,
properties : {
backupActiveWidget :
{
check : "Boolean",
init : true
}
},
members : {
// overridden
_backupActiveWidget : function() {
if(this.getBackupActiveWidget() === false) {
return
}
this.base(arguments);
}
}
});
并以这种方式使用拦截器:
var blocker = new qx.ui.core.MyBlocker(widgetToBeBlocked);
blocker.setBackupActiveWidget(false);
这应该可以防止阻止者窃取可能在阻止期间设置的焦点。