diff --git a/src/flutter/dart/lib/Platform_flutter.dart b/src/flutter/dart/lib/Platform_flutter.dart index 38404964..4fc67cc7 100644 --- a/src/flutter/dart/lib/Platform_flutter.dart +++ b/src/flutter/dart/lib/Platform_flutter.dart @@ -10,11 +10,14 @@ */ import 'package:KDDockWidgets/View_flutter.dart'; +import 'package:KDDockWidgets/WindowOverlayWidget.dart'; import 'package:KDDockWidgetsBindings/Bindings.dart' as KDDockWidgetBindings; import 'ViewFactory_flutter.dart'; class Platform_flutter extends KDDockWidgetBindings.Platform_flutter { + late final WindowOverlayWidget windowOverlayWidget; + @override String name() { return "flutter"; @@ -41,12 +44,24 @@ class Platform_flutter extends KDDockWidgetBindings.Platform_flutter { } @override - onFloatingWindowCreated(KDDockWidgetBindings.FloatingWindow? fw) {} - onFloatingWindowDestroyed(KDDockWidgetBindings.FloatingWindow? fw) {} + onFloatingWindowCreated(KDDockWidgetBindings.FloatingWindow? fw) { + rebuildWindowOverlay(); + } + + @override + onFloatingWindowDestroyed(KDDockWidgetBindings.FloatingWindow? fw) { + rebuildWindowOverlay(); + } + + void rebuildWindowOverlay() { + final state = WindowOverlayWidget.globalKey().currentState; + if (state != null) { + state.onFloatingWindowCountChanged(); + } + } @override void dumpManagedBacktrace() { - print("Printing!"); print(StackTrace.current); } } diff --git a/src/flutter/dart/lib/WindowOverlayWidget.dart b/src/flutter/dart/lib/WindowOverlayWidget.dart index e39ac6fe..c697ed99 100644 --- a/src/flutter/dart/lib/WindowOverlayWidget.dart +++ b/src/flutter/dart/lib/WindowOverlayWidget.dart @@ -16,6 +16,13 @@ import 'package:flutter/widgets.dart'; /// Since Flutter doesn't support real OS level multi-windows we need /// to draw the floating windows into an overlay class WindowOverlayWidget extends StatefulWidget { + // We only have one overlay per application + static GlobalObjectKey globalKey() { + return GlobalObjectKey("windowOverlayState"); + } + + WindowOverlayWidget() : super(key: globalKey()); + @override State createState() { return WindowOverlayWidgetState(); @@ -27,4 +34,8 @@ class WindowOverlayWidgetState extends State { Widget build(BuildContext context) { return Stack(children: []); } + + onFloatingWindowCountChanged() { + print("onFloatingWindowCountChanged!"); + } }