fix layout for auto-hiding scrollbar (e.g. GTK)

This commit is contained in:
2022-01-07 21:25:01 +01:00
parent 20934a9f47
commit 7dbcffe95d
3 changed files with 67 additions and 28 deletions

View File

@ -113,6 +113,10 @@ public class WaveformView implements IWaveformView {
private final Canvas valueList;
private final Control nameFill;
private final Control valueFill;
final WaveformCanvas waveformCanvas;
final ToolTipHandler toolTipHandler;
@ -379,7 +383,10 @@ public class WaveformView implements IWaveformView {
@Override
public void controlResized(ControlEvent e) {
nameListScrolled.getVerticalBar().setVisible(false);
if(nameListScrolled.getSize().y == nameList.getSize().y) {
((GridData)nameFill.getLayoutData()).heightHint=18;
namePane.layout();
}
}
});
nameList = new Canvas(nameListScrolled, SWT.NONE) {
@ -398,7 +405,8 @@ public class WaveformView implements IWaveformView {
});
nameList.addMouseListener(nameValueMouseListener);
nameListScrolled.setContent(nameList);
nameFill = createFill(namePane);
createTextPane(valuePane, "Value");
valuePane.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_BACKGROUND));
@ -411,7 +419,10 @@ public class WaveformView implements IWaveformView {
@Override
public void controlResized(ControlEvent e) {
valueListScrolled.getVerticalBar().setVisible(false);
if(valueListScrolled.getSize().y == valueList.getSize().y) {
((GridData)valueFill.getLayoutData()).heightHint=18;
valuePane.layout();
}
}
});
valueList = new Canvas(valueListScrolled, SWT.NONE) {
@ -430,6 +441,7 @@ public class WaveformView implements IWaveformView {
});
valueList.addMouseListener(nameValueMouseListener);
valueListScrolled.setContent(valueList);
valueFill = createFill(valuePane);
waveformCanvas.setMaxTime(1);
waveformCanvas.addPaintListener(waveformMouseListener);
@ -489,6 +501,15 @@ public class WaveformView implements IWaveformView {
});
}
private Control createFill(Composite pane) {
Label cLabel = new Label(pane, SWT.NONE);
cLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_BACKGROUND));
GridData gd_cLabel = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
gd_cLabel.heightHint = 0;
cLabel.setLayoutData(gd_cLabel);
return cLabel;
}
private void createTextPane(Composite namePane, String text) {
GridLayout glNamePane = new GridLayout(1, false);
glNamePane.verticalSpacing = 0;

View File

@ -92,11 +92,11 @@ public class RangeSlider extends Canvas {
private void addMouseListeners() {
addListener(SWT.MouseDown, e -> {
if (e.button == 1) {
if (e.button == 1 || e.button == 2) {
selectKnobs(e);
selectedElement = (lowerHover ? LOWER : NONE) | (upperHover ? UPPER : NONE);
if (selectedElement!=NONE) {
if((e.stateMask & SWT.CTRL)==0)
if((e.stateMask & SWT.CTRL)==0 && e.button != 2)
selectedElement=BOTH;
startDragLowerValue = previousLowerValue = lowerValue;
startDragUpperValue = previousUpperValue = upperValue;
@ -112,7 +112,7 @@ public class RangeSlider extends Canvas {
super.setToolTipText(clientToolTipText);
selectedElement=NONE;
redraw();
} else {
} else if (e.button == 1) {
if(e.x<coordLower.x) {
translateValues(-pageIncrement);
validateNewValues(e);