Skip to content

Commit

Permalink
fix(android): null out Ti.UI.Window's navigationWindow property befor…
Browse files Browse the repository at this point in the history
…e close event
  • Loading branch information
sgtcoolguy committed Jul 31, 2020
1 parent e3c0124 commit bdce8ae
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ public void popToRootWindow(@Kroll.argument(optional = true) Object arg)
// Keep first "root" window
for (int i = windows.size() - 1; i > 0; i--) {
TiWindowProxy window = windows.get(i);
window.close(arg);
windows.remove(window);
closeWindow(window, arg);
}
}

Expand Down Expand Up @@ -99,9 +98,10 @@ public void closeWindow(Object childToClose, @Kroll.argument(optional = true) Ob
return;
}

windows.remove(childToClose);
((TiWindowProxy) childToClose).close(arg);
((TiWindowProxy) childToClose).setNavigationWindow(null);
TiWindowProxy window = (TiWindowProxy) childToClose;
windows.remove(window);
window.setNavigationWindow(null);
window.close(arg);
}

@Override
Expand Down
23 changes: 11 additions & 12 deletions tests/Resources/ti.ui.navigationwindow.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -149,30 +149,29 @@ describe.windowsMissing('Titanium.UI.NavigationWindow', function () {
nav = Ti.UI.createNavigationWindow({
window: rootWindow
});
should(nav.popToRootWindow).be.a.function;
should(nav.popToRootWindow).be.a.Function();

rootWindow.addEventListener('open', function () {
setTimeout(function () {
nav.openWindow(subWindow);
}, 1);
rootWindow.addEventListener('open', function open() {
rootWindow.removeEventListener('open', open);
setTimeout(() => nav.openWindow(subWindow), 1);
});

subWindow.addEventListener('close', function () {
subWindow.addEventListener('close', function close () {
subWindow.removeEventListener('close', close);
try {
should(subWindow.navigationWindow).not.be.ok(); // null or undefined
// how else can we tell it got closed? I don't think a visible check is right...
// win should not be closed!
should(rootWindow.navigationWindow).eql(nav);
finish();
} catch (err) {
finish(err);
return finish(err);
}
finish();
});

subWindow.addEventListener('open', function () {
setTimeout(function () {
nav.popToRootWindow();
}, 1);
subWindow.addEventListener('open', function open() {
subWindow.removeEventListener('open', open);
setTimeout(() => nav.popToRootWindow(), 1);
});

nav.open();
Expand Down

0 comments on commit bdce8ae

Please sign in to comment.