From b837cc29abef976360593fc7bf2804af5ed82cad Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 28 Oct 2022 11:33:05 +0200 Subject: [PATCH] fix(android): drawer events for rightView (#13619) * fix(android): drawer events for rightView * add tests * lint --- .../titanium/ui/widget/TiUIDrawerLayout.java | 4 + .../ti.ui.android.drawerlayout.test.js | 74 ++++++++++++++++++- 2 files changed, 74 insertions(+), 4 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIDrawerLayout.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIDrawerLayout.java index eb5dda21adf..04dd608595c 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIDrawerLayout.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIDrawerLayout.java @@ -301,6 +301,10 @@ private void initRight() rightFrame.setLayoutParams(frameLayout); layout.addView(rightFrame); + + if (drawerToggle == null) { + initDrawerToggle(); + } } public void setCenterView(TiViewProxy viewProxy) diff --git a/tests/Resources/ti.ui.android.drawerlayout.test.js b/tests/Resources/ti.ui.android.drawerlayout.test.js index 91179c87a68..d74d30979d3 100644 --- a/tests/Resources/ti.ui.android.drawerlayout.test.js +++ b/tests/Resources/ti.ui.android.drawerlayout.test.js @@ -106,9 +106,16 @@ describe.android('Titanium.UI.Android.DrawerLayout', () => { }); it('.toolbar', finish => { - const window = Ti.UI.createWindow({ theme: 'Theme.Titanium.NoTitleBar' }); - const toolbar = Ti.UI.createToolbar({ titleTextColor: 'red', backgroundColor: 'cyan' }); - drawerLayout = Ti.UI.Android.createDrawerLayout({ toolbar: toolbar }); + const window = Ti.UI.createWindow({ + theme: 'Theme.Titanium.NoTitleBar' + }); + const toolbar = Ti.UI.createToolbar({ + titleTextColor: 'red', + backgroundColor: 'cyan' + }); + drawerLayout = Ti.UI.Android.createDrawerLayout({ + toolbar: toolbar + }); window.add(drawerLayout); window.addEventListener('open', () => { try { @@ -135,7 +142,9 @@ describe.android('Titanium.UI.Android.DrawerLayout', () => { // Test for theme with disabled default ActionBar it('for Theme.Titanium.NoTitleBar', () => { - const window = Ti.UI.createWindow({ theme: 'Theme.Titanium.NoTitleBar' }); + const window = Ti.UI.createWindow({ + theme: 'Theme.Titanium.NoTitleBar' + }); drawerLayout = Titanium.UI.Android.createDrawerLayout(); window.add(drawerLayout); should(drawerLayout.toolbarEnabled).be.true(); // default value @@ -146,4 +155,61 @@ describe.android('Titanium.UI.Android.DrawerLayout', () => { }); }); }); + + describe('events', () => { + + let drawerWindow; + let centerView; + let menuView; + + afterEach(() => { + drawerWindow = null; + centerView = null; + menuView = null; + }); + + beforeEach(() => { + drawerWindow = Ti.UI.createWindow(); + centerView = Ti.UI.createView(); + menuView = Ti.UI.createView({ + backgroundColor: 'red' + }); + }); + + it('check left open event', finish => { + const drawer = Ti.UI.Android.createDrawerLayout({ + centerView: centerView, + leftView: menuView, + }); + drawer.addEventListener('open', function (e) { + should(e.drawer).eql('left'); + finish(); + }); + drawerWindow.add(drawer); + drawerWindow.open(); + drawerWindow.addEventListener('open', function () { + setTimeout(function () { + drawer.toggleLeft(); + }, 500); + }); + }); + + it('check right open event', finish => { + const drawer = Ti.UI.Android.createDrawerLayout({ + centerView: centerView, + rightView: menuView, + }); + drawer.addEventListener('open', function (e) { + should(e.drawer).eql('right'); + finish(); + }); + drawerWindow.add(drawer); + drawerWindow.addEventListener('open', function () { + setTimeout(function () { + drawer.toggleRight(); + }, 500); + }); + drawerWindow.open(); + }); + }); });