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 件のコメント:
コメントを投稿