diff options
author | Simon Leischnig | 2020-02-12 17:29:23 +0000 |
---|---|---|
committer | Karsten Thoms | 2020-09-23 21:39:16 +0000 |
commit | e6fc74f7568dc43e3aa8ab2ec0db476461cf71a6 (patch) | |
tree | 7264911cbe4c11ec8392388ac82556c3ddd620a4 | |
parent | f840b5205bb9d1e20236f4450ed00dc0130110da (diff) | |
download | eclipse.platform.ua-e6fc74f7568dc43e3aa8ab2ec0db476461cf71a6.tar.gz eclipse.platform.ua-e6fc74f7568dc43e3aa8ab2ec0db476461cf71a6.tar.xz eclipse.platform.ua-e6fc74f7568dc43e3aa8ab2ec0db476461cf71a6.zip |
Bug 560030 - Fix for NPE in Context HelpY20201002-1200Y20201001-1200Y20200930-1200Y20200929-1200Y20200929-0550Y20200928-1200Y20200928-0700Y20200928-0600I20201002-1800I20201001-1800I20200930-1800I20200929-1800I20200928-1800I20200927-1800I20200926-1800I20200925-1800I20200924-1800I20200924-0430I20200924-0340
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.java | 17 |
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(); } } - |