Skip to content

Conversation

@caybro
Copy link
Member

@caybro caybro commented Oct 22, 2025

What does the PR do

  • introduce a new semi-visual component called StatusBottomSheetDragHandle to visualize the drag handle and to perform the drag/swipe operation when assigned a dragObjectRoot target
  • use the handle in StatusDialog (and its header) and StatusDropdown
  • adjust the StatusDialog SB page
  • fix some minor (mostly docu) comments

Fixes #19103

Affected areas

StatusDialog/StatusDropdown

Architecture compliance

Screencapture of the functionality

Zaznam.obrazovky.z.2025-10-21.18-16-36.mp4

Impact on end user

Users can swipe down a StatusDialog on touch devices

How to test

Open any StatusDialog; when in bottomSheet mode, the dialog should have a little drag handle on top which can be swiped down to close the popup

Risk

low

@status-im-auto
Copy link
Member

status-im-auto commented Oct 22, 2025

Jenkins Builds

Click to see older builds (59)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 12855b5 #1 2025-10-22 11:46:17 ~10 min android/arm64 🤖apk 📲
✔️ 12855b5 #1 2025-10-22 11:48:13 ~11 min tests/nim 📄log
✔️ 12855b5 #1 2025-10-22 11:52:40 ~16 min linux/x86_64 📦tgz
✔️ 12855b5 #1 2025-10-22 11:55:06 ~18 min tests/ui 📄log
✔️ 12855b5 #1 2025-10-22 11:59:16 ~22 min linux/x86_64-nwaku 📦tgz
✔️ 12855b5 #1 2025-10-22 12:02:49 ~26 min windows/x86_64 💿exe
✖️ 12855b5 PR19109 2025-10-22 12:14:04 ~11 min tests/e2e-windows 📊rpt
✔️ 12855b5 pr19109 2025-10-22 12:37:04 ~44 min tests/e2e 📊rpt
✔️ 12855b5 #1 2025-10-22 12:39:53 ~1 hr 3 min ios/aarch64 📦pkg
✔️ 12855b5 #1 2025-10-22 12:58:15 ~1 hr 21 min macos/aarch64 🍎dmg
✔️ 9845b56 #2 2025-10-22 14:59:44 ~8 min tests/nim 📄log
✔️ 9845b56 #2 2025-10-22 15:06:01 ~14 min linux/x86_64 📦tgz
✔️ 9845b56 #2 2025-10-22 15:07:40 ~15 min tests/ui 📄log
✔️ 9845b56 #2 2025-10-22 15:15:46 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 9845b56 #2 2025-10-22 15:19:34 ~27 min windows/x86_64 💿exe
✔️ 9845b56 pr19109 2025-10-22 15:22:31 ~16 min tests/e2e 📊rpt
✔️ 9845b56 PR19109 2025-10-22 15:31:00 ~11 min tests/e2e-windows 📊rpt
✔️ 9845b56 #2 2025-10-22 16:38:53 ~1 hr 47 min ios/aarch64 📦pkg
✔️ 9845b56 #2 2025-10-22 16:56:30 ~2 hr 4 min macos/aarch64 🍎dmg
✔️ 9845b56 #2 2025-10-22 16:57:34 ~2 hr 5 min macos/aarch64-nwaku 🍎dmg
✔️ 1cdef93e #2 2025-10-22 15:01:28 ~9 min android/arm64 🤖apk 📲
✔️ d0db0ba5 #3 2025-10-22 17:33:59 ~18 min android/arm64 🤖apk 📲
✔️ 216a28f #5 2025-10-22 23:01:29 ~6 min android/arm64 🤖apk 📲
✔️ 216a28f #3 2025-10-22 23:02:45 ~8 min tests/nim 📄log
✔️ 216a28f #3 2025-10-22 23:04:33 ~10 min ios/aarch64 📦pkg
✔️ 216a28f #3 2025-10-22 23:09:05 ~14 min tests/ui 📄log
✔️ 216a28f #3 2025-10-22 23:11:04 ~16 min macos/aarch64 🍎dmg
✔️ 216a28f #3 2025-10-22 23:11:28 ~17 min linux/x86_64 📦tgz
✔️ 216a28f #3 2025-10-22 23:15:48 ~21 min macos/aarch64-nwaku 🍎dmg
✔️ 216a28f #3 2025-10-22 23:17:19 ~22 min windows/x86_64 💿exe
✔️ 216a28f #3 2025-10-22 23:17:43 ~23 min linux/x86_64-nwaku 📦tgz
✖️ 216a28f PR19109 2025-10-22 23:27:53 ~10 min tests/e2e-windows 📊rpt
✔️ 216a28f pr19109 2025-10-22 23:28:34 ~17 min tests/e2e 📊rpt
✔️ 2f5e136 #4 2025-10-22 23:52:12 ~6 min tests/nim 📄log
✔️ 2f5e136 #6 2025-10-22 23:52:57 ~7 min android/arm64 🤖apk 📲
✔️ 2f5e136 #4 2025-10-22 23:56:04 ~10 min ios/aarch64 📦pkg
✔️ 2f5e136 #4 2025-10-23 00:00:09 ~14 min tests/ui 📄log
✔️ 2f5e136 #4 2025-10-23 00:00:52 ~15 min macos/aarch64 🍎dmg
✔️ 2f5e136 #4 2025-10-23 00:02:33 ~16 min linux/x86_64 📦tgz
✔️ 2f5e136 #4 2025-10-23 00:05:21 ~19 min linux/x86_64-nwaku 📦tgz
✔️ 2f5e136 #4 2025-10-23 00:05:37 ~19 min windows/x86_64 💿exe
✔️ 2f5e136 #4 2025-10-23 00:08:43 ~23 min macos/aarch64-nwaku 🍎dmg
✖️ 2f5e136 PR19109 2025-10-23 00:16:15 ~10 min tests/e2e-windows 📊rpt
✔️ 2f5e136 pr19109 2025-10-23 00:21:34 ~18 min tests/e2e 📊rpt
✔️ e8df02c #5 2025-10-24 00:46:58 ~6 min tests/nim 📄log
✔️ e8df02c #7 2025-10-24 00:48:29 ~7 min android/arm64 🤖apk 📲
✔️ e8df02c #5 2025-10-24 00:48:36 ~7 min ios/aarch64 📦pkg
✔️ e8df02c #5 2025-10-24 00:53:45 ~12 min linux/x86_64 📦tgz
✔️ e8df02c #5 2025-10-24 00:54:51 ~14 min tests/ui 📄log
✔️ e8df02c #5 2025-10-24 00:59:46 ~18 min macos/aarch64 🍎dmg
✔️ e8df02c #5 2025-10-24 01:01:55 ~21 min macos/aarch64-nwaku 🍎dmg
✔️ e8df02c #5 2025-10-24 01:03:01 ~22 min linux/x86_64-nwaku 📦tgz
✔️ e8df02c pr19109 2025-10-24 01:10:22 ~16 min tests/e2e 📊rpt
✔️ e8df02c #5 2025-10-24 01:11:47 ~30 min windows/x86_64 💿exe
✖️ e8df02c PR19109 2025-10-24 01:22:49 ~10 min tests/e2e-windows 📊rpt
✔️ 8fc5fab9 #9 2025-10-25 17:23:31 ~7 min android/arm64 🤖apk 📲
✔️ 0f28a663 #10 2025-10-26 17:27:15 ~11 min android/arm64 🤖apk 📲
✔️ 02a6ce17 #12 2025-10-28 17:24:47 ~9 min android/arm64 🤖apk 📲
✔️ 77444227 #13 2025-10-29 17:26:20 ~10 min android/arm64 🤖apk 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 37efcef9 #14 2025-10-30 17:34:42 ~18 min android/arm64 🤖apk 📲
✔️ 953a80a8 #15 2025-10-31 17:26:40 ~10 min android/arm64 🤖apk 📲

