mirror of https://github.com/espruino/BangleApps
kineticscroll - Fix setting a remove method for every scroller
parent
7c874199c4
commit
a5190d4d86
|
@ -123,12 +123,6 @@
|
|||
let uiOpts = {
|
||||
mode : "custom",
|
||||
back : options.back,
|
||||
remove : ()=>{
|
||||
if (scheduledDraw)
|
||||
clearTimeout(scheduledDraw);
|
||||
clearInterval(scheduledBrake);
|
||||
if (options.remove) options.remove();
|
||||
},
|
||||
drag : dragHandler,
|
||||
touch : touchHandler
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(function(){E.showScroller=function(c){function n(a){return a*c.h+b.y-k}function p(a){return Math.floor((a+k-b.y)/c.h)}if(!c)return Bangle.setUI();let h,e=0,l=0,t=setInterval(()=>{e*=.9},50),q=0,b=Bangle.appRect,m=0|c.scrollMin,r=c.h*c.c-b.h;r<m&&(r=m);let u=(a,d)=>{d.y<b.y-4||(l=e=0,a=p(d.y),(0>m||0<=a)&&a<c.c&&c.select(a,{x:d.x,y:d.y+k-b.y-a*c.h}))},v=()=>{var a=e;f.scroll-a>r&&(a=f.scroll-r,e=0);f.scroll-a<m&&(a=f.scroll-m,e=0);f.scroll-=a;a=k;k=f.scroll&-2;a-=k;h=.01<Math.abs(e)?setTimeout(v,
|
||||
0):void 0;if(a){g.reset().setClipRect(b.x,b.y,b.x2,b.y2).scroll(0,a);if(0>a){a=Math.max(b.y2-(1-a),b.y);g.setClipRect(b.x,a,b.x2,b.y2);var d=p(a);for(a=n(d);a<b.y2;a+=c.h)c.draw(d,{x:b.x,y:a,w:b.w,h:c.h}),d++}else for(a=Math.min(b.y+a,b.y2),g.setClipRect(b.x,b.y,b.x2,a),d=p(a),n(d),a=n(d);a>b.y-c.h;a-=c.h)c.draw(d,{x:b.x,y:a,w:b.w,h:c.h}),d--;g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)}},w={mode:"custom",back:c.back,remove:()=>{h&&clearTimeout(h);clearInterval(t);c.remove&&c.remove()},drag:a=>
|
||||
{if(0>e&&0<a.dy||0<e&&0>a.dy)e*=-1,l=5*e;0<a.b&&(q||(q=Date.now(),l=e=0),l+=a.dy);e=l/(Date.now()-q)*100;q&&0==a.b&&(q=l=0);e=E.clip(e,-100,100);lastDrag=Date.now();h||(h=setTimeout(v,0))},touch:u};c.remove&&(w.remove=()=>{h&&clearTimeout(h);clearInterval(t);c.remove&&c.remove()});Bangle.setUI(w);let f={scroll:E.clip(0|c.scroll,m,r),draw:()=>{g.reset().clearRect(b).setClipRect(b.x,b.y,b.x2,b.y2);var a=p(b.y);let d=Math.min(p(b.y2),c.c-1);for(;a<=d;a++)c.draw(a,{x:b.x,y:n(a),w:b.w,h:c.h});g.setClipRect(0,
|
||||
0,g.getWidth()-1,g.getHeight()-1)},drawItem:a=>{let d=n(a);g.reset().setClipRect(b.x,Math.max(d,b.y),b.x2,Math.min(d+c.h,b.y2));c.draw(a,{x:b.x,y:d,w:b.w,h:c.h});g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)},isActive:()=>Bangle.touchHandler==u},k=f.scroll&-2;f.draw();g.flip();return f}})()
|
||||
(function(){E.showScroller=function(c){function m(a){return a*c.h+b.y-h}function n(a){return Math.floor((a+h-b.y)/c.h)}if(!c)return Bangle.setUI();let p,e=0,k=0,w=setInterval(()=>{e*=.9},50),q=0,b=Bangle.appRect,l=0|c.scrollMin,r=c.h*c.c-b.h;r<l&&(r=l);let t=(a,d)=>{d.y<b.y-4||(k=e=0,a=n(d.y),(0>l||0<=a)&&a<c.c&&c.select(a,{x:d.x,y:d.y+h-b.y-a*c.h}))},u=()=>{var a=e;f.scroll-a>r&&(a=f.scroll-r,e=0);f.scroll-a<l&&(a=f.scroll-l,e=0);f.scroll-=a;a=h;h=f.scroll&-2;a-=h;p=.01<Math.abs(e)?setTimeout(u,
|
||||
0):void 0;if(a){g.reset().setClipRect(b.x,b.y,b.x2,b.y2).scroll(0,a);if(0>a){a=Math.max(b.y2-(1-a),b.y);g.setClipRect(b.x,a,b.x2,b.y2);var d=n(a);for(a=m(d);a<b.y2;a+=c.h)c.draw(d,{x:b.x,y:a,w:b.w,h:c.h}),d++}else for(a=Math.min(b.y+a,b.y2),g.setClipRect(b.x,b.y,b.x2,a),d=n(a),m(d),a=m(d);a>b.y-c.h;a-=c.h)c.draw(d,{x:b.x,y:a,w:b.w,h:c.h}),d--;g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)}},v={mode:"custom",back:c.back,drag:a=>{if(0>e&&0<a.dy||0<e&&0>a.dy)e*=-1,k=5*e;0<a.b&&(q||(q=Date.now(),k=
|
||||
e=0),k+=a.dy);e=k/(Date.now()-q)*100;q&&0==a.b&&(q=k=0);e=E.clip(e,-100,100);lastDrag=Date.now();p||(p=setTimeout(u,0))},touch:t};c.remove&&(v.remove=()=>{p&&clearTimeout(p);clearInterval(w);c.remove&&c.remove()});Bangle.setUI(v);let f={scroll:E.clip(0|c.scroll,l,r),draw:()=>{g.reset().clearRect(b).setClipRect(b.x,b.y,b.x2,b.y2);var a=n(b.y);let d=Math.min(n(b.y2),c.c-1);for(;a<=d;a++)c.draw(a,{x:b.x,y:m(a),w:b.w,h:c.h});g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)},drawItem:a=>{let d=m(a);g.reset().setClipRect(b.x,
|
||||
Math.max(d,b.y),b.x2,Math.min(d+c.h,b.y2));c.draw(a,{x:b.x,y:d,w:b.w,h:c.h});g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1)},isActive:()=>Bangle.touchHandler==t},h=f.scroll&-2;f.draw();g.flip();return f}})()
|
Loading…
Reference in New Issue