diff --git a/CHANGELOG.md b/CHANGELOG.md index e72aaab8f..a359971c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +## [6.3.2](https://github.com/NativeScript/NativeScript/compare/6.3.1...6.3.2) (2019-12-20) + + +### Bug Fixes + +* check is disposed fragment is in the FragmentManager ([#8201](https://github.com/NativeScript/NativeScript/issues/8201)) ([4b00376](https://github.com/NativeScript/NativeScript/commit/4b00376)) +* handle fake attach after FragMgr is destroyed ([#8200](https://github.com/NativeScript/NativeScript/issues/8200)) ([d1858f8](https://github.com/NativeScript/NativeScript/commit/d1858f8)) + + + +## [6.3.1](https://github.com/NativeScript/NativeScript/compare/6.3.0...6.3.1) (2019-12-16) + + +### Bug Fixes + +* null reference exception in view.android.onUnloaded ([#8153](https://github.com/NativeScript/NativeScript/issues/8153)) ([da639f2](https://github.com/NativeScript/NativeScript/commit/da639f2)) + + + +# [6.3.0](https://github.com/NativeScript/NativeScript/compare/6.2.2...6.3.0) (2019-12-06) + + +### Bug Fixes + +* **android:** Fatal Exception: java.lang.OutOfMemoryError ([#8061](https://github.com/NativeScript/NativeScript/issues/8061)) ([8d382a6](https://github.com/NativeScript/NativeScript/commit/8d382a6b2e722e9298becdcfb3b43a41352a9136)) +* **grid-layout:** value parser will now accept strings or numbers ([#8042](https://github.com/NativeScript/NativeScript/issues/8042)) ([3199a39](https://github.com/NativeScript/NativeScript/commit/3199a392b45635606e06119845099965246395c3)) +* **iOS:** Opening alert/confirm on top most of modal dialogs ([#7982](https://github.com/NativeScript/NativeScript/issues/7982)) ([60ac4e7](https://github.com/NativeScript/NativeScript/commit/60ac4e7a05c9e627eb9fc7a1bdf004c7fca99817)), closes [#6939](https://github.com/NativeScript/NativeScript/issues/6939) +* nested css-calc and css-variables with fallback ([#7987](https://github.com/NativeScript/NativeScript/issues/7987)) ([fc2a233](https://github.com/NativeScript/NativeScript/commit/fc2a233e9598def50969247c1516c32260b7e283)) + + +### Features + +* **css:** Added optional css-tree parser ([#8076](https://github.com/NativeScript/NativeScript/issues/8076)) ([49a7607](https://github.com/NativeScript/NativeScript/commit/49a7607f4e0f3d359820b5ae731f806966de2921)) +* **dialogs:** Setting the size of popup dialog thru dialog options ([#8041](https://github.com/NativeScript/NativeScript/issues/8041)) ([cd5703a](https://github.com/NativeScript/NativeScript/commit/cd5703a6b79598031ef334a9cf3132e688422aba)) +* support requestAnimationFrame ([#8112](https://github.com/NativeScript/NativeScript/issues/8112)) ([2aa6e9b](https://github.com/NativeScript/NativeScript/commit/2aa6e9bf922286f9ffd747f901dbc922cd9446b9)) +* System css classes for modals ([#8155](https://github.com/NativeScript/NativeScript/issues/8155)) ([7b78f3b](https://github.com/NativeScript/NativeScript/commit/7b78f3b0c640d9d43026744b919a03996191f788)) +* **modal-view-ios:** handle iOS 13 dismiss modal gesture ([#8024](https://github.com/NativeScript/NativeScript/issues/8024)) ([c5df258](https://github.com/NativeScript/NativeScript/commit/c5df2580439c24c57fb364cba91050a00e391c35)) + + + ## [6.2.2](https://github.com/NativeScript/NativeScript/compare/6.2.1...6.2.2) (2019-11-25) diff --git a/build/prepare-compat.sh b/build/prepare-compat.sh index 82e548500..8d09bcc37 100755 --- a/build/prepare-compat.sh +++ b/build/prepare-compat.sh @@ -31,10 +31,6 @@ NATIVESCRIPT_CORE_ARGS=${NATIVESCRIPT_CORE_ARGS:-$DEFAULT_NATIVESCRIPT_CORE_ARGS echo "Copying $PACKAGE_SOURCE $DIST/$PACKAGE..." npx ncp "$PACKAGE_SOURCE" "$DIST/$PACKAGE" - echo "TODO(REMOVE THIS HACK): Copying platfroms/ios/Podfile" - mkdir -p "$DIST/$PACKAGE/platforms/ios" - npx ncp "nativescript-core/platforms/ios/Podfile" "$DIST/$PACKAGE/platforms/ios/Podfile" - echo "Copying README and LICENSE to $DIST/$PACKAGE" npx ncp LICENSE "$DIST"/"$PACKAGE"/LICENSE diff --git a/e2e/scoped-packages/package.json b/e2e/scoped-packages/package.json index 603688e15..5ccc47b88 100644 --- a/e2e/scoped-packages/package.json +++ b/e2e/scoped-packages/package.json @@ -13,9 +13,9 @@ "license": "SEE LICENSE IN ", "repository": "", "dependencies": { - "@nativescript/core": "file:../../dist/nativescript-core-6.2.0.tgz", + "@nativescript/core": "file:../../dist/nativescript-core-6.3.0.tgz", "nativescript-theme-core": "~1.0.6", - "tns-core-modules": "file:../../dist/tns-core-modules-6.2.0.tgz" + "tns-core-modules": "file:../../dist/tns-core-modules-6.3.0.tgz" }, "devDependencies": { "nativescript-dev-webpack": "~1.2.0", diff --git a/nativescript-core/platforms/ios/Podfile b/nativescript-core/platforms/ios/Podfile index 8bdf3a050..7ba729baa 100644 --- a/nativescript-core/platforms/ios/Podfile +++ b/nativescript-core/platforms/ios/Podfile @@ -1,4 +1,4 @@ platform :ios, '9.0' use_frameworks! -pod 'MaterialComponents/Tabs', '~> 92.3' \ No newline at end of file +pod 'MaterialComponents/Tabs', '~> 94.5' \ No newline at end of file diff --git a/nativescript-core/ui/bottom-navigation/bottom-navigation.android.ts b/nativescript-core/ui/bottom-navigation/bottom-navigation.android.ts index ce3bfd17d..49081f259 100644 --- a/nativescript-core/ui/bottom-navigation/bottom-navigation.android.ts +++ b/nativescript-core/ui/bottom-navigation/bottom-navigation.android.ts @@ -385,14 +385,14 @@ export class BottomNavigation extends TabNavigationBase { _onAttachedToWindow(): void { super._onAttachedToWindow(); - this._attachedToWindow = true; // _onAttachedToWindow called from OS again after it was detach // TODO: Consider testing and removing it when update to androidx.fragment:1.2.0 if (this._manager && this._manager.isDestroyed()) { return; } - + + this._attachedToWindow = true; this.changeTab(this.selectedIndex); } diff --git a/nativescript-core/ui/core/view/view.android.ts b/nativescript-core/ui/core/view/view.android.ts index 38e8fcd18..2388aa67c 100644 --- a/nativescript-core/ui/core/view/view.android.ts +++ b/nativescript-core/ui/core/view/view.android.ts @@ -156,6 +156,8 @@ function initializeDialogFragment() { const ownerId = this.getArguments().getInt(DOMID); const options = getModalOptions(ownerId); this.owner = options.owner; + // Set owner._dialogFragment to this in case the DialogFragment was recreated after app suspend + this.owner._dialogFragment = this; this._fullscreen = options.fullscreen; this._animated = options.animated; this._cancelable = options.cancelable; @@ -381,11 +383,13 @@ export class View extends ViewCommon { @profile public onUnloaded() { if (this.touchListenerIsSet) { - this.nativeViewProtected.setOnTouchListener(null); this.touchListenerIsSet = false; - this.nativeViewProtected.setClickable(this._isClickable); + if (this.nativeViewProtected) { + this.nativeViewProtected.setOnTouchListener(null); + this.nativeViewProtected.setClickable(this._isClickable); + } } - + this._manager = null; this._rootManager = null; super.onUnloaded(); diff --git a/nativescript-core/ui/frame/frame.android.ts b/nativescript-core/ui/frame/frame.android.ts index e06248e64..e8f798f28 100644 --- a/nativescript-core/ui/frame/frame.android.ts +++ b/nativescript-core/ui/frame/frame.android.ts @@ -150,14 +150,14 @@ export class Frame extends FrameBase { _onAttachedToWindow(): void { super._onAttachedToWindow(); - this._attachedToWindow = true; - + // _onAttachedToWindow called from OS again after it was detach // TODO: Consider testing and removing it when update to androidx.fragment:1.2.0 if (this._manager && this._manager.isDestroyed()) { return; } - + + this._attachedToWindow = true; this._processNextNavigationEntry(); } @@ -264,13 +264,13 @@ export class Frame extends FrameBase { !this._currentEntry.fragment.isAdded()) { return; } + const fragment: androidx.fragment.app.Fragment = this._currentEntry.fragment; + const fragmentManager: androidx.fragment.app.FragmentManager = fragment.getFragmentManager(); - const manager: androidx.fragment.app.FragmentManager = this._getFragmentManager(); - const transaction = manager.beginTransaction(); - const fragment = this._currentEntry.fragment; + const transaction = fragmentManager.beginTransaction(); const fragmentExitTransition = fragment.getExitTransition(); - // Reset animation to its initial state to prevent mirrorered effect when restore current fragment transitions + // Reset animation to its initial state to prevent mirrored effect when restore current fragment transitions if (fragmentExitTransition && fragmentExitTransition instanceof org.nativescript.widgets.CustomTransition) { fragmentExitTransition.setResetOnTransitionEnd(true); } @@ -637,7 +637,7 @@ function clearEntry(entry: BackstackEntry): void { entry.recreated = false; entry.fragment = null; const page = entry.resolvedPage; - if (page._context) { + if (page && page._context) { entry.resolvedPage._tearDownUI(true); } } @@ -1032,6 +1032,12 @@ class FragmentCallbacksImplementation implements AndroidFragmentCallbacks { } private loadBitmapFromView(view: android.view.View): android.graphics.Bitmap { + // Don't try to creat bitmaps with no dimensions as this causes a crash + // This might happen when showing and closing dialogs fast. + if (!(view && view.getWidth() > 0 && view.getHeight() > 0)) { + return undefined; + } + // Another way to get view bitmap. Test performance vs setDrawingCacheEnabled // const width = view.getWidth(); // const height = view.getHeight(); @@ -1041,7 +1047,8 @@ class FragmentCallbacksImplementation implements AndroidFragmentCallbacks { // view.draw(canvas); view.setDrawingCacheEnabled(true); - const bitmap = android.graphics.Bitmap.createBitmap(view.getDrawingCache()); + const drawCache = view.getDrawingCache(); + const bitmap = android.graphics.Bitmap.createBitmap(drawCache); view.setDrawingCacheEnabled(false); return bitmap; diff --git a/nativescript-core/utils/utils.ios.ts b/nativescript-core/utils/utils.ios.ts index 012308919..be2f3b956 100644 --- a/nativescript-core/utils/utils.ios.ts +++ b/nativescript-core/utils/utils.ios.ts @@ -6,8 +6,6 @@ import { export { ios }; export * from "./utils-common"; -let mainScreenScale; - export function openFile(filePath: string): boolean { try { const appPath = ios.getCurrentAppPath(); @@ -47,5 +45,3 @@ export function openUrl(location: string): boolean { return false; } - -mainScreenScale = UIScreen.mainScreen.scale; \ No newline at end of file