in idea-plugin/src/main/java/com/jetbrains/ide/streamdeck/keymap/KeymapPanel.java [455:493]
void applyChanges() {
if (!TouchbarSupport.isAvailable() || myCheckbox == null || !isModified())
return;
final String appId = Helpers.getAppId();
if (appId == null || appId.isEmpty()) {
Logger.getInstance(KeymapPanel.class).error("can't obtain application id from NSBundle");
return;
}
final boolean prevVal = myShowFnInitial;
myShowFnInitial = myCheckbox.isSelected();
NSDefaults.setShowFnKeysEnabled(appId, myShowFnInitial);
TouchbarSupport.enable(!myShowFnInitial);
if (myShowFnInitial != NSDefaults.isShowFnKeysEnabled(appId)) {
NSDefaults.setShowFnKeysEnabled(appId, myShowFnInitial, true); // try again with extra checks
if (myShowFnInitial != NSDefaults.isShowFnKeysEnabled(appId))
return;
}
ApplicationManager.getApplication().executeOnPooledThread(() -> {
final boolean result = Helpers.restartTouchBarServer();
if (!result) {
// System.out.println("can't restart touchbar-server, roll back settings");
myShowFnInitial = prevVal;
NSDefaults.setShowFnKeysEnabled(appId, myShowFnInitial);
TouchbarSupport.enable(!myShowFnInitial);
if (!myDisposed) {
// System.out.println("ui wasn't disposed, invoke roll back of checkbox state");
ApplicationManager.getApplication().invokeLater(() -> {
if (!myDisposed)
myCheckbox.setSelected(prevVal);
}, ModalityState.stateForComponent(myCheckbox));
}
}
});
}