aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorJuho Nurminen <juho@vaadin.com>2014-02-20 16:56:10 +0200
committerJuho Nurminen <juho@vaadin.com>2014-03-19 16:39:17 +0200
commit60aa66a629081058f96e672633ded9cc73c292e2 (patch)
tree5d63399e8c5eed524825b88e685d28eb904f7151 /client
parente45294f717f920a6dfbcf36aff68d25d9b00cca3 (diff)
downloadvaadin-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.java31
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;
}
}
}