@caybro caybro force-pushed the feat/swipe-to-close-dialog-bottomSheet branch from 12855b5 to 9845b56 Compare October 22, 2025 14:51
@caybro caybro marked this pull request as ready for review October 22, 2025 14:53
@caybro caybro requested review from a team, alexjba, micieslak and noeliaSD as code owners October 22, 2025 14:53
@caybro caybro requested review from friofry and removed request for a team October 22, 2025 14:53
@caybro
Copy link
Member Author

caybro commented Oct 22, 2025

TODO: need to finish/add support for StatusDropdown too

@caybro caybro force-pushed the feat/swipe-to-close-dialog-bottomSheet branch 2 times, most recently from 216a28f to 2f5e136 Compare October 22, 2025 23:45
@caybro
Copy link
Member Author

caybro commented Oct 23, 2025

The StatusDropdown:

Zaznam.obrazovky.z.2025-10-23.11-31-46.mp4

- introduce a new semi-visual component called
`StatusBottomSheetDragHandle` to visualize the drag handle and to
perform the drag/swipe operation when assigned a `dragObjectRoot` target
- use the handle in StatusDialog (and its header) and StatusDropdown
- adjust the StatusDialog SB page
- fix some minor (mostly docu) comments

Fixes #19103
@caybro caybro force-pushed the feat/swipe-to-close-dialog-bottomSheet branch from 2f5e136 to e8df02c Compare October 24, 2025 00:40
Copy link
Contributor

