From dabd68f390766e06a42e0c74a7b120b013b24b6f Mon Sep 17 00:00:00 2001 From: XMLHexagram Date: Thu, 5 Dec 2024 17:02:16 +0100 Subject: [PATCH 1/2] feat(macOS): hide traffic lights in band and dock sizes --- lib/main.dart | 2 +- .../macos_window_control_button_manager.dart | 16 ++++++++++++++-- .../title_bar/window_frame_for_macos.dart | 7 +++++++ macos/Runner/MainFlutterWindow.swift | 16 ++++++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index b5f611caa..f418dfe4c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -210,7 +210,7 @@ void main(List arguments) async { doWhenWindowReady(() { if (Platform.isMacOS) { - MacOSWindowControlButtonManager.setVertical(); + MacOSWindowControlButtonManager.shared.setVertical(); } appWindow.size = windowSize; diff --git a/lib/utils/macos_window_control_button_manager.dart b/lib/utils/macos_window_control_button_manager.dart index 03e27a7d5..181590cf1 100644 --- a/lib/utils/macos_window_control_button_manager.dart +++ b/lib/utils/macos_window_control_button_manager.dart @@ -1,9 +1,21 @@ import 'package:flutter/services.dart'; class MacOSWindowControlButtonManager { - static const platform = MethodChannel('not.ci.rune/window_control_button'); + static var shared = MacOSWindowControlButtonManager._(); - static Future setVertical() async { + MacOSWindowControlButtonManager._(); + + var platform = MethodChannel('not.ci.rune/window_control_button'); + + Future setVertical() async { await platform.invokeMethod('set_vertical'); } + + Future setHide() async { + await platform.invokeMethod('set_hide'); + } + + Future setShow() async { + await platform.invokeMethod('set_show'); + } } diff --git a/lib/widgets/title_bar/window_frame_for_macos.dart b/lib/widgets/title_bar/window_frame_for_macos.dart index 04a49f06c..cb0156777 100644 --- a/lib/widgets/title_bar/window_frame_for_macos.dart +++ b/lib/widgets/title_bar/window_frame_for_macos.dart @@ -71,6 +71,13 @@ class _WindowFrameForMacOSState extends State { DeviceType.tv ], builder: (context, activeBreakpoint) { + if (activeBreakpoint == DeviceType.band || + activeBreakpoint == DeviceType.dock) { + MacOSWindowControlButtonManager.shared.setHide(); + } else { + MacOSWindowControlButtonManager.shared.setShow(); + } + if (activeBreakpoint == DeviceType.band || activeBreakpoint == DeviceType.dock || path == '/' || diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift index 0517fd913..ab8196088 100644 --- a/macos/Runner/MainFlutterWindow.swift +++ b/macos/Runner/MainFlutterWindow.swift @@ -21,6 +21,10 @@ class MainFlutterWindow: BitsdojoWindow { switch call.method { case "set_vertical": WindowButtonPositioner.shared.setVertical() + case "set_hide": + WindowButtonPositioner.shared.setHide() + case "set_show": + WindowButtonPositioner.shared.setShow() default: result(FlutterMethodNotImplemented) } @@ -87,6 +91,18 @@ class WindowButtonPositioner { self.mainFlutterWindow = mainFlutterWindow } + func setHide() { + mainFlutterWindow?.standardWindowButton(.closeButton)?.isHidden = true + mainFlutterWindow?.standardWindowButton(.miniaturizeButton)?.isHidden = true + mainFlutterWindow?.standardWindowButton(.zoomButton)?.isHidden = true + } + + func setShow() { + mainFlutterWindow?.standardWindowButton(.closeButton)?.isHidden = false + mainFlutterWindow?.standardWindowButton(.miniaturizeButton)?.isHidden = false + mainFlutterWindow?.standardWindowButton(.zoomButton)?.isHidden = false + } + func setVertical() { overrideStandardWindowButtonPosition(buttonType: .closeButton, offset: .init(x: 8, y: 8)) overrideStandardWindowButtonPosition(buttonType: .miniaturizeButton, offset: .init(x: 8, y: 28)) From 3d2942886d350396c6c03804734198e0b640beac Mon Sep 17 00:00:00 2001 From: XMLHexagram Date: Thu, 5 Dec 2024 17:13:13 +0100 Subject: [PATCH 2/2] cargo clippy --- Justfile | 1 + native/hub/src/license.rs | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Justfile b/Justfile index cb14be260..9cd98985b 100644 --- a/Justfile +++ b/Justfile @@ -1,6 +1,7 @@ set dotenv-load lint: + cargo fmt -- $(find native/hub/src/messages -name "*.rs") cargo fmt -- --check cargo clippy -- -D warnings flutter analyze . diff --git a/native/hub/src/license.rs b/native/hub/src/license.rs index 0840b3050..08b98a9b4 100644 --- a/native/hub/src/license.rs +++ b/native/hub/src/license.rs @@ -42,15 +42,13 @@ pub async fn check_store_license() -> Result> { pub async fn check_store_license() -> Result, &'static str> { use crate::apple_bridge::apple_bridge::bundle_id; let bundle_id = bundle_id(); - let mut is_active = false; - let mut is_trial = false; if bundle_id == "ci.not.rune.appstore" { - is_active = true; - is_trial = false; + let is_active = true; + let is_trial = false; Ok(Some((bundle_id, is_active, is_trial))) } else { - return Ok(None) + Ok(None) } }