Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Leischnig2020-02-12 17:29:23 +0000
committerKarsten Thoms2020-09-23 21:39:16 +0000
commite6fc74f7568dc43e3aa8ab2ec0db476461cf71a6 (patch)
tree7264911cbe4c11ec8392388ac82556c3ddd620a4
parentf840b5205bb9d1e20236f4450ed00dc0130110da (diff)
downloadeclipse.platform.ua-e6fc74f7568dc43e3aa8ab2ec0db476461cf71a6.tar.gz
eclipse.platform.ua-e6fc74f7568dc43e3aa8ab2ec0db476461cf71a6.tar.xz
eclipse.platform.ua-e6fc74f7568dc43e3aa8ab2ec0db476461cf71a6.zip
A NPE potentially occurs when a toolbar is updated while flipPages() is processed. This change disables the update while flipPages() runs. The issue happened in an e4 application with compatibility layer, see github.com/jcryptool/crypto/issues/153 Change-Id: Iad0c4dc2125bbdf69b4e734b57f6fc9bdfab65cf Signed-off-by: Simon Leischnig <spamtothespam@gmail.com> Also-by: Karsten Thoms <karsten.thoms@karakun.com>
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java17
1 files changed, 14 insertions, 3 deletions
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java
index 5d5c83231..cadb5430b 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java
@@ -313,6 +313,8 @@ public class ReusableHelpPart implements IHelpUIConstants, IActivityManagerListe
private int nflexible;
+ private boolean updateActionBars = true;
+
public HelpPartPage(String id, String text) {
this.id = id;
this.text = text;
@@ -530,7 +532,10 @@ public class ReusableHelpPart implements IHelpUIConstants, IActivityManagerListe
bars.activate();
else
bars.deactivate();
- bars.updateActionBars();
+
+ if (this.updateActionBars) {
+ bars.updateActionBars();
+ }
} else {
((SubToolBarManager) subToolBarManager).setVisible(visible);
if (subMenuManager != null) {
@@ -1066,8 +1071,14 @@ public class ReusableHelpPart implements IHelpUIConstants, IActivityManagerListe
return false;
if (oldPage != null) {
oldPage.stop();
+ oldPage.updateActionBars = false;
oldPage.setVisible(false);
+ oldPage.updateActionBars = true;
}
+
+ newPage.updateActionBars = false;
+ newPage.setVisible(true);
+ newPage.updateActionBars = true;
mform.getForm().setText(null); //(newPage.getText());
mform.getForm().getForm().setSeparatorVisible(newPage.getText()!=null);
Image newImage=null;
@@ -1075,7 +1086,7 @@ public class ReusableHelpPart implements IHelpUIConstants, IActivityManagerListe
//if (iconId != null)
//newImage = HelpUIResources.getImage(iconId);
mform.getForm().setImage(newImage);
- newPage.setVisible(true);
+
toolBarManager.update(true);
currentPage = newPage;
if (mform.isStale())
@@ -1089,6 +1100,7 @@ public class ReusableHelpPart implements IHelpUIConstants, IActivityManagerListe
}
updateNavigation();
}
+
return true;
}
@@ -1799,4 +1811,3 @@ public class ReusableHelpPart implements IHelpUIConstants, IActivityManagerListe
mcPart.updateStatus();
}
}
-

Back to the top