Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Williams2018-05-30 14:43:19 +0000
committerEric Williams2018-06-12 19:50:06 +0000
commit9c3a2221fbf96861a67b63fdd282a92f830c49e3 (patch)
tree9d5bacb3028527260538d7b43a1c57507f4b9731 /tests/org.eclipse.swt.tests.gtk
parent394f4e7e26c263b24531e4e9007b110e0f35929d (diff)
downloadeclipse.platform.swt-9c3a2221fbf96861a67b63fdd282a92f830c49e3.tar.gz
eclipse.platform.swt-9c3a2221fbf96861a67b63fdd282a92f830c49e3.tar.xz
eclipse.platform.swt-9c3a2221fbf96861a67b63fdd282a92f830c49e3.zip
Bug 535323: [GTK3] Combo sizing problems
This is a two part fix: 1) Override resizeCalculationsGTK3 in Combo to use the GtkEntry for non-READ_ONLY Combos. This prevents us from using the GtkComboBoxText's preferred size which is usually way too large on GTK3.20+. 2) Update the patch from bug 500703 to support the case where one Composite has multiple Combo widgets inside of it. We support this case by setting fixClipHandle in the parent Composite, and then using a HashMap to keep track of the individual Controls, and their respective children who need to have their clips adjusted. Tested on GTK3.22 on X11 and Wayland -- no ill effects. No AllNonBrowser JUnit tests fail. Change-Id: I1d262c9d321dc314c7f66966bd58fbd8e25ba77e Signed-off-by: Eric Williams <ericwill@redhat.com>
Diffstat (limited to 'tests/org.eclipse.swt.tests.gtk')
-rw-r--r--tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535323_ComboSizing.java46
-rw-r--r--tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535657_MultipleComboOverlap.java79
2 files changed, 125 insertions, 0 deletions
diff --git a/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535323_ComboSizing.java b/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535323_ComboSizing.java
new file mode 100644
index 0000000000..374ebecc51
--- /dev/null
+++ b/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535323_ComboSizing.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Red Hat and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.tests.gtk.snippets;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+public class Bug535323_ComboSizing {
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ Rectangle clientArea = shell.getClientArea();
+ Combo combo1 = new Combo(shell, SWT.BORDER);
+ combo1.setItems("Alpha", "Bravo", "Charlie");
+ Point prefSize = combo1.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+ combo1.setBounds(clientArea.x, clientArea.y, prefSize.x, prefSize.y);
+ Combo combo2 = new Combo(shell, SWT.BORDER);
+ combo2.setItems("Alpha", "Bravo", "Charlie");
+ combo2.setBounds(clientArea.x, clientArea.y, prefSize.x, prefSize.y);
+ combo2.setBounds(clientArea.x, clientArea.y + prefSize.y, (prefSize.x / 2) - 1, prefSize.y);
+ Combo combo3 = new Combo(shell, SWT.BORDER);
+ combo3.setItems("Alpha", "Bravo", "Charlie");
+ combo3.setBounds(clientArea.x, clientArea.y + prefSize.y * 2, (prefSize.x / 2) + 1, prefSize.y);
+ shell.pack();
+ shell.open();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ display.dispose();
+ }
+
+} \ No newline at end of file
diff --git a/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535657_MultipleComboOverlap.java b/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535657_MultipleComboOverlap.java
new file mode 100644
index 0000000000..de17159453
--- /dev/null
+++ b/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug535657_MultipleComboOverlap.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Red Hat and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.tests.gtk.snippets;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+public class Bug535657_MultipleComboOverlap {
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setSize(400, 200);
+ shell.setText("Bug_odd_combos_on_resize");
+ shell.setLayout(new GridLayout());
+
+ createGroup(shell);
+
+ shell.open();
+
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ display.dispose();
+ }
+
+ private static void createGroup(Composite parent) {
+ Group group = new Group(parent, SWT.SHADOW_IN);
+
+ group.setText("some group");
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
+ gridData.horizontalSpan = 2;
+ group.setLayoutData(gridData);
+
+ GridLayout gridLayout = new GridLayout(2, false);
+ group.setLayout(gridLayout);
+
+ class LabelAndText {
+ String labelText;
+ String comboItem;
+
+ LabelAndText(String labelText, String comboItem) {
+ this.labelText = labelText;
+ this.comboItem = comboItem;
+ }
+ }
+
+ LabelAndText[] texts = {
+ new LabelAndText("Some label text: ", "some text"),
+ new LabelAndText("Some label text: ", "some long combo text"),
+ new LabelAndText("Some label text: ", "some text"),
+ };
+
+ for (LabelAndText text : texts) {
+ Label label = new Label(group, SWT.NONE);
+ label.setText(text.labelText);
+ Combo combo = new Combo(group, SWT.READ_ONLY | SWT.DROP_DOWN);
+ GridData comboGridData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ combo.setLayoutData(comboGridData);
+ combo.add(text.comboItem);
+ }
+ }
+} \ No newline at end of file

Back to the top