blob: cabc9ebbdf8ca366eb94c639e23edbf18297bc3c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019, 2020 Thomas Singer and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Thomas Singer - initial implementation to test bug 546552
* Paul Pazderski - adaption to test bug 553657
*******************************************************************************/
package org.eclipse.swt.tests.gtk.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
/**
* An inverted toggle must not inherit background colors.
* <p>
* Result before fix: toggle state (check mark, dot, ...) is hard to read
* because it's color is equal or very similar to the toggles background.
* <p>
* Expected result after fix: toggle state is readable and toggles background is
* either as someone would expect for the used theme or equal to the shell's
* background.
*/
public class Bug553657_CheckboxesInheritedBackground {
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Test bug 553657");
shell.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
shell.setBackgroundMode(SWT.INHERIT_DEFAULT);
shell.setLayout(new GridLayout(1, false));
for (int type : new int[] { SWT.CHECK, SWT.RADIO }) {
for (int i = 0; i < 4; i++) {
createToggle("Toggle type " + type + " variant " + i, i % 2 == 0, i / 2 == 0, shell, type);
}
}
shell.setSize(400, 300);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private static void createToggle(String text, boolean selection, boolean enabled, Composite parent, int type) {
final Button checkbox = new Button(parent, type);
checkbox.setText(text);
checkbox.setSelection(selection);
checkbox.setEnabled(enabled);
}
}