IDEA-228450 Run buttons disappear from toolbar on restart

GitOrigin-RevId: 3e817922bb1a748f1c0000e5d13fc8c4dce368ae
This commit is contained in:
Vassiliy.Kudryashov
2019-12-13 20:32:55 +00:00
committed by intellij-monorepo-bot
parent 43396139ca
commit e413982fdf
2 changed files with 22 additions and 4 deletions
@@ -40,6 +40,7 @@ public class DefaultActionGroup extends ActionGroup {
* Contains instances of Pair
*/
private final List<Pair<AnAction, Constraints>> myPairs = ContainerUtil.createLockFreeCopyOnWriteList();
private int myModificationStamp = 0;
public DefaultActionGroup() {
this(null, false);
@@ -72,6 +73,14 @@ public class DefaultActionGroup extends ActionGroup {
super(shortName, popup);
}
private void incrementModificationStamp() {
myModificationStamp++;
}
public int getModificationStamp() {
return myModificationStamp;
}
private void addActions(@NotNull List<? extends AnAction> actions) {
Set<Object> actionSet = new HashSet<>();
List<AnAction> uniqueActions = new ArrayList<>(actions.size());
@@ -84,6 +93,7 @@ public class DefaultActionGroup extends ActionGroup {
uniqueActions.add(action);
}
mySortedChildren.addAll(uniqueActions);
incrementModificationStamp();
}
/**
@@ -159,7 +169,7 @@ public class DefaultActionGroup extends ActionGroup {
myPairs.add(Pair.create(action, constraint));
}
addAllToSortedList(actionManager);
incrementModificationStamp();
return new ActionInGroup(this, action);
}
@@ -238,6 +248,7 @@ public class DefaultActionGroup extends ActionGroup {
Pair<AnAction, Constraints> pair = myPairs.get(i);
if (pair.first.equals(action) || (pair.first instanceof ActionStub && ((ActionStub)pair.first).getId().equals(id))) {
myPairs.remove(i);
incrementModificationStamp();
break;
}
}
@@ -250,6 +261,7 @@ public class DefaultActionGroup extends ActionGroup {
public final void removeAll() {
mySortedChildren.clear();
myPairs.clear();
incrementModificationStamp();
}
/**
@@ -259,6 +271,7 @@ public class DefaultActionGroup extends ActionGroup {
int index = mySortedChildren.indexOf(oldAction);
if (index >= 0) {
mySortedChildren.set(index, newAction);
incrementModificationStamp();
return true;
}
else {
@@ -266,6 +279,7 @@ public class DefaultActionGroup extends ActionGroup {
Pair<AnAction, Constraints> pair = myPairs.get(i);
if (pair.first.equals(newAction)) {
myPairs.set(i, Pair.create(newAction, pair.second));
incrementModificationStamp();
return true;
}
}
@@ -286,6 +300,7 @@ public class DefaultActionGroup extends ActionGroup {
myPairs.clear();
myPairs.addAll(other.myPairs);
incrementModificationStamp();
}
@NotNull
@@ -14,6 +14,7 @@ public class CustomisedActionGroup extends ActionGroup {
private final String myRootGroupName;
private int mySchemeModificationStamp = -1;
private int myGroupModificationStamp = -1;
public CustomisedActionGroup(String shortName,
final ActionGroup group,
@@ -33,11 +34,13 @@ public class CustomisedActionGroup extends ActionGroup {
@Override
@NotNull
public AnAction[] getChildren(@Nullable final AnActionEvent e) {
int currentStamp = CustomActionsSchema.getInstance().getModificationStamp();
if (mySchemeModificationStamp < currentStamp || ArrayUtil.isEmpty(myChildren) ||
int currentSchemaStamp = CustomActionsSchema.getInstance().getModificationStamp();
int currentGroupStamp = myGroup instanceof DefaultActionGroup ? ((DefaultActionGroup)myGroup).getModificationStamp() : -1;
if (mySchemeModificationStamp < currentSchemaStamp || myGroupModificationStamp < currentGroupStamp || ArrayUtil.isEmpty(myChildren) ||
myGroup instanceof DynamicActionGroup || !(myGroup instanceof DefaultActionGroup)) {
myChildren = CustomizationUtil.getReordableChildren(myGroup, mySchema, myDefaultGroupName, myRootGroupName, e);
mySchemeModificationStamp = currentStamp;
mySchemeModificationStamp = currentSchemaStamp;
myGroupModificationStamp = currentGroupStamp;
}
return myChildren;
}