2007年9月16日日曜日

ExtのDragDropにバグ?

DDProxyでいろいろ試しているが、maintainOffsetを設定して要素をボックス内から出さないようにすると、スクロールとチック?がうまく動作しない。ソースコードを見ると親要素のスクロール位置を気にしてはいるものの、Ticksの再計算に利用されていない。

まずはstartDragでconstrainToを呼び出さないといけない。ただ、それだけではうまくいかず、ポジションを初期化する必要がある。

var proxy = Ext.get(elmt.id).initDDProxy('proxytest', {
maintainOffset:true
}, {
startDrag : function(){
this.setInitPosition();
this.constrainTo('container');
},

次に、Ticksの再計算のあたりを修正する。暫定対処として、setYConstraintなどを書き換える。

    setYConstraint: function(iUp, iDown, iTickSize) {
this.topConstraint = iUp;
this.bottomConstraint = iDown;

// minとmaxにスクロール位置の考慮が抜けてる
// this.minY = this.initPageY - iUp;
// this.maxY = this.initPageY + iDown;
var adjustment = Ext.get('constrainTo').getScroll().top;
this.minY = this.initPageY - iUp - adjustment;
this.maxY = this.initPageY + iDown - adjustment;

// 呼出元のconstrainToがiTickSizeを渡してこない
// this.setYTicks(this.initPageY, iTickSize);
this.setYTicks(this.initPageY, 25);

this.constrainY = true;
}
});

0 件のコメント: