Skip to content

Commit 0727bdd

Browse files
authored
feat: implement Window.ignore_mouse_events (#4465)
1 parent f967229 commit 0727bdd

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

packages/flet/lib/src/controls/page.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ class _PageControlState extends State<PageControl> with FletStoreMixin {
167167
bool? _windowTitleBarHidden;
168168
bool? _windowSkipTaskBar;
169169
double? _windowProgressBar;
170+
bool? _windowIgnoreMouseEvents;
170171
final _navigatorKey = GlobalKey<NavigatorState>();
171172
late final RouteState _routeState;
172173
late final SimpleRouterDelegate _routerDelegate;
@@ -338,6 +339,8 @@ class _PageControlState extends State<PageControl> with FletStoreMixin {
338339
var windowSkipTaskBar = widget.control.attrBool("windowSkipTaskBar");
339340
var windowFrameless = widget.control.attrBool("windowFrameless");
340341
var windowProgressBar = widget.control.attrDouble("windowProgressBar");
342+
var windowIgnoreMouseEvents =
343+
widget.control.attrBool("windowIgnoreMouseEvents");
341344

342345
updateWindow(PageArgsModel? pageArgs) async {
343346
try {
@@ -580,6 +583,13 @@ class _PageControlState extends State<PageControl> with FletStoreMixin {
580583
if (windowWaitUntilReadyToShow == true) {
581584
await waitUntilReadyToShow();
582585
}
586+
587+
// windowIgnoreMouseEvents
588+
if (windowIgnoreMouseEvents != null &&
589+
windowIgnoreMouseEvents != _windowIgnoreMouseEvents) {
590+
await setIgnoreMouseEvents(windowIgnoreMouseEvents);
591+
_windowIgnoreMouseEvents = windowIgnoreMouseEvents;
592+
}
583593
} catch (e) {
584594
debugPrint("ERROR updating window: $e");
585595
}

packages/flet/lib/src/utils/desktop.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,13 @@ Future isFocused() async {
283283
}
284284
}
285285

286+
Future setIgnoreMouseEvents(bool ignore) async {
287+
if (isDesktopPlatform()) {
288+
debugPrint("setIgnoreMouseEvents($ignore)");
289+
await windowManager.setIgnoreMouseEvents(ignore);
290+
}
291+
}
292+
286293
Future<WindowMediaData> getWindowMediaData() async {
287294
var m = WindowMediaData();
288295
if (isDesktopPlatform()) {

sdk/python/packages/flet/src/flet/core/page.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,17 @@ def icon(self) -> Optional[str]:
476476
def icon(self, value: Optional[str]):
477477
self.page._set_attr("windowIcon", value)
478478

479+
# ignore_mouse_events
480+
@property
481+
def ignore_mouse_events(self) -> bool:
482+
return self.page._get_attr(
483+
"windowIgnoreMouseEvents", data_type="bool", def_value=False
484+
)
485+
486+
@ignore_mouse_events.setter
487+
def ignore_mouse_events(self, value: Optional[bool]):
488+
self.page._set_attr("windowIgnoreMouseEvents", value)
489+
479490
# Methods
480491
def destroy(self):
481492
self.page._set_attr("windowDestroy", True)

0 commit comments

Comments
 (0)