Skip to content

Commit

Permalink
feat(macOS): hide traffic lights in band and dock sizes
Browse files Browse the repository at this point in the history
  • Loading branch information
XMLHexagram committed Dec 5, 2024
1 parent d97b51d commit dabd68f
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 3 deletions.
2 changes: 1 addition & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ void main(List<String> arguments) async {

doWhenWindowReady(() {
if (Platform.isMacOS) {
MacOSWindowControlButtonManager.setVertical();
MacOSWindowControlButtonManager.shared.setVertical();
}

appWindow.size = windowSize;
Expand Down
16 changes: 14 additions & 2 deletions lib/utils/macos_window_control_button_manager.dart
Original file line number Diff line number Diff line change
@@ -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<void> setVertical() async {
MacOSWindowControlButtonManager._();

var platform = MethodChannel('not.ci.rune/window_control_button');

Future<void> setVertical() async {
await platform.invokeMethod('set_vertical');
}

Future<void> setHide() async {
await platform.invokeMethod('set_hide');
}

Future<void> setShow() async {
await platform.invokeMethod('set_show');
}
}
7 changes: 7 additions & 0 deletions lib/widgets/title_bar/window_frame_for_macos.dart
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ class _WindowFrameForMacOSState extends State<WindowFrameForMacOS> {
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 == '/' ||
Expand Down
16 changes: 16 additions & 0 deletions macos/Runner/MainFlutterWindow.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down Expand Up @@ -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))
Expand Down

0 comments on commit dabd68f

Please sign in to comment.