Hi Sergey,
Yes, this method should return JInternalFrame but there is no way to get
JinternalFrame object from BasicInternalFrameTitlePane currently. This
Metacity class has the provision of accepting null value from this method
and this assertion problem is caused only when we ran with "esa" [to
enable assertion]. The submitter has not mentioned there is any failure
if we run the without esa, so I have only done away with the wrong
assertion for BasicInternalFrameTitlePane.
Regards
Prasanta
On 04-Oct-18 9:43 PM, Sergey Bylokhov wrote:
Hi, Prasanta.
Can you please clarify this code a little bit. As far as I understand
this method should return the JInternalFrame, which should be accessed
via the comp passed to this method. This method already has this check:
if (comp.getParent() instanceof BasicInternalFrameTitlePane) {
comp = comp.getParent();
}
So maybe we can improve it to fetch the JInternalFrame from the
BasicInternalFrameTitlePane or from another class passed to this method?
On 04/10/2018 07:35, Prasanta Sadhukhan wrote:
Hi All,
Please review a cleanup of the code where wrong assertion is used
when Component is an instance of BasicInternalFrameTitlePane.
Now, BasicInternalFrameTitlePane is extended from JComponent and not
from JInternalFrame
so it will never satisfy the if-else condition if "Component is
instanceof BasicInternalFrameTitlePane",
so proposed fix is to assert only if the component is not an instance
of BasicInternalFrameTitlePane
diff -r d96a607e9594
src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java
---
a/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java
Tue Sep 18 18:32:03 2018 -0700
+++
b/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java
Thu Oct 04 19:53:10 2018 +0530
@@ -337,7 +337,9 @@
} else if (comp instanceof JInternalFrame.JDesktopIcon) {
return
((JInternalFrame.JDesktopIcon)comp).getInternalFrame();
}
- assert false : "cannot find the internal frame";
+ if (!(comp instanceof BasicInternalFrameTitlePane)) {
+ assert false : "cannot find the internal frame";
+ }
return null;
}
Regards
Prasanta