Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul D'Pong2021-06-09 20:22:47 +0000
committerAlexander Kurtakov2021-06-15 14:36:01 +0000
commit5bb9f2d3a55084e21a2d23401008aa29c28592d4 (patch)
tree9fa8c3ed6adacc87d660470f8a9b6a6b9a4ed192
parenta84e2fd515c377106e9140fac9ef6002443f1df2 (diff)
downloadeclipse.platform.swt-5bb9f2d3a55084e21a2d23401008aa29c28592d4.tar.gz
eclipse.platform.swt-5bb9f2d3a55084e21a2d23401008aa29c28592d4.tar.xz
eclipse.platform.swt-5bb9f2d3a55084e21a2d23401008aa29c28592d4.zip
Bug 574112 - [GTK4] Fix incorrect widget destruction due to removal of
GtkContainer - Override Control's destroyWidget to correctly remove widget from parent SWTFixed container - Removed unused function (which wraps a call to destroyWidge) destroyHandle in Scrollbar - Remove comment in Scrollbar's destroyWidget override which has been there since 2009 or later, clearly not required to be uncommented Change-Id: Iae93ded9d80e8f5be7716add490f1bd8f216f573 Signed-off-by: Paul D'Pong <sdamrong@redhat.com> Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/181737 Tested-by: Platform Bot <platform-bot@eclipse.org> Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java13
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java5
2 files changed, 13 insertions, 5 deletions
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 04aceccc0a..7b5e6c41d2 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
@@ -4768,6 +4768,19 @@ void releaseWidget () {
}
}
+@Override
+void destroyWidget() {
+ if (GTK.GTK4) {
+ // Remove widget from hierarchy by removing it from parent container
+ if (parent != null) {
+ OS.swt_fixed_remove(parent.parentingHandle(), fixedHandle);
+ }
+ releaseHandle();
+ } else {
+ super.destroyWidget();
+ }
+}
+
/**
* GTK3 only, do not call on GTK4.
* @param window a GdkWindow
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
index 538c23e621..187e2bfa61 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
@@ -157,15 +157,10 @@ void deregister () {
if (adjustmentHandle != 0) display.removeWidget (adjustmentHandle);
}
-void destroyHandle () {
- super.destroyWidget ();
-}
-
@Override
void destroyWidget () {
parent.destroyScrollBar (this);
releaseHandle ();
- //parent.sendEvent (SWT.Resize);
}
/**

Back to the top