diff options
author | Simeon Andreev | 2017-12-12 11:28:44 +0000 |
---|---|---|
committer | Simeon Andreev | 2017-12-18 12:51:22 +0000 |
commit | cac16b0378941a518f90eb39831fa74b7d393b37 (patch) | |
tree | 5f9d3c5f0c91bdd46694762e82b56d2a8fa6df14 /tests/org.eclipse.swt.tests | |
parent | 5bc20b5fc4e17e832273d6756749ad8448fcef7d (diff) | |
download | eclipse.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/org.eclipse.swt.tests')
-rw-r--r-- | tests/org.eclipse.swt.tests/BugSnippets/Bug528415_CTabFolder_tabs_are_painted_wrong.java | 47 |
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(); + } +} |