EVALUATION
1,2) It appears that the Nimbus engine has some special hacks to deal with
scrollbars in FireFox, and Swing's GTK L&F is hitting that case, which causes
the top/left scroll button to be offset by a couple pixels and the bottom/right
scroll button to be not rendered at all. Will need to discuss this further
with the engineer responsible for Nimbus.
3) Under Nimbus, the scrollbar buttons are rectangular (e.g. 13x17 for a vertical
scrollbar). However, the GTK L&F is currently assuming that scrollbar buttons
will be square (we set the ScrollBar.squareButtons property to TRUE). Also, in
SynthArrowButton, we only use the ArrowButton.size property to determine both the
width and height of arrow buttons, and we're getting that size value from
GtkRange's "slider-width" style property. This means that currently we are
creating arrow buttons under Nimbus that are 13x13, and as a result the scrollbar
thumb is free to paint over the ends of the trough. I propose that we fix
this by introducing a new UI default, ScrollBar.buttonSize, the value of which
is a dimension that depends on the orientation of the scrollbar. We can use
"slider-width" to determine the width and "stepper-size" for the height of
vertical scrollbar buttons, and vice versa for horizontal ones. We can use
these values in SynthArrowButton.getPreferredSize() to create a rectangular
button. We'll also have to change the default value of ScrollBar.squareButtons
property to FALSE in GTKLookAndFeel.
|