1

TL/DR:

を呼び出しても、ウィンドウのプロパティは にwindow.setActive(false)設定されません。activefalse

全詳細:

から継承する次の ExtJS クラスがありますExt.window.Window

Ext.define('WD.view.TbWindow', {
    extend : 'Ext.window.Window',
    isTbWindow: true,

    title: 'Set Me!!',
    constrain: true, // constrain window to viewport
    autoShow: false,
    maximizable: true,
    minimizable: true,

    renderTo: 'main_panel-body',

    minimize: function() {
        this.hide();
        this.setActive(false);
        this.animateTarget.handleWinMinimize();
    },

    ...

});

上記の関数内minimizeに呼び出しがありますthis.setActive(false);

Chrome 開発者ツールを使用してコードをデバッグします。実行前の行this.activetrue. 行が実行された後、それはまだですtrue。ExtJS 4.1 を使用しています。

4

2 に答える 2

0

ソースコードで true または false に設定されているアクティブなプロパティはなく、ドキュメントにも記載されていません。

setActive: function(active, newActive) {
    var me = this;

    if (active) {
        if (me.el.shadow && !me.maximized) {
            me.el.enableShadow(true);
        }
        if (me.modal && !me.preventFocusOnActivate) {
            me.focus(false, true);
        }
        me.fireEvent('activate', me);
    } else {
        // Only the *Windows* in a zIndex stack share a shadow. All other types of floaters
        // can keep their shadows all the time
        if (me.isWindow && (newActive && newActive.isWindow)) {
            me.el.disableShadow();
        }
        me.fireEvent('deactivate', me);
    }
}
于 2012-07-06T11:34:50.740 に答える
0

問題はExt.WindowManager.getActive()方法にあります。実際、Web デスクトップの例では、Sencha の連中は、実際のアクティブ ウィンドウを取得するために、あまり良くないコーディングを実際に行っています。そのコードをコピーし、コードで Windows 配列のサポートを開始したところ、問題が解決しました。

DesktopMgrから継承し、「デスクトップ マネージャー」として機能するウィジェットを作成 (および追加機能を組み込み) しましExt.util.MixedCollectionた。「デスクトップ」は、複数のウィンドウ、アクティブ化、非アクティブ化、への移動を処理するための ExtJS コンテナーを意味します。前/次など

DesktopMgrこのgistからをダウンロードして使用できます。それを改善する方法 (または修正するバグ!) を見つけたら、私に知らせてください。

于 2012-12-01T17:25:20.217 に答える