diff options
author | Juho Nurminen <juho@vaadin.com> | 2014-02-20 16:56:10 +0200 |
---|---|---|
committer | Juho Nurminen <juho@vaadin.com> | 2014-03-19 16:39:17 +0200 |
commit | 60aa66a629081058f96e672633ded9cc73c292e2 (patch) | |
tree | 5d63399e8c5eed524825b88e685d28eb904f7151 /client | |
parent | e45294f717f920a6dfbcf36aff68d25d9b00cca3 (diff) | |
download | vaadin-framework-60aa66a629081058f96e672633ded9cc73c292e2.tar.gz vaadin-framework-60aa66a629081058f96e672633ded9cc73c292e2.zip |
Made TabSheet tabs always become visible when focused (#12343)
Change-Id: I8f840bf4e45e257454d5e16c7b43f63858fd15d8
Diffstat (limited to 'client')
-rw-r--r-- | client/src/com/vaadin/client/ui/VTabsheet.java | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/client/src/com/vaadin/client/ui/VTabsheet.java b/client/src/com/vaadin/client/ui/VTabsheet.java index 7d87650e24..172a25e3f3 100644 --- a/client/src/com/vaadin/client/ui/VTabsheet.java +++ b/client/src/com/vaadin/client/ui/VTabsheet.java @@ -243,6 +243,7 @@ public class VTabsheet extends VTabsheetBase implements Focusable, } public void focus() { + getTabsheet().scrollIntoView(this); focusImpl.focus(td); } @@ -1160,13 +1161,6 @@ public class VTabsheet extends VTabsheetBase implements Focusable, } while (newTabIndex >= 0 && !newTab.isSelectable()); if (newTabIndex >= 0) { - if (isScrolledTabs()) { - // Scroll until the new active tab is visible - while (!newTab.isVisible()) { - scrollerIndex = tb.scrollLeft(scrollerIndex); - } - updateTabScroller(); - } onTabSelected(newTabIndex); activeTabIndex = newTabIndex; } @@ -1182,17 +1176,24 @@ public class VTabsheet extends VTabsheetBase implements Focusable, } while (newTabIndex < getTabCount() && !newTab.isSelectable()); if (newTabIndex < getTabCount()) { - if (isClippedTabs()) { - // Scroll until the new active tab is completely visible - int newScrollerIndex = scrollerIndex; - while (isClipped(newTab) && newScrollerIndex != -1) { - newScrollerIndex = tb.scrollRight(newScrollerIndex); + onTabSelected(newTabIndex); + activeTabIndex = newTabIndex; + } + } + + private void scrollIntoView(Tab tab) { + if (!tab.isHiddenOnServer()) { + if (isClipped(tab)) { + while (isClipped(tab) && scrollerIndex != -1) { + scrollerIndex = tb.scrollRight(scrollerIndex); + } + updateTabScroller(); + } else if (!tab.isVisible()) { + while (!tab.isVisible()) { + scrollerIndex = tb.scrollLeft(scrollerIndex); } - scrollerIndex = newScrollerIndex; updateTabScroller(); } - onTabSelected(newTabIndex); - activeTabIndex = newTabIndex; } } } |