From 5b7c39e8f53223cd72d07153834daf693eaec53e Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Tue, 28 Jul 2026 21:18:10 +0300 Subject: [PATCH] fix(macos): hide duplicate bitsdojo window buttons in title bar (#500) Keep the macOS leading inset for system traffic lights and only render Minimize/Maximize/Close on Windows and Linux. --- .../main_screen/querya_window_title_bar.dart | 14 +++++++++++--- .../main_screen/querya_window_title_bar_test.dart | 11 +++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/features/main_screen/querya_window_title_bar.dart b/lib/features/main_screen/querya_window_title_bar.dart index f611ff2..7625db0 100644 --- a/lib/features/main_screen/querya_window_title_bar.dart +++ b/lib/features/main_screen/querya_window_title_bar.dart @@ -68,6 +68,10 @@ class QueryaWindowTitleBar extends StatelessWidget { return scale(isMacOS ? 72 : 16); } + /// Bitsdojo chrome buttons duplicate system traffic lights on macOS. + @visibleForTesting + static bool showBitsdojoWindowButtons({required bool isMacOS}) => !isMacOS; + @visibleForTesting static WindowButtonColors closeButtonColors(BuildContext context) { final wb = context.workbench; @@ -278,9 +282,13 @@ class QueryaWindowTitleBar extends StatelessWidget { if (activeConnection != null && isReadOnly) const QueryaReadOnlyBadge(), UpdateAvailableBadge(controller: UpdateController.instance), - MinimizeWindowButton(colors: buttonColors), - MaximizeWindowButton(colors: buttonColors), - CloseWindowButton(colors: closeButtonColors), + if (QueryaWindowTitleBar.showBitsdojoWindowButtons( + isMacOS: Platform.isMacOS, + )) ...[ + MinimizeWindowButton(colors: buttonColors), + MaximizeWindowButton(colors: buttonColors), + CloseWindowButton(colors: closeButtonColors), + ], ], ) ], diff --git a/test/features/main_screen/querya_window_title_bar_test.dart b/test/features/main_screen/querya_window_title_bar_test.dart index fbe77a8..afe0a7e 100644 --- a/test/features/main_screen/querya_window_title_bar_test.dart +++ b/test/features/main_screen/querya_window_title_bar_test.dart @@ -115,6 +115,17 @@ void main() { ); }); + test('bitsdojo window buttons hidden on macOS, shown elsewhere', () { + expect( + QueryaWindowTitleBar.showBitsdojoWindowButtons(isMacOS: true), + isFalse, + ); + expect( + QueryaWindowTitleBar.showBitsdojoWindowButtons(isMacOS: false), + isTrue, + ); + }); + testWidgets('read-only state is persistently visible in title bar', (tester) async { await tester.pumpWidget(