diff options
author | Paul D'Pong | 2021-06-09 20:22:47 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2021-06-15 14:36:01 +0000 |
commit | 5bb9f2d3a55084e21a2d23401008aa29c28592d4 (patch) | |
tree | 9fa8c3ed6adacc87d660470f8a9b6a6b9a4ed192 | |
parent | a84e2fd515c377106e9140fac9ef6002443f1df2 (diff) | |
download | eclipse.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.java | 13 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java | 5 |
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); } /** |