mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-228450 Run buttons disappear from toolbar on restart
GitOrigin-RevId: 3e817922bb1a748f1c0000e5d13fc8c4dce368ae
This commit is contained in:
committed by
intellij-monorepo-bot
parent
43396139ca
commit
e413982fdf
+16
-1
@@ -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
|
||||
|
||||
+6
-3
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user