Готовы к крупному хаку?
function realMaximize(){
if(this.maxInternal){
return;
}
if(this.maximized){
this.oldMaxHeight = this.maxHeight;
this.maxHeight = undefined;
this.maxInternal = true;
this.restore();
this.maximize();
this.maxInternal = false;
}else{
this.maxHeight = this.oldMaxHeight;
}
}
Ext.onReady(function() {
var w = Ext.create('Ext.window.Window',{
title: 'Hello',
maximizable: true,
width: 400,
height: 300,
maxHeight: 350
});
w.addListener('maximize',realMaximize);
w.show();
});
ugh! Какой ужас. Что оно делает? Когда он обнаруживает максимизацию, он сохраняет текущую максимальную высоту и удаляет ее. Затем он переключает максимизацию так, чтобы пользовательский интерфейс обновлялся с учетом этого нового максимума (может быть, есть лучший способ?). Наконец, он должен установить и проверить флаг, или он попадет в бесконечный цикл (maximize
снова вызывает функцию).
Возвращение к окну не так сложно; запоминаемый размер должен быть ОК, поэтому нам не нужно вызывать функцию рекурсивно.
Обновленная скрипка: http://jsfiddle.net/zbyHY/1/ – Dave
Если кто-нибудь знает, как имитировать изменение размера окна или инициировать обновление размера каким-либо другим способом, это может быть сделано намного чище. – Dave
Неужели я думаю, что должен сообщить об этой проблеме (maxHeight/maximize) в Sencha? или Это (хорошая) функция (maxHeight break maximize)? –