TabbedPane: fixed swapped back and forward scroll buttons when using TabbedPane.scrollButtonsPlacement = trailing (regression in FlatLaf 3.3 since commit 97495a6093)

This commit is contained in:
Karl Tauber
2024-03-12 18:41:47 +01:00
parent 11e0757387
commit 44752cc9aa
2 changed files with 23 additions and 17 deletions

View File

@@ -5,6 +5,8 @@ FlatLaf Change Log
#### Fixed bugs #### Fixed bugs
- TabbedPane: Fixed swapped back and forward scroll buttons when using
`TabbedPane.scrollButtonsPlacement = trailing` (regression in FlatLaf 3.3).
- Extras: `FlatSVGIcon` color filters now support linear gradients. (PR #817) - Extras: `FlatSVGIcon` color filters now support linear gradients. (PR #817)

View File

@@ -3851,6 +3851,8 @@ debug*/
w -= buttonWidth; w -= buttonWidth;
moreTabsButtonVisible = true; moreTabsButtonVisible = true;
} }
// layout scroll buttons
if( useScrollButtons ) { if( useScrollButtons ) {
// the tabViewport view size is set in // the tabViewport view size is set in
// BasicTabbedPaneUI.TabbedPaneScrollLayout.calculateTabRects(), // BasicTabbedPaneUI.TabbedPaneScrollLayout.calculateTabRects(),
@@ -3858,6 +3860,15 @@ debug*/
Point viewPosition = tabViewport.getViewPosition(); Point viewPosition = tabViewport.getViewPosition();
Dimension viewSize = tabViewport.getViewSize(); Dimension viewSize = tabViewport.getViewSize();
// layout forward button on trailing side
if( !hideDisabledScrollButtons || viewSize.width - viewPosition.x > w ) {
int buttonWidth = forwardButton.getPreferredSize().width;
forwardButton.setBounds( leftToRight ? (x + w - buttonWidth) : x, y, buttonWidth, h );
x += leftToRight ? 0 : buttonWidth;
w -= buttonWidth;
forwardButtonVisible = true;
}
// layout backward button // layout backward button
if( !hideDisabledScrollButtons || viewPosition.x > 0 ) { if( !hideDisabledScrollButtons || viewPosition.x > 0 ) {
int buttonWidth = backwardButton.getPreferredSize().width; int buttonWidth = backwardButton.getPreferredSize().width;
@@ -3873,15 +3884,6 @@ debug*/
w -= buttonWidth; w -= buttonWidth;
backwardButtonVisible = true; backwardButtonVisible = true;
} }
// layout forward button on trailing side
if( !hideDisabledScrollButtons || viewSize.width - viewPosition.x > w ) {
int buttonWidth = forwardButton.getPreferredSize().width;
forwardButton.setBounds( leftToRight ? (x + w - buttonWidth) : x, y, buttonWidth, h );
x += leftToRight ? 0 : buttonWidth;
w -= buttonWidth;
forwardButtonVisible = true;
}
} }
} }
@@ -3927,6 +3929,8 @@ debug*/
h -= buttonHeight; h -= buttonHeight;
moreTabsButtonVisible = true; moreTabsButtonVisible = true;
} }
// layout scroll buttons
if( useScrollButtons ) { if( useScrollButtons ) {
// the tabViewport view size is set in // the tabViewport view size is set in
// BasicTabbedPaneUI.TabbedPaneScrollLayout.calculateTabRects(), // BasicTabbedPaneUI.TabbedPaneScrollLayout.calculateTabRects(),
@@ -3934,6 +3938,14 @@ debug*/
Point viewPosition = tabViewport.getViewPosition(); Point viewPosition = tabViewport.getViewPosition();
Dimension viewSize = tabViewport.getViewSize(); Dimension viewSize = tabViewport.getViewSize();
// layout forward button on bottom side
if( !hideDisabledScrollButtons || viewSize.height - viewPosition.y > h ) {
int buttonHeight = forwardButton.getPreferredSize().height;
forwardButton.setBounds( x, y + h - buttonHeight, w, buttonHeight );
h -= buttonHeight;
forwardButtonVisible = true;
}
// layout backward button // layout backward button
if( !hideDisabledScrollButtons || viewPosition.y > 0 ) { if( !hideDisabledScrollButtons || viewPosition.y > 0 ) {
int buttonHeight = backwardButton.getPreferredSize().height; int buttonHeight = backwardButton.getPreferredSize().height;
@@ -3948,14 +3960,6 @@ debug*/
h -= buttonHeight; h -= buttonHeight;
backwardButtonVisible = true; backwardButtonVisible = true;
} }
// layout forward button on bottom side
if( !hideDisabledScrollButtons || viewSize.height - viewPosition.y > h ) {
int buttonHeight = forwardButton.getPreferredSize().height;
forwardButton.setBounds( x, y + h - buttonHeight, w, buttonHeight );
h -= buttonHeight;
forwardButtonVisible = true;
}
} }
} }