Skip to content

Commit

Permalink
moved to window_manager_plus plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
pichillilorenzo committed Oct 8, 2024
1 parent 05ff51f commit f157903
Show file tree
Hide file tree
Showing 12 changed files with 168 additions and 107 deletions.
18 changes: 9 additions & 9 deletions lib/app_bar/desktop_app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:context_menus/context_menus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:provider/provider.dart';
import 'package:window_manager/window_manager.dart';
import 'package:window_manager_plus/window_manager_plus.dart';

import '../custom_image.dart';
import '../models/browser_model.dart';
Expand Down Expand Up @@ -64,7 +64,7 @@ class _DesktopAppBarState extends State<DesktopAppBar> {
),
IconButton(
onPressed: () {
windowManager.close();
WindowManagerPlus.current.close();
},
constraints: const BoxConstraints(
maxWidth: 13,
Expand All @@ -91,8 +91,8 @@ class _DesktopAppBarState extends State<DesktopAppBar> {
),
IconButton(
onPressed: () async {
if (!(await windowManager.isFullScreen())) {
windowManager.minimize();
if (!(await WindowManagerPlus.current.isFullScreen())) {
WindowManagerPlus.current.minimize();
}
},
constraints: const BoxConstraints(
Expand Down Expand Up @@ -120,8 +120,8 @@ class _DesktopAppBarState extends State<DesktopAppBar> {
),
IconButton(
onPressed: () async {
windowManager
.setFullScreen(!(await windowManager.isFullScreen()));
WindowManagerPlus.current
.setFullScreen(!(await WindowManagerPlus.current.isFullScreen()));
},
constraints: const BoxConstraints(
maxWidth: 13,
Expand Down Expand Up @@ -201,19 +201,19 @@ class _DesktopAppBarState extends State<DesktopAppBar> {
hitTestBehavior: HitTestBehavior.opaque,
onEnter: (details) {
if (!Util.isWindows()) {
windowManager.setMovable(true);
WindowManagerPlus.current.setMovable(true);
}
setState(() {});
},
onExit: (details) {
if (!Util.isWindows()) {
windowManager.setMovable(false);
WindowManagerPlus.current.setMovable(false);
}
},
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onDoubleTap: () async {
await windowManager.maximize();
await WindowManagerPlus.current.maximize();
},
child: !widget.showTabs
? const SizedBox(
Expand Down
33 changes: 16 additions & 17 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import 'package:provider/provider.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:sqflite/sqflite.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:window_manager/window_manager.dart';
import 'package:window_manager_plus/window_manager_plus.dart';
import 'package:path/path.dart' as p;

import 'browser.dart';
Expand Down Expand Up @@ -45,9 +45,10 @@ String? windowModelId;
void main(List<String> args) async {
WidgetsFlutterBinding.ensureInitialized();

if (args.firstOrNull == 'multi_window') {
windowId = int.parse(args[1]);
windowModelId = args.length > 2 ? args[2] : null;
if (Util.isDesktop()) {
windowId = args.isNotEmpty ? int.tryParse(args[0]) ?? 0 : 0;
windowModelId = args.length > 1 ? args[1] : null;
await WindowManagerPlus.ensureInitialized(windowId);
}

final appDocumentsDir = await getApplicationDocumentsDirectory();
Expand All @@ -69,8 +70,6 @@ void main(List<String> args) async {
}));

if (Util.isDesktop()) {
await windowManager.ensureInitialized();

WindowOptions windowOptions = WindowOptions(
center: true,
backgroundColor: Colors.transparent,
Expand All @@ -79,13 +78,13 @@ void main(List<String> args) async {
minimumSize: const Size(1280, 720),
size: const Size(1280, 720),
);
windowManager.waitUntilReadyToShow(windowOptions, () async {
WindowManagerPlus.current.waitUntilReadyToShow(windowOptions, () async {
if (!Util.isWindows()) {
await windowManager.setAsFrameless();
await windowManager.setHasShadow(true);
await WindowManagerPlus.current.setAsFrameless();
await WindowManagerPlus.current.setHasShadow(true);
}
await windowManager.show();
await windowManager.focus();
await WindowManagerPlus.current.show();
await WindowManagerPlus.current.focus();
});
}

Expand Down Expand Up @@ -150,12 +149,12 @@ class _FlutterBrowserAppState extends State<FlutterBrowserApp>
@override
void initState() {
super.initState();
windowManager.addListener(this);
WindowManagerPlus.current.addListener(this);
}

@override
void dispose() {
windowManager.removeListener(this);
WindowManagerPlus.current.removeListener(this);
super.dispose();
}

Expand All @@ -181,17 +180,17 @@ class _FlutterBrowserAppState extends State<FlutterBrowserApp>
}

@override
void onWindowFocus() {
void onWindowFocus([int? windowId]) {
setState(() {});
if (!Util.isWindows()) {
windowManager.setMovable(false);
WindowManagerPlus.current.setMovable(false);
}
}

@override
void onWindowBlur() {
void onWindowBlur([int? windowId]) {
if (!Util.isWindows()) {
windowManager.setMovable(true);
WindowManagerPlus.current.setMovable(true);
}
}
}
15 changes: 10 additions & 5 deletions lib/models/browser_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import 'dart:convert';
import 'dart:async';
import 'dart:io';

import 'package:desktop_multi_window/desktop_multi_window.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_browser/util.dart';
import 'package:window_manager_plus/window_manager_plus.dart';
import '../main.dart';
import 'web_archive_model.dart';
import 'window_model.dart';
Expand Down Expand Up @@ -92,10 +92,15 @@ class BrowserModel extends ChangeNotifier {
return;
}

final window = await DesktopMultiWindow.createWindow(windowModel?.id);
window.show();
if (kDebugMode) {
print("Window created: ${window.windowId}");
final window = await WindowManagerPlus.createWindow(windowModel != null ? [windowModel.id] : null);
if (window != null) {
if (kDebugMode) {
print("Window created: $window}");
}
} else {
if (kDebugMode) {
print("Cannot create window");
}
}

notifyListeners();
Expand Down
12 changes: 5 additions & 7 deletions macos/Flutter/GeneratedPluginRegistrant.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,28 @@
import FlutterMacOS
import Foundation

import desktop_multi_window
import dynamic_color
import flutter_inappwebview_macos
import multi_window_macos
import package_info_plus
import path_provider_foundation
import screen_retriever
import screen_retriever_macos
import share_plus
import sqflite
import sqflite_darwin
import sqlite3_flutter_libs
import url_launcher_macos
import window_manager
import window_manager_plus

func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FlutterMultiWindowPlugin.register(with: registry.registrar(forPlugin: "FlutterMultiWindowPlugin"))
DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin"))
InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin"))
MultiWindowMacosPlugin.register(with: registry.registrar(forPlugin: "MultiWindowMacosPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin"))
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin"))
WindowManagerPlusPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlusPlugin"))
}
36 changes: 15 additions & 21 deletions macos/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
PODS:
- desktop_multi_window (0.0.1):
- FlutterMacOS
- dynamic_color (0.0.2):
- FlutterMacOS
- flutter_inappwebview_macos (0.0.1):
Expand All @@ -15,11 +13,11 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- screen_retriever (0.0.1):
- screen_retriever_macos (0.0.1):
- FlutterMacOS
- share_plus (0.0.1):
- FlutterMacOS
- sqflite (0.0.3):
- sqflite_darwin (0.0.4):
- Flutter
- FlutterMacOS
- "sqlite3 (3.46.1+1)":
Expand All @@ -42,32 +40,29 @@ PODS:
- sqlite3/rtree
- url_launcher_macos (0.0.1):
- FlutterMacOS
- window_manager (0.2.0):
- window_manager_plus (0.0.1):
- FlutterMacOS

DEPENDENCIES:
- desktop_multi_window (from `Flutter/ephemeral/.symlinks/plugins/desktop_multi_window/macos`)
- dynamic_color (from `Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos`)
- flutter_inappwebview_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_inappwebview_macos/macos`)
- FlutterMacOS (from `Flutter/ephemeral`)
- multi_window_macos (from `Flutter/ephemeral/.symlinks/plugins/multi_window_macos/macos`)
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
- screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`)
- screen_retriever_macos (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever_macos/macos`)
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`)
- sqflite_darwin (from `Flutter/ephemeral/.symlinks/plugins/sqflite_darwin/darwin`)
- sqlite3_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/sqlite3_flutter_libs/macos`)
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
- window_manager (from `Flutter/ephemeral/.symlinks/plugins/window_manager/macos`)
- window_manager_plus (from `Flutter/ephemeral/.symlinks/plugins/window_manager_plus/macos`)

SPEC REPOS:
trunk:
- OrderedSet
- sqlite3

EXTERNAL SOURCES:
desktop_multi_window:
:path: Flutter/ephemeral/.symlinks/plugins/desktop_multi_window/macos
dynamic_color:
:path: Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos
flutter_inappwebview_macos:
Expand All @@ -80,35 +75,34 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos
path_provider_foundation:
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
screen_retriever:
:path: Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos
screen_retriever_macos:
:path: Flutter/ephemeral/.symlinks/plugins/screen_retriever_macos/macos
share_plus:
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
sqflite:
:path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin
sqflite_darwin:
:path: Flutter/ephemeral/.symlinks/plugins/sqflite_darwin/darwin
sqlite3_flutter_libs:
:path: Flutter/ephemeral/.symlinks/plugins/sqlite3_flutter_libs/macos
url_launcher_macos:
:path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
window_manager:
:path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos
window_manager_plus:
:path: Flutter/ephemeral/.symlinks/plugins/window_manager_plus/macos

SPEC CHECKSUMS:
desktop_multi_window: 566489c048b501134f9d7fb6a2354c60a9126486
dynamic_color: 2eaa27267de1ca20d879fbd6e01259773fb1670f
flutter_inappwebview_macos: bdf207b8f4ebd58e86ae06cd96b147de99a67c9b
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
multi_window_macos: dffe0ffd4274adcc78c8482323d3742fada1aed7
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
screen_retriever_macos: 776e0fa5d42c6163d2bf772d22478df4b302b161
share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqflite_darwin: a553b1fd6fe66f53bbb0fe5b4f5bab93f08d7a13
sqlite3: 0bb0e6389d824e40296f531b858a2a0b71c0d2fb
sqlite3_flutter_libs: 5ca46c1a04eddfbeeb5b16566164aa7ad1616e7b
url_launcher_macos: c82c93949963e55b228a30115bd219499a6fe404
window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8
window_manager_plus: 18e39c7256dbb1e9bbc810417a5506de91f7129b

PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367

Expand Down
3 changes: 2 additions & 1 deletion macos/Runner/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import Cocoa
import FlutterMacOS
import window_manager_plus

@main
class AppDelegate: FlutterAppDelegate {
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true
return NSApp.windows.filter({$0 is MainFlutterWindow || $0 is WindowManagerPlusFlutterWindow}).count == 1
}
}
7 changes: 2 additions & 5 deletions macos/Runner/MainFlutterWindow.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import Cocoa
import FlutterMacOS
import window_manager
import desktop_multi_window
import window_manager_plus

class MainFlutterWindow: NSWindow {
override func awakeFromNib() {
Expand All @@ -12,9 +11,7 @@ class MainFlutterWindow: NSWindow {

RegisterGeneratedPlugins(registry: flutterViewController)

FlutterMultiWindowPlugin.setOnWindowCreatedCallback { controller in
RegisterGeneratedPlugins(registry: controller)
}
WindowManagerPlusPlugin.RegisterGeneratedPlugins = RegisterGeneratedPlugins

super.awakeFromNib()
}
Expand Down
Loading

0 comments on commit f157903

Please sign in to comment.