diff options
| author | Eric Williams | 2015-09-21 14:03:09 +0000 |
|---|---|---|
| committer | Alexander Kurtakov | 2015-09-23 07:21:05 +0000 |
| commit | 81b32128f07db650bc1cc9e0cc9f1272b6fa65f6 (patch) | |
| tree | 635bf5500e5bb4ddc377b2eef4688a1a943681d7 | |
| parent | 741a0c6c0568275cf69c249daf4041f8e8e2a19b (diff) | |
| download | eclipse.platform.swt-81b32128f07db650bc1cc9e0cc9f1272b6fa65f6.tar.gz eclipse.platform.swt-81b32128f07db650bc1cc9e0cc9f1272b6fa65f6.tar.xz eclipse.platform.swt-81b32128f07db650bc1cc9e0cc9f1272b6fa65f6.zip | |
Bug 392786: need to check senders ofOS.gdk_window_set_back_pixmap
This patch introduces version guards around Gtk2 code that has no Gtk3
API. In cases of Gtk3, the gdk_window_set_back_pixmap() is replaced with
a call to gdk_window_set_background_pattern(). In cases where these
replacements were made, the pattern/pixmap being set was null. This
behaviour has not changed on Gtk3.
Tested on Gtk3.16.6 and Gtk2.24 using Eclipse Neon M1. AllNonBrowser
tests pass in Gtk2 and Gtk3.
Change-Id: Ie316a3a360ea3f9481df39e0253ffb208f993de8
Signed-off-by: Eric Williams <ericwill@redhat.com>
| -rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java | 8 | ||||
| -rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java index f45c716ef3..90ba7ae91d 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java @@ -831,7 +831,13 @@ long /*int*/ gtk_realize (long /*int*/ widget) { long /*int*/ result = super.gtk_realize (widget); if ((style & SWT.NO_BACKGROUND) != 0) { long /*int*/ window = gtk_widget_get_window (paintHandle ()); - if (window != 0) OS.gdk_window_set_back_pixmap (window, 0, false); + if (window != 0) { + if (OS.GTK3) { + OS.gdk_window_set_background_pattern(window, 0); + } else { + OS.gdk_window_set_back_pixmap (window, 0, false); + } + } } if (socketHandle != 0) { embeddedHandle = OS.gtk_socket_get_id (socketHandle); diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java index 47b1002a28..15ed4a77db 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java @@ -4775,7 +4775,11 @@ public void setRedraw (boolean redraw) { OS.GDK_BUTTON_MOTION_MASK | OS.GDK_BUTTON1_MOTION_MASK | OS.GDK_BUTTON2_MOTION_MASK | OS.GDK_BUTTON3_MOTION_MASK; OS.gdk_window_set_events (window, OS.gdk_window_get_events (window) & ~mouseMask); - OS.gdk_window_set_back_pixmap (redrawWindow, 0, false); + if (OS.GTK3) { + OS.gdk_window_set_background_pattern(redrawWindow, 0); + } else { + OS.gdk_window_set_back_pixmap (redrawWindow, 0, false); + } OS.gdk_window_show (redrawWindow); } } |
