Fix sometimes version specific setting is lost
This commit is contained in:
@@ -358,8 +358,10 @@ public class HMCLGameRepository extends DefaultGameRepository {
|
|||||||
if (vs == null)
|
if (vs == null)
|
||||||
return null;
|
return null;
|
||||||
VersionIconType versionIcon = vs.getVersionIcon();
|
VersionIconType versionIcon = vs.getVersionIcon();
|
||||||
PropertyUtils.copyProperties(profile.getGlobal(), vs);
|
if (vs.isUsesGlobal()) {
|
||||||
vs.setUsesGlobal(false);
|
PropertyUtils.copyProperties(profile.getGlobal(), vs);
|
||||||
|
vs.setUsesGlobal(false);
|
||||||
|
}
|
||||||
vs.setVersionIcon(versionIcon); // versionIcon is preserved
|
vs.setVersionIcon(versionIcon); // versionIcon is preserved
|
||||||
return vs;
|
return vs;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,7 +92,8 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
|
|||||||
private final ImagePickerItem iconPickerItem;
|
private final ImagePickerItem iconPickerItem;
|
||||||
|
|
||||||
private final ChangeListener<Collection<JavaRuntime>> javaListChangeListener;
|
private final ChangeListener<Collection<JavaRuntime>> javaListChangeListener;
|
||||||
private final InvalidationListener specificSettingsListener;
|
private final InvalidationListener usesGlobalListener;
|
||||||
|
private final ChangeListener<Boolean> specificSettingsListener;
|
||||||
private final InvalidationListener javaListener = any -> initJavaSubtitle();
|
private final InvalidationListener javaListener = any -> initJavaSubtitle();
|
||||||
private boolean updatingJavaSetting = false;
|
private boolean updatingJavaSetting = false;
|
||||||
private boolean updatingSelectedJava = false;
|
private boolean updatingSelectedJava = false;
|
||||||
@@ -443,22 +444,8 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
|
|||||||
|
|
||||||
rootPane.getChildren().add(componentList);
|
rootPane.getChildren().add(componentList);
|
||||||
|
|
||||||
initialize();
|
usesGlobalListener = any -> enableSpecificSettings.set(!lastVersionSetting.isUsesGlobal());
|
||||||
|
specificSettingsListener = (a, b, newValue) -> {
|
||||||
specificSettingsListener = any -> enableSpecificSettings.set(!lastVersionSetting.isUsesGlobal());
|
|
||||||
|
|
||||||
addEventHandler(Navigator.NavigationEvent.NAVIGATED, this::onDecoratorPageNavigating);
|
|
||||||
|
|
||||||
cboLauncherVisibility.getItems().setAll(LauncherVisibility.values());
|
|
||||||
cboLauncherVisibility.setConverter(stringConverter(e -> i18n("settings.advanced.launcher_visibility." + e.name().toLowerCase(Locale.ROOT))));
|
|
||||||
|
|
||||||
cboProcessPriority.getItems().setAll(ProcessPriority.values());
|
|
||||||
cboProcessPriority.setConverter(stringConverter(e -> i18n("settings.advanced.process_priority." + e.name().toLowerCase(Locale.ROOT))));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initialize() {
|
|
||||||
memoryStatus.set(OperatingSystem.getPhysicalMemoryStatus());
|
|
||||||
enableSpecificSettings.addListener((a, b, newValue) -> {
|
|
||||||
if (versionId == null) return;
|
if (versionId == null) return;
|
||||||
|
|
||||||
// do not call versionSettings.setUsesGlobal(true/false)
|
// do not call versionSettings.setUsesGlobal(true/false)
|
||||||
@@ -470,8 +457,17 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
|
|||||||
profile.getRepository().globalizeVersionSetting(versionId);
|
profile.getRepository().globalizeVersionSetting(versionId);
|
||||||
|
|
||||||
Platform.runLater(() -> loadVersion(profile, versionId));
|
Platform.runLater(() -> loadVersion(profile, versionId));
|
||||||
});
|
};
|
||||||
|
|
||||||
|
addEventHandler(Navigator.NavigationEvent.NAVIGATED, this::onDecoratorPageNavigating);
|
||||||
|
|
||||||
|
cboLauncherVisibility.getItems().setAll(LauncherVisibility.values());
|
||||||
|
cboLauncherVisibility.setConverter(stringConverter(e -> i18n("settings.advanced.launcher_visibility." + e.name().toLowerCase(Locale.ROOT))));
|
||||||
|
|
||||||
|
cboProcessPriority.getItems().setAll(ProcessPriority.values());
|
||||||
|
cboProcessPriority.setConverter(stringConverter(e -> i18n("settings.advanced.process_priority." + e.name().toLowerCase(Locale.ROOT))));
|
||||||
|
|
||||||
|
memoryStatus.set(OperatingSystem.getPhysicalMemoryStatus());
|
||||||
componentList.disableProperty().bind(enableSpecificSettings.not());
|
componentList.disableProperty().bind(enableSpecificSettings.not());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -519,7 +515,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
|
|||||||
FXUtils.unbindEnum(cboLauncherVisibility);
|
FXUtils.unbindEnum(cboLauncherVisibility);
|
||||||
FXUtils.unbindEnum(cboProcessPriority);
|
FXUtils.unbindEnum(cboProcessPriority);
|
||||||
|
|
||||||
lastVersionSetting.usesGlobalProperty().removeListener(specificSettingsListener);
|
lastVersionSetting.usesGlobalProperty().removeListener(usesGlobalListener);
|
||||||
lastVersionSetting.javaVersionTypeProperty().removeListener(javaListener);
|
lastVersionSetting.javaVersionTypeProperty().removeListener(javaListener);
|
||||||
lastVersionSetting.javaDirProperty().removeListener(javaListener);
|
lastVersionSetting.javaDirProperty().removeListener(javaListener);
|
||||||
lastVersionSetting.defaultJavaPathPropertyProperty().removeListener(javaListener);
|
lastVersionSetting.defaultJavaPathPropertyProperty().removeListener(javaListener);
|
||||||
@@ -528,6 +524,8 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
|
|||||||
gameDirItem.selectedDataProperty().unbindBidirectional(lastVersionSetting.gameDirTypeProperty());
|
gameDirItem.selectedDataProperty().unbindBidirectional(lastVersionSetting.gameDirTypeProperty());
|
||||||
gameDirSublist.subtitleProperty().unbind();
|
gameDirSublist.subtitleProperty().unbind();
|
||||||
|
|
||||||
|
enableSpecificSettings.removeListener(specificSettingsListener);
|
||||||
|
|
||||||
if (advancedVersionSettingPage != null) {
|
if (advancedVersionSettingPage != null) {
|
||||||
advancedVersionSettingPage.unbindProperties();
|
advancedVersionSettingPage.unbindProperties();
|
||||||
advancedVersionSettingPage = null;
|
advancedVersionSettingPage = null;
|
||||||
@@ -554,7 +552,8 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
|
|||||||
|
|
||||||
if (versionId != null)
|
if (versionId != null)
|
||||||
enableSpecificSettings.set(!versionSetting.isUsesGlobal());
|
enableSpecificSettings.set(!versionSetting.isUsesGlobal());
|
||||||
versionSetting.usesGlobalProperty().addListener(specificSettingsListener);
|
versionSetting.usesGlobalProperty().addListener(usesGlobalListener);
|
||||||
|
enableSpecificSettings.addListener(specificSettingsListener);
|
||||||
|
|
||||||
javaItem.setToggleSelectedListener(newValue -> {
|
javaItem.setToggleSelectedListener(newValue -> {
|
||||||
if (javaItem.getSelectedData() == null || updatingSelectedJava)
|
if (javaItem.getSelectedData() == null || updatingSelectedJava)
|
||||||
|
|||||||
Reference in New Issue
Block a user