Skip to content

Commit

Permalink
bugfix: scroll to last x/y position after a scrollable container has …
Browse files Browse the repository at this point in the history
…been removed from app and added to app again
  • Loading branch information
felipevex committed Mar 9, 2018
1 parent 59e9859 commit edf7268
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions priori/view/container/PriScrollableContainer.hx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package priori.view.container;

import js.html.TouchEvent;
import priori.system.PriDeviceBrowser;
import priori.event.PriMouseEvent;
import priori.system.PriDevice;
Expand All @@ -18,6 +19,8 @@ class PriScrollableContainer extends PriGroup {
public var maxScrollX(get, null):Float;

private var __mouseIsOver:Bool = false;
private var __lastXScroll:Int = 0;
private var __lastYScroll:Int = 0;

public function new() {
super();
Expand All @@ -33,9 +36,31 @@ class PriScrollableContainer extends PriGroup {
this.addEventListener(PriMouseEvent.MOUSE_OUT, onOut);
}

this.addEventListener(PriEvent.ADDED_TO_APP, this.__onAddedToApp);

if (this.dh.jselement.addEventListener != null) {
this.dh.jselement.addEventListener("scroll", this.__onScrollUpdater, true);
} else {
this.dh.jselement.onscroll = this.__onScrollUpdater;
}

// this.dh.jselement.ontouchstart = this.__onTouchStart;
// this.dh.jselement.ontouchend = this.__onTouchEnd;
}

private function __onScrollUpdater():Void {
this.__lastXScroll = this.dh.jselement.scrollLeft;
this.__lastYScroll = this.dh.jselement.scrollTop;
}

private function __onAddedToApp(e:PriEvent):Void {
this.dh.jselement.scrollLeft = this.__lastXScroll;
this.dh.jselement.scrollTop = this.__lastYScroll;
}

private function __onTouchStart(e:TouchEvent):Void this.onOver(null);
private function __onTouchEnd(e:TouchEvent):Void this.onOut(null);

private function onOver(e:PriMouseEvent):Void {
this.__mouseIsOver = true;
this.updateScrollerView();
Expand Down Expand Up @@ -126,4 +151,8 @@ class PriScrollableContainer extends PriGroup {
return result;
}

override public function kill():Void {
this.removeEventListener(PriEvent.ADDED_TO_APP, this.__onAddedToApp);
super.kill();
}
}

0 comments on commit edf7268

Please sign in to comment.