Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSimeon Andreev2017-12-12 06:28:44 -0500
committerSimeon Andreev2017-12-18 07:51:22 -0500
commitcac16b0378941a518f90eb39831fa74b7d393b37 (patch)
tree5f9d3c5f0c91bdd46694762e82b56d2a8fa6df14 /tests
parent5bc20b5fc4e17e832273d6756749ad8448fcef7d (diff)
downloadeclipse.platform.swt-cac16b0378941a518f90eb39831fa74b7d393b37.tar.gz
eclipse.platform.swt-cac16b0378941a518f90eb39831fa74b7d393b37.tar.xz
eclipse.platform.swt-cac16b0378941a518f90eb39831fa74b7d393b37.zip
Bug 528415 - CTabFolder tabs vanish after mouse-over
If a CTabFolder specifies SWT.RIGHT_TO_LEFT as one of its styles, mouse-over on a tab will make the tab not draw. This painting artifact remains until another window becomes active. See the bug snippet. This is due to wrong clipping set to the draw event in Control.gtk_draw(). The event bounds are correctly set in the case of SWT.MIRRORED (derived from SWT.RIGHT_TO_LEFT), but for the clipping area SWT.MIRRORED is not taken into account. This is a regression coming from bug 421127. This change ensures the event clipping equals the event bounds, on draw event creation. This ensures the tabs of the CTabFolder are redrawn. Change-Id: I3bb9049bac98c5f5d360135771ef43ef1cc1a9b1 Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com> Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/org.eclipse.swt.tests/BugSnippets/Bug528415_CTabFolder_tabs_are_painted_wrong.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/org.eclipse.swt.tests/BugSnippets/Bug528415_CTabFolder_tabs_are_painted_wrong.java b/tests/org.eclipse.swt.tests/BugSnippets/Bug528415_CTabFolder_tabs_are_painted_wrong.java
new file mode 100644
index 0000000000..2d346bca84
--- /dev/null
+++ b/tests/org.eclipse.swt.tests/BugSnippets/Bug528415_CTabFolder_tabs_are_painted_wrong.java
@@ -0,0 +1,47 @@
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Description: CTabItem in CTabFolder disappears on mouse over.
+ * Steps to reproduce:
+ * <ol>
+ * <li>mouse over a tab which has style SWT.RIGHT_TO_LEFT</li>
+ * </ol>
+ * Expected results: Tab is visible during and after mouse-over.
+ * Actual results: Tab is not visible during and after mouse-over, until another shell becomes active.
+ */
+public class Bug528415_CTabFolder_tabs_are_painted_wrong {
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setSize(400, 200);
+ shell.setLayout(new FillLayout(SWT.VERTICAL));
+ shell.setText("Bug 528415: tab hovering is broken");
+
+ CTabFolder tabFolder = new CTabFolder(shell, SWT.RIGHT_TO_LEFT);
+ CTabItem tab1 = new CTabItem(tabFolder, SWT.NONE);
+ tab1.setText("Bad Tab 1");
+ CTabItem tab2 = new CTabItem(tabFolder, SWT.NONE);
+ tab2.setText("Bad Tab 2");
+
+ tabFolder = new CTabFolder(shell, SWT.LEFT_TO_RIGHT);
+ tab1 = new CTabItem(tabFolder, SWT.NONE);
+ tab1.setText("Good Tab 1");
+ tab2 = new CTabItem(tabFolder, SWT.NONE);
+ tab2.setText("Good Tab 2");
+
+ shell.open();
+
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ display.dispose();
+ }
+}

Back to the top