mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-165089 Keymap configurable should not be marked as modified right after opening
This commit is contained in:
+15
-11
@@ -257,7 +257,7 @@ final class KeymapSchemeManager extends AbstractSchemeActions<KeymapScheme> impl
|
||||
Keymap active = selected == null ? null : selected.getOriginal();
|
||||
if (!Objects.equals(active, KeymapManager.getInstance().getActiveKeymap())) return true;
|
||||
|
||||
Iterator<Keymap> keymaps = getKeymaps().iterator();
|
||||
Iterator<Keymap> keymaps = getKeymaps().stream().sorted(KEYMAP_COMPARATOR).iterator();
|
||||
Iterator<KeymapScheme> schemes = this.list.iterator();
|
||||
while (keymaps.hasNext() && schemes.hasNext()) {
|
||||
if (!Objects.equals(keymaps.next(), schemes.next().getCurrent())) return true;
|
||||
@@ -266,20 +266,17 @@ final class KeymapSchemeManager extends AbstractSchemeActions<KeymapScheme> impl
|
||||
}
|
||||
|
||||
List<KeymapScheme> getSchemes() {
|
||||
list.sort(COMPARATOR);
|
||||
list.sort(SCHEME_COMPARATOR);
|
||||
return list;
|
||||
}
|
||||
|
||||
static final Comparator<KeymapScheme> COMPARATOR = (scheme1, scheme2) -> {
|
||||
if (scheme1 == scheme2) return 0;
|
||||
if (scheme1 == null) return -1;
|
||||
if (scheme2 == null) return 1;
|
||||
private static final Comparator<Keymap> KEYMAP_COMPARATOR = (keymap1, keymap2) -> {
|
||||
if (keymap1 == keymap2) return 0;
|
||||
if (keymap1 == null) return -1;
|
||||
if (keymap2 == null) return 1;
|
||||
|
||||
Keymap keymap1 = scheme1.getCurrent();
|
||||
Keymap keymap2 = scheme2.getCurrent();
|
||||
|
||||
Keymap parent1 = scheme1.getParent();
|
||||
Keymap parent2 = scheme2.getParent();
|
||||
Keymap parent1 = !keymap1.canModify() ? null : keymap1.getParent();
|
||||
Keymap parent2 = !keymap2.canModify() ? null : keymap2.getParent();
|
||||
|
||||
if (parent1 == null) parent1 = keymap1;
|
||||
if (parent2 == null) parent2 = keymap2;
|
||||
@@ -294,4 +291,11 @@ final class KeymapSchemeManager extends AbstractSchemeActions<KeymapScheme> impl
|
||||
return naturalCompare(parent1.getPresentableName(), parent2.getPresentableName());
|
||||
}
|
||||
};
|
||||
|
||||
private static final Comparator<KeymapScheme> SCHEME_COMPARATOR = (scheme1, scheme2) -> {
|
||||
if (scheme1 == scheme2) return 0;
|
||||
if (scheme1 == null) return -1;
|
||||
if (scheme2 == null) return 1;
|
||||
return KEYMAP_COMPARATOR.compare(scheme1.getCurrent(), scheme2.getCurrent());
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user