From 618a6e52861a2489edc78125a6e086d8e87947de Mon Sep 17 00:00:00 2001 From: Patrick Vares Date: Sat, 2 May 2015 03:49:32 -0400 Subject: [PATCH] Allowed menu to 'stick' to the right when too many tabs exist. Tabs that cannot be displayed are automatically hidden. Removed old code which attempted to reduce tab size by hiding the text --- app/src/processing/app/EditorHeader.java | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/processing/app/EditorHeader.java b/app/src/processing/app/EditorHeader.java index 08fde7d0f..24fcc6800 100644 --- a/app/src/processing/app/EditorHeader.java +++ b/app/src/processing/app/EditorHeader.java @@ -273,7 +273,9 @@ public class EditorHeader extends JComponent { tab.textWidth = (int) font.getStringBounds(tab.text, g2.getFontRenderContext()).getWidth(); } - +/* TODO eliminated 279-302 because it doesn't really work to reduce the tab size (by much anyways) + * and makes it confusing to find the tab you want because the name is hidden + * // make sure everything can fit if (!placeTabs(MARGIN_WIDTH, tabMax, null)) { //System.arraycopy(tabs, 0, visitOrder, 0, tabs.length); @@ -297,14 +299,19 @@ public class EditorHeader extends JComponent { break; } } - } + }*/ // now actually draw the tabs - placeTabs(MARGIN_WIDTH, tabMax, g2); - - // draw the dropdown menu target - menuLeft = tabs[tabs.length - 1].right + TAB_BETWEEN; - menuRight = menuLeft + ARROW_TAB_WIDTH; + if(!placeTabs(MARGIN_WIDTH, tabMax - ARROW_TAB_WIDTH, g2)){ + // draw the dropdown menu target at the right of the window + menuRight = tabMax; + menuLeft = menuRight - ARROW_TAB_WIDTH; + } else { + // draw the dropdown menu target next to the tabs + menuLeft = tabs[tabs.length - 1].right + TAB_BETWEEN; + menuRight = menuLeft + ARROW_TAB_WIDTH; + } + g.setColor(tabColor[UNSELECTED]); drawTab(g, menuLeft, menuRight); // int arrowY = (getHeight() - TAB_HEIGHT - TAB_STRETCH) + (TAB_HEIGHT - ARROW_HEIGHT)/2; @@ -370,7 +377,7 @@ public class EditorHeader extends JComponent { // } tab.right = x; - if (g != null) { + if (g != null && tab.right < right) { g.setColor(tabColor[state]); drawTab(g, tab.left, tab.right); // path.lineTo(x - NOTCH, top);