mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-15 23:06:07 -04:00
修复连续点击两次返回按钮时会最大化窗口的问题 (#4384)
This commit is contained in:
parent
10e5e7bc9c
commit
ce24e4e622
@ -55,7 +55,9 @@ public class DecoratorSkin extends SkinBase<Decorator> {
|
|||||||
private final Stage primaryStage;
|
private final Stage primaryStage;
|
||||||
private final TransitionPane navBarPane;
|
private final TransitionPane navBarPane;
|
||||||
|
|
||||||
|
@SuppressWarnings("FieldCanBeLocal")
|
||||||
private final InvalidationListener onWindowsStatusChange;
|
private final InvalidationListener onWindowsStatusChange;
|
||||||
|
private final EventHandler<MouseEvent> onTitleBarDoubleClick;
|
||||||
|
|
||||||
private double mouseInitX, mouseInitY, stageInitX, stageInitY, stageInitWidth, stageInitHeight;
|
private double mouseInitX, mouseInitY, stageInitX, stageInitY, stageInitWidth, stageInitHeight;
|
||||||
|
|
||||||
@ -104,6 +106,12 @@ public class DecoratorSkin extends SkinBase<Decorator> {
|
|||||||
root.addEventFilter(MouseEvent.MOUSE_MOVED, onMouseMoved);
|
root.addEventFilter(MouseEvent.MOUSE_MOVED, onMouseMoved);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
onTitleBarDoubleClick = event -> {
|
||||||
|
if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
|
||||||
|
primaryStage.setMaximized(!primaryStage.isMaximized());
|
||||||
|
event.consume();
|
||||||
|
}
|
||||||
|
};
|
||||||
WeakInvalidationListener weakOnWindowsStatusChange = new WeakInvalidationListener(onWindowsStatusChange);
|
WeakInvalidationListener weakOnWindowsStatusChange = new WeakInvalidationListener(onWindowsStatusChange);
|
||||||
primaryStage.iconifiedProperty().addListener(weakOnWindowsStatusChange);
|
primaryStage.iconifiedProperty().addListener(weakOnWindowsStatusChange);
|
||||||
primaryStage.maximizedProperty().addListener(weakOnWindowsStatusChange);
|
primaryStage.maximizedProperty().addListener(weakOnWindowsStatusChange);
|
||||||
@ -111,6 +119,7 @@ public class DecoratorSkin extends SkinBase<Decorator> {
|
|||||||
onWindowsStatusChange.invalidated(null);
|
onWindowsStatusChange.invalidated(null);
|
||||||
} else {
|
} else {
|
||||||
onWindowsStatusChange = null;
|
onWindowsStatusChange = null;
|
||||||
|
onTitleBarDoubleClick = null;
|
||||||
root.addEventFilter(MouseEvent.MOUSE_RELEASED, onMouseReleased);
|
root.addEventFilter(MouseEvent.MOUSE_RELEASED, onMouseReleased);
|
||||||
root.addEventFilter(MouseEvent.MOUSE_DRAGGED, onMouseDragged);
|
root.addEventFilter(MouseEvent.MOUSE_DRAGGED, onMouseDragged);
|
||||||
root.addEventFilter(MouseEvent.MOUSE_MOVED, onMouseMoved);
|
root.addEventFilter(MouseEvent.MOUSE_MOVED, onMouseMoved);
|
||||||
@ -188,16 +197,6 @@ public class DecoratorSkin extends SkinBase<Decorator> {
|
|||||||
BorderPane titleBar = new BorderPane();
|
BorderPane titleBar = new BorderPane();
|
||||||
titleContainer.getChildren().add(titleBar);
|
titleContainer.getChildren().add(titleBar);
|
||||||
|
|
||||||
// https://github.com/HMCL-dev/HMCL/issues/4290
|
|
||||||
if (OperatingSystem.CURRENT_OS != OperatingSystem.MACOS) {
|
|
||||||
titleBar.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
|
|
||||||
if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
|
|
||||||
primaryStage.setMaximized(!primaryStage.isMaximized());
|
|
||||||
event.consume();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle buttonsContainerPlaceHolder = new Rectangle();
|
Rectangle buttonsContainerPlaceHolder = new Rectangle();
|
||||||
{
|
{
|
||||||
navBarPane = new TransitionPane();
|
navBarPane = new TransitionPane();
|
||||||
@ -324,6 +323,8 @@ public class DecoratorSkin extends SkinBase<Decorator> {
|
|||||||
BorderPane.setAlignment(titleNode, Pos.CENTER_LEFT);
|
BorderPane.setAlignment(titleNode, Pos.CENTER_LEFT);
|
||||||
BorderPane.setMargin(titleNode, new Insets(0, 0, 0, 8));
|
BorderPane.setMargin(titleNode, new Insets(0, 0, 0, 8));
|
||||||
}
|
}
|
||||||
|
if (onTitleBarDoubleClick != null)
|
||||||
|
center.setOnMouseClicked(onTitleBarDoubleClick);
|
||||||
navBar.setCenter(center);
|
navBar.setCenter(center);
|
||||||
|
|
||||||
if (canRefresh) {
|
if (canRefresh) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user