@alexjba alexjba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Tested!
I'd just update the padding with the default ones to avoid it getting too small

Image


anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: Theme.smallPadding
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The padding is way too small on mobile

Suggested change
anchors.topMargin: Theme.smallPadding
anchors.topMargin: Theme.defaultSmallPadding


anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: Theme.halfPadding
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
anchors.topMargin: Theme.halfPadding
anchors.topMargin: Theme.defaultHalfPadding

// just a visual handle; the drag operation is done in StatusDialog
StatusBottomSheetDragHandle {
anchors.top: parent.top
anchors.topMargin: Theme.halfPadding
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
anchors.topMargin: Theme.halfPadding
anchors.topMargin: Theme.defaultHalfPadding

Copy link
Member

@micieslak micieslak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the idea and it works for some popups. However after basic testing it seems not working consistently for all popups we have. For some there are some glitches like jumping content or broken layout. Others have the handler visible but it's not possible to start swipe. Finally some popups don't have the handler visible at all.

The content is jumping when dragging, sometimes triggers conversion to regular popup:
https://github.com/user-attachments/assets/738cc305-d942-496c-a34c-775fb0e61955

Something strange happens there, the top bar disappears long with the popup 🤔 :

Record_2025-10-24-12-01-17.mp4

Broken layout when touching sensitive drag areal:

Record_2025-10-24-12-19-02.mp4

Sometimes the initial jump is inadequately high:

Record_2025-10-24-12-33-52.mp4

Handler not visible (and bottom part cut, probably bc of other changes not related with this pr):
Image

Handler not visible:

Image

Image

Handler not possible to activate:

Image

Image

Image

The list of issues is probably not complete as there is many popups in the app. My suggestion is to keep this feature as experimental for further testing/patching. Providing it to the release in last moment is quite risky and may bring bad impression of not fully completed feature.

@caybro
Copy link
Member Author

caybro commented Oct 24, 2025

Yeah I agree, in some popups it doesn't work (b/c not derived from StatusDialog), in others because of a double StatusDropdown inside a combo box, etc :/

@caybro caybro changed the title feat: close the bottom sheet on a swipe down WIP feat: close the bottom sheet on a swipe down Oct 27, 2025
@caybro caybro marked this pull request as draft October 27, 2025 18:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[QT-based Mobile App] add a new actions: close the bottom sheet on a swipe down & improve UI for the bottom sheet

4 participants