Skip to content

Commit

Permalink
Added Container.on_tap_down event for backward compatibilty with ol…
Browse files Browse the repository at this point in the history
…d `on_click` behavior (flet-dev#2980)
  • Loading branch information
FeodorFitsner authored and zrr1999 committed Jul 17, 2024
1 parent 659d805 commit 3aa4b2f
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 10 deletions.
38 changes: 30 additions & 8 deletions packages/flet/lib/src/controls/container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ class ContainerControl extends StatelessWidget with FletStoreMixin {
children.where((c) => c.name == "content" && c.isVisible);
bool ink = control.attrBool("ink", false)!;
bool onClick = control.attrBool("onclick", false)!;
bool onTapDown = control.attrBool("onTapDown", false)!;
String url = control.attrString("url", "")!;
String? urlTarget = control.attrString("urlTarget");
bool onLongPress = control.attrBool("onLongPress", false)!;
Expand Down Expand Up @@ -160,12 +161,23 @@ class ContainerControl extends StatelessWidget with FletStoreMixin {
openWebBrowser(url, webWindowName: urlTarget);
}
if (onClick) {
backend.triggerControlEvent(
control.id,
"click");
backend.triggerControlEvent(control.id, "click");
}
}
: null,
onTapDown: onTapDown
? (details) {
backend.triggerControlEvent(
control.id,
"tap_down",
json.encode(ContainerTapEvent(
localX: details.localPosition.dx,
localY: details.localPosition.dy,
globalX: details.globalPosition.dx,
globalY: details.globalPosition.dy)
.toJson()));
}
: null,
onLongPress: onLongPress
? () {
debugPrint("Container ${control.id} long pressed!");
Expand Down Expand Up @@ -241,8 +253,7 @@ class ContainerControl extends StatelessWidget with FletStoreMixin {
: null,
child: child);

if ((onClick || onLongPress || onHover || url != "") &&
!disabled) {
if ((onClick || onLongPress || onHover || url != "") && !disabled) {
result = MouseRegion(
cursor: onClick || url != ""
? SystemMouseCursors.click
Expand All @@ -269,12 +280,23 @@ class ContainerControl extends StatelessWidget with FletStoreMixin {
openWebBrowser(url, webWindowName: urlTarget);
}
if (onClick) {
backend.triggerControlEvent(
control.id,
"click");
backend.triggerControlEvent(control.id, "click");
}
}
: null,
onTapDown: onTapDown
? (details) {
backend.triggerControlEvent(
control.id,
"tap_down",
json.encode(ContainerTapEvent(
localX: details.localPosition.dx,
localY: details.localPosition.dy,
globalX: details.globalPosition.dx,
globalY: details.globalPosition.dy)
.toJson()));
}
: null,
onLongPress: onLongPress
? () {
debugPrint("Container ${control.id} clicked!");
Expand Down
16 changes: 14 additions & 2 deletions sdk/python/packages/flet-core/src/flet_core/container.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def __init__(
theme: Optional[Theme] = None,
theme_mode: Optional[ThemeMode] = None,
on_click=None,
on_tap_down=None,
on_long_press=None,
on_hover=None,
#
Expand Down Expand Up @@ -162,8 +163,8 @@ def convert_container_tap_event_data(e):
d = json.loads(e.data)
return ContainerTapEvent(**d)

self.__on_click = EventHandler(convert_container_tap_event_data)
self._add_event_handler("click", self.__on_click.get_handler())
self.__on_tap_down = EventHandler(convert_container_tap_event_data)
self._add_event_handler("tap_down", self.__on_tap_down.get_handler())

self.content = content
self.padding = padding
Expand Down Expand Up @@ -191,6 +192,7 @@ def convert_container_tap_event_data(e):
self.theme = theme
self.theme_mode = theme_mode
self.on_click = on_click
self.on_tap_down = on_tap_down
self.on_long_press = on_long_press
self.on_hover = on_hover

Expand Down Expand Up @@ -481,6 +483,16 @@ def on_click(self, handler):
self._add_event_handler("click", handler)
self._set_attr("onClick", True if handler is not None else None)

# on_tap_down
@property
def on_tap_down(self):
return self.__on_tap_down

@on_tap_down.setter
def on_tap_down(self, handler):
self.__on_tap_down.subscribe(handler)
self._set_attr("onTapDown", True if handler is not None else None)

# on_long_press
@property
def on_long_press(self):
Expand Down

0 comments on commit 3aa4b2f

Please sign in to comment.