diff --git a/client/lib/controls/app_bar.dart b/client/lib/controls/app_bar.dart index fd3bef2fe..832c50120 100644 --- a/client/lib/controls/app_bar.dart +++ b/client/lib/controls/app_bar.dart @@ -32,6 +32,7 @@ class AppBarControl extends StatelessWidget implements PreferredSizeWidget { var actionCtrls = children.where((c) => c.name == "action" && c.isVisible); var leadingWidth = control.attrDouble("leadingWidth"); + var elevation = control.attrDouble("elevation"); var centerTitle = control.attrBool("centerTitle", false)!; var color = HexColor.fromString(theme, control.attrString("color", "")!); var bgcolor = @@ -49,6 +50,7 @@ class AppBarControl extends StatelessWidget implements PreferredSizeWidget { toolbarHeight: preferredSize.height, foregroundColor: color, backgroundColor: bgcolor, + elevation: elevation, actions: actionCtrls .map((c) => createControl(control, c.id, control.isDisabled)) .toList(), diff --git a/client/lib/utils/desktop.dart b/client/lib/utils/desktop.dart index c1256b1c4..06ded1e13 100644 --- a/client/lib/utils/desktop.dart +++ b/client/lib/utils/desktop.dart @@ -111,13 +111,17 @@ Future unmaximizeWindow() async { } Future focusWindow() async { - if (isDesktop() && !await windowManager.isFocused()) { + if (isDesktop() && + (Platform.isWindows || Platform.isMacOS) && + !await windowManager.isFocused()) { await windowManager.focus(); } } Future blurWindow() async { - if (isDesktop() && await windowManager.isFocused()) { + if (isDesktop() && + (Platform.isWindows || Platform.isMacOS) && + await windowManager.isFocused()) { await windowManager.blur(); } } @@ -134,12 +138,20 @@ Future centerWindow() async { } } +Future isFocused() async { + if (isDesktop() && (Platform.isWindows || Platform.isMacOS)) { + return await windowManager.isFocused(); + } else { + return false; + } +} + Future getWindowMediaData() async { var m = WindowMediaData(); if (isDesktop()) { m.isMaximized = await windowManager.isMaximized(); m.isMinimized = await windowManager.isMinimized(); - m.isFocused = await windowManager.isFocused(); + m.isFocused = await isFocused(); m.isTitleBarHidden = false; var size = await windowManager.getSize(); m.width = size.width; diff --git a/client/linux/flutter/generated_plugin_registrant.cc b/client/linux/flutter/generated_plugin_registrant.cc index 5a6c00611..b7a6d08b8 100644 --- a/client/linux/flutter/generated_plugin_registrant.cc +++ b/client/linux/flutter/generated_plugin_registrant.cc @@ -6,9 +6,13 @@ #include "generated_plugin_registrant.h" +#include #include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) screen_retriever_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin"); + screen_retriever_plugin_register_with_registrar(screen_retriever_registrar); g_autoptr(FlPluginRegistrar) window_manager_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin"); window_manager_plugin_register_with_registrar(window_manager_registrar); diff --git a/client/linux/flutter/generated_plugins.cmake b/client/linux/flutter/generated_plugins.cmake index a8a4fcb06..913ac71ce 100644 --- a/client/linux/flutter/generated_plugins.cmake +++ b/client/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + screen_retriever window_manager ) diff --git a/client/macos/Flutter/GeneratedPluginRegistrant.swift b/client/macos/Flutter/GeneratedPluginRegistrant.swift index 1babc45f9..b62294763 100644 --- a/client/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/client/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,8 +5,10 @@ import FlutterMacOS import Foundation +import screen_retriever import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin")) WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } diff --git a/client/pubspec.lock b/client/pubspec.lock index a3aa19481..18f358c58 100644 --- a/client/pubspec.lock +++ b/client/pubspec.lock @@ -186,6 +186,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.0.0" + screen_retriever: + dependency: transitive + description: + name: screen_retriever + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" sky_engine: dependency: transitive description: flutter @@ -260,7 +267,7 @@ packages: name: window_manager url: "https://pub.dartlang.org" source: hosted - version: "0.2.1" + version: "0.2.5" xml: dependency: transitive description: diff --git a/client/pubspec.yaml b/client/pubspec.yaml index c0f2b3e78..c80a149cf 100644 --- a/client/pubspec.yaml +++ b/client/pubspec.yaml @@ -37,7 +37,7 @@ dependencies: flutter_redux: ^0.10.0 equatable: ^2.0.3 web_socket_channel: ^2.1.0 - window_manager: ^0.2.1 + window_manager: ^0.2.5 http: ^0.13.3 dev_dependencies: diff --git a/client/windows/flutter/generated_plugin_registrant.cc b/client/windows/flutter/generated_plugin_registrant.cc index b5362c1e0..d6b86faa1 100644 --- a/client/windows/flutter/generated_plugin_registrant.cc +++ b/client/windows/flutter/generated_plugin_registrant.cc @@ -6,9 +6,12 @@ #include "generated_plugin_registrant.h" +#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + ScreenRetrieverPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); WindowManagerPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("WindowManagerPlugin")); } diff --git a/client/windows/flutter/generated_plugins.cmake b/client/windows/flutter/generated_plugins.cmake index 75a944c37..bfa52f4b6 100644 --- a/client/windows/flutter/generated_plugins.cmake +++ b/client/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + screen_retriever window_manager ) diff --git a/sdk/python/flet/app_bar.py b/sdk/python/flet/app_bar.py index ed84f6f4a..2fa9e47a6 100644 --- a/sdk/python/flet/app_bar.py +++ b/sdk/python/flet/app_bar.py @@ -18,6 +18,7 @@ def __init__( toolbar_height: OptionalNumber = None, color: str = None, bgcolor: str = None, + elevation: OptionalNumber = None, actions: List[Control] = None, ): Control.__init__(self, ref=ref) @@ -33,6 +34,7 @@ def __init__( self.toolbar_height = toolbar_height self.color = color self.bgcolor = bgcolor + self.elevation = elevation self.actions = actions def _get_control_name(self): @@ -119,6 +121,16 @@ def bgcolor(self): def bgcolor(self, value): self._set_attr("bgcolor", value) + # elevation + @property + def elevation(self) -> OptionalNumber: + return self._get_attr("elevation") + + @elevation.setter + @beartype + def elevation(self, value: OptionalNumber): + self._set_attr("elevation", value) + # actions @property def actions(self):