From f1abec42b5404ee5afc100957689de7430fb4e60 Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Tue, 10 Nov 2015 15:20:21 +0200 Subject: [PATCH] more code + tests updates --- .../tests/ui/scroll-view/scroll-view-tests.ts | 52 ++++++++++++++++++- ui/scroll-view/scroll-view-common.ts | 14 +++-- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/apps/tests/ui/scroll-view/scroll-view-tests.ts b/apps/tests/ui/scroll-view/scroll-view-tests.ts index 3446ac9fb..ccd0e7407 100644 --- a/apps/tests/ui/scroll-view/scroll-view-tests.ts +++ b/apps/tests/ui/scroll-view/scroll-view-tests.ts @@ -285,7 +285,7 @@ class ScrollLayoutTest extends testModule.UITest { this.testView.scrollToVerticalOffset(100, false); TKUnit.waitUntilReady(function () { return scrollY > 0; }); - TKUnit.assertEqual(this.testView.verticalOffset, scrollY); + TKUnit.assertEqual(scrollY, this.testView.verticalOffset); } public test_scrollView_horizontal_raised_scroll_event() { @@ -307,7 +307,55 @@ class ScrollLayoutTest extends testModule.UITest { this.testView.scrollToHorizontalOffset(100, false); TKUnit.waitUntilReady(function () { return scrollX > 0; }); - TKUnit.assertEqual(this.testView.horizontalOffset, scrollX); + TKUnit.assertEqual(scrollX, this.testView.horizontalOffset); + } + + public test_scrollView_vertical_raised_scroll_event_after_loaded() { + this.testView.orientation = enums.Orientation.vertical; + + this.waitUntilTestElementIsLoaded(); + + var scrollY: number; + this.testView.on(scrollViewModule.ScrollView.scrollEvent, (args: scrollViewModule.ScrollEventData) => { + scrollY = args.scrollY; + }); + + this.testView.width = 200; + this.testView.height = 300; + + var btn = new button.Button(); + btn.text = "test"; + btn.height = 500; + this.testView.content = btn; + this.waitUntilTestElementLayoutIsValid(); + + this.testView.scrollToVerticalOffset(100, false); + TKUnit.waitUntilReady(function () { return scrollY > 0; }); + TKUnit.assertEqual(scrollY, this.testView.verticalOffset); + } + + public test_scrollView_horizontal_raised_scroll_event_after_loaded() { + this.testView.orientation = enums.Orientation.horizontal; + + this.waitUntilTestElementIsLoaded(); + + var scrollX: number; + this.testView.on(scrollViewModule.ScrollView.scrollEvent, (args: scrollViewModule.ScrollEventData) => { + scrollX = args.scrollX; + }); + + this.testView.width = 200; + this.testView.height = 300; + + var btn = new button.Button(); + btn.text = "test"; + btn.width = 500; + this.testView.content = btn; + this.waitUntilTestElementLayoutIsValid(); + + this.testView.scrollToHorizontalOffset(100, false); + TKUnit.waitUntilReady(function () { return scrollX > 0; }); + TKUnit.assertEqual(scrollX, this.testView.horizontalOffset); } } diff --git a/ui/scroll-view/scroll-view-common.ts b/ui/scroll-view/scroll-view-common.ts index 9d0836cca..f9074e34a 100644 --- a/ui/scroll-view/scroll-view-common.ts +++ b/ui/scroll-view/scroll-view-common.ts @@ -18,7 +18,7 @@ export var orientationProperty = new dependencyObservable.Property( ); export class ScrollView extends contentView.ContentView implements definition.ScrollView { - private _scrollEventAttached: boolean; + private _scrollChangeCount: number = 0; public static scrollEvent = "scroll"; get orientation(): string { @@ -32,6 +32,7 @@ export class ScrollView extends contentView.ContentView implements definition.Sc super.addEventListener(arg, callback, thisArg); if (arg === definition.ScrollView.scrollEvent) { + this._scrollChangeCount++; this.attach(); } } @@ -40,6 +41,7 @@ export class ScrollView extends contentView.ContentView implements definition.Sc super.addEventListener(arg, callback, thisArg); if (arg === definition.ScrollView.scrollEvent) { + this._scrollChangeCount--; this.dettach(); } } @@ -57,23 +59,19 @@ export class ScrollView extends contentView.ContentView implements definition.Sc } private attach() { - if (!this._scrollEventAttached && this.isLoaded) { - this._scrollEventAttached = true; - + if (this._scrollChangeCount > 0 && this.isLoaded) { this.attachNative(); } } private dettach() { - if (this._scrollEventAttached && this.isLoaded) { - this._scrollEventAttached = false; - + if (this._scrollChangeCount === 0 && this.isLoaded) { this.dettachNative(); } } protected attachNative() { - // + // } protected dettachNative() {