From ec1082721d7fa3b424315e77a7c447e92963288b Mon Sep 17 00:00:00 2001 From: Thomas Cashman Date: Sat, 15 Sep 2018 13:51:25 +0100 Subject: [PATCH] Fixed out of bounds exception when switch between TabView and another navigation type --- CHANGES | 1 + ui/src/main/java/org/mini2Dx/ui/element/TabView.java | 10 ++++++---- .../org/mini2Dx/ui/navigation/TabViewUiNavigation.java | 9 +++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index e4c83a37..871d0e38 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,5 @@ [1.7.13-SNAPSHOT] +- Fixed out of bounds exception when switch between TabView and another navigation type [1.7.12] - Added IntTreeMap implementation diff --git a/ui/src/main/java/org/mini2Dx/ui/element/TabView.java b/ui/src/main/java/org/mini2Dx/ui/element/TabView.java index 0021409c..d05367ae 100644 --- a/ui/src/main/java/org/mini2Dx/ui/element/TabView.java +++ b/ui/src/main/java/org/mini2Dx/ui/element/TabView.java @@ -424,10 +424,7 @@ public void setZIndex(int zIndex) { * @return Null if no {@link Tab} is visible */ public Tab getCurrentTab() { - if (currentTabIndex >= tabs.size()) { - return null; - } - return tabs.get(currentTabIndex); + return tabs.get(getCurrentTabIndex()); } /** @@ -452,6 +449,11 @@ public void setCurrentTab(Tab tab) { * @return 0 by default */ public int getCurrentTabIndex() { + if(currentTabIndex < 0) { + currentTabIndex = 0; + } else if(currentTabIndex >= tabs.size()) { + currentTabIndex = 0; + } return currentTabIndex; } diff --git a/ui/src/main/java/org/mini2Dx/ui/navigation/TabViewUiNavigation.java b/ui/src/main/java/org/mini2Dx/ui/navigation/TabViewUiNavigation.java index 988cfe55..93166773 100644 --- a/ui/src/main/java/org/mini2Dx/ui/navigation/TabViewUiNavigation.java +++ b/ui/src/main/java/org/mini2Dx/ui/navigation/TabViewUiNavigation.java @@ -36,6 +36,9 @@ public void layout(ScreenSize screenSize) { @Override public Actionable getCursor() { + if(tabs.isEmpty()) { + return null; + } UiNavigation navigation = tabs.get(tabView.getCurrentTabIndex()).getNavigation(); if(navigation == null) { return null; @@ -45,6 +48,9 @@ public Actionable getCursor() { @Override public Actionable resetCursor() { + if(tabs.isEmpty()) { + return null; + } UiNavigation navigation = tabs.get(tabView.getCurrentTabIndex()).getNavigation(); if(navigation == null) { return null; @@ -74,6 +80,9 @@ public void set(int index, Actionable actionable) { @Override public Actionable navigate(int keycode) { + if(tabs.isEmpty()) { + return null; + } UiNavigation navigation = tabs.get(tabView.getCurrentTabIndex()).getNavigation(); if(navigation == null) { return null;