diff --git a/client/src/main/java/ctbrec/ui/tabs/recorded/AbstractRecordedModelsTab.java b/client/src/main/java/ctbrec/ui/tabs/recorded/AbstractRecordedModelsTab.java index bdf42f73..2c9f60b7 100644 --- a/client/src/main/java/ctbrec/ui/tabs/recorded/AbstractRecordedModelsTab.java +++ b/client/src/main/java/ctbrec/ui/tabs/recorded/AbstractRecordedModelsTab.java @@ -42,6 +42,7 @@ import ctbrec.ui.controls.autocomplete.AutoFillTextField; import ctbrec.ui.controls.autocomplete.ObservableListSuggester; import ctbrec.ui.menu.ModelMenuContributor; import ctbrec.ui.tabs.TabSelectionListener; +import javafx.application.Platform; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringPropertyBase; @@ -51,7 +52,6 @@ import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.geometry.Point2D; import javafx.geometry.Pos; -import javafx.scene.Cursor; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.CheckMenuItem; @@ -330,18 +330,23 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect ContextMenu menu = new CustomMouseBehaviorContextMenu(); ModelMenuContributor.newContributor(getTabPane(), Config.getInstance(), recorder) // - .withStartStopCallback(m -> getTabPane().setCursor(Cursor.DEFAULT)) // + .withStartStopCallback(m -> Platform.runLater(this::reload)) // .removeModelAfterIgnore(true) // - .withPortraitCallback(m -> { + .withPortraitCallback(m -> Platform.runLater(() -> { portraitCache.invalidate(m); table.refresh(); - }) - .afterwards(table::refresh) // + })) + .afterwards(() -> Platform.runLater(this::reload)) .contributeToMenu(selectedModels, menu); return menu; } + protected void reload() { + deselected(); + selected(); + } + protected void addModel(ActionEvent e) { String input = modelInputField.getText().trim(); if (StringUtil.isBlank(input)) { @@ -360,9 +365,11 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect var newModel = site.createModelFromUrl(url); if (newModel != null) { if (getMarkModelsForLaterRecording()) { - new MarkForLaterRecordingAction(getTabPane(), List.of(newModel), true, recorder).execute(); + new MarkForLaterRecordingAction(modelInputField, List.of(newModel), true, recorder).execute(m -> Platform.runLater(this::reload)); } else { - new StartRecordingAction(getTabPane(), List.of(newModel), recorder).execute(); + new StartRecordingAction(modelInputField, List.of(newModel), recorder) + .execute() + .whenComplete((r, ex) -> Platform.runLater(this::reload)); } return; } @@ -387,9 +394,11 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect if (Objects.equals(siteName.toLowerCase(), site.getClass().getSimpleName().toLowerCase())) { var newModel = site.createModel(modelName); if (getMarkModelsForLaterRecording()) { - new MarkForLaterRecordingAction(getTabPane(), List.of(newModel), true, recorder).execute(); + new MarkForLaterRecordingAction(modelInputField, List.of(newModel), true, recorder).execute(m -> Platform.runLater(this::reload)); } else { - new StartRecordingAction(getTabPane(), List.of(newModel), recorder).execute(); + new StartRecordingAction(modelInputField, List.of(newModel), recorder) + .execute() + .whenComplete((r, ex) -> Platform.runLater(this::reload)); } return; }