Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorEric Williams2018-01-31 20:27:10 +0000
committerEric Williams2018-02-02 18:37:30 +0000
commit2b94e7b384e944a78a368863074b86d6cfecabcd (patch)
tree81d14727e01633f392f5f44a80dfdde6561a23d1 /tests
parent91ec200f79b93eab3648ca4efd9706bd7537135e (diff)
downloadeclipse.platform.swt-2b94e7b384e944a78a368863074b86d6cfecabcd.tar.gz
eclipse.platform.swt-2b94e7b384e944a78a368863074b86d6cfecabcd.tar.xz
eclipse.platform.swt-2b94e7b384e944a78a368863074b86d6cfecabcd.zip
Bug 481485: [GTK3.10+] Paint listener for button/label does not work
On GTK3.10+, Buttons and Labels do not receive the proper draw signals. This is due to them drawing on their SwtFixed parents (fixedHandle), as GtkButton and GtkLabel do not have their own GdkWindows. This patch reverts parts of bug 483791 and fixes this bug by overriding windowProc() in Button and Label. There we check if the incoming handle is the paintHandle, and draw accordingly. Bug snippet is attached in this patch. Change-Id: I7c415985248ca5fda9e38aaf9b0c08ae834d762d Signed-off-by: Eric Williams <ericwill@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/org.eclipse.swt.tests.gtk/Bug Snippets/org/eclipse/swt/tests/gtk/snippets/Bug481485_ButtonLabelPaintListener.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/org.eclipse.swt.tests.gtk/Bug Snippets/org/eclipse/swt/tests/gtk/snippets/Bug481485_ButtonLabelPaintListener.java b/tests/org.eclipse.swt.tests.gtk/Bug Snippets/org/eclipse/swt/tests/gtk/snippets/Bug481485_ButtonLabelPaintListener.java
new file mode 100644
index 0000000000..a9800c9f9f
--- /dev/null
+++ b/tests/org.eclipse.swt.tests.gtk/Bug Snippets/org/eclipse/swt/tests/gtk/snippets/Bug481485_ButtonLabelPaintListener.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Red Hat and others. All rights reserved.
+ * The contents of this file are made available under the terms
+ * of the GNU Lesser General Public License (LGPL) Version 2.1 that
+ * accompanies this distribution (lgpl-v21.txt). The LGPL is also
+ * available at http://www.gnu.org/licenses/lgpl.html. If the version
+ * of the LGPL at http://www.gnu.org is different to the version of
+ * the LGPL accompanying this distribution and there is any conflict
+ * between the two license versions, the terms of the LGPL accompanying
+ * this distribution shall govern.
+ *
+ * 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.Button;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+public class Bug481485_ButtonLabelPaintListener {
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setLayout(new GridLayout());
+
+ Button button = new Button(shell, SWT.PUSH);
+// the bug happens with Label as well
+// Label button = new Label(shell, SWT.None);
+ button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ button.addPaintListener(e -> e.gc.drawString("Button", 100, 100, true));
+
+ shell.setSize(300, 300);
+ shell.open();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ display.dispose();
+ }
+} \ No newline at end of file

Back to the top