Skip to content

Implement tooltip windows on Linux#182348

Merged
robert-ancell merged 62 commits into
flutter:masterfrom
robert-ancell:linux-tooltips
Apr 2, 2026
Merged

Implement tooltip windows on Linux#182348
robert-ancell merged 62 commits into
flutter:masterfrom
robert-ancell:linux-tooltips

Conversation

@robert-ancell

@robert-ancell robert-ancell commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Add support for tooltips on Linux. These are implemented using a popup window. Due to a limitation of the Wayland xdg_popup implementation they do not reposition after being shown, which means the example application does not behave the same on Linux.

@flutter-dashboard

Copy link
Copy Markdown

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@robert-ancell robert-ancell marked this pull request as draft February 13, 2026 04:06
@github-actions github-actions Bot added framework flutter/packages/flutter repository. See also f: labels. engine flutter/engine related. See also e: labels. platform-linux Building on or for Linux specifically a: desktop Running on desktop labels Feb 13, 2026
@robert-ancell robert-ancell requested a review from knopp February 13, 2026 04:07

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request implements tooltip windows on Linux. It introduces support for sized-to-content windows by modifying the compositor to allow querying frame sizes and conditionally waiting for frames. The engine's view management is updated to handle min/max size constraints. FlView is enhanced to resize itself based on the content size from Flutter. On the Dart side, new GTK FFI bindings are added, and TooltipWindowControllerLinux is implemented to create and manage undecorated tooltip windows. My review includes a correction for a potential bug in the resize logic for sized-to-content views and a minor typo fix.

Comment thread engine/src/flutter/shell/platform/linux/fl_view.cc Outdated
@robert-ancell

Copy link
Copy Markdown
Contributor Author

/gemini review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request implements the foundational support for tooltip windows on Linux by introducing sized-to-content windows. The changes are extensive, touching both the C++ engine layer and the Dart framework layer. The modifications to the compositor to handle frame sizing and the engine to accept view constraints are well-implemented. The new TooltipWindowControllerLinux in the framework correctly utilizes these new capabilities. I've found one issue in the gravity mapping for window positioning that needs to be addressed.

Comment thread packages/flutter/lib/src/widgets/_window_linux.dart Outdated

@mattkae mattkae left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some minor questions and things!

Comment thread packages/flutter/lib/src/widgets/_window_linux.dart Outdated
Comment thread packages/flutter/lib/src/widgets/_window_linux.dart
Comment thread packages/flutter/lib/src/widgets/_window_linux.dart
@mattkae mattkae added the CICD Run CI/CD label Mar 31, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Mar 31, 2026
@robert-ancell robert-ancell requested a review from mattkae March 31, 2026 21:30
@robert-ancell robert-ancell added the CICD Run CI/CD label Apr 1, 2026

@mattkae mattkae left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I personally have no issues with this 🎉

Great stuff!

@github-actions github-actions Bot removed the CICD Run CI/CD label Apr 1, 2026
@mattkae mattkae added the CICD Run CI/CD label Apr 1, 2026
@robert-ancell robert-ancell added the autosubmit Merge PR when tree becomes green via auto submit App label Apr 1, 2026
@robert-ancell robert-ancell added this pull request to the merge queue Apr 2, 2026
Merged via the queue into flutter:master with commit b3d30eb Apr 2, 2026
190 of 191 checks passed
@robert-ancell robert-ancell deleted the linux-tooltips branch April 2, 2026 06:18
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Apr 2, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 2, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 2, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Apr 2, 2026
flutter/flutter@3d69471...0f401ee

2026-04-02 matej.knopp@gmail.com Remove isSizedToContent from _window_linux.dart. (flutter/flutter#184506)
2026-04-02 matej.knopp@gmail.com Windows: Get graphics adapter from engine instead of view (flutter/flutter#184479)
2026-04-02 robert.ancell@canonical.com Reduce number of mallocs in FFI call (flutter/flutter#184166)
2026-04-02 robert.ancell@canonical.com Handle events without a device (flutter/flutter#184163)
2026-04-02 robert.ancell@canonical.com Implement tooltip windows on Linux (flutter/flutter#182348)
2026-04-02 engine-flutter-autoroll@skia.org Roll Skia from bdeebacf23c8 to bb9fd8653739 (4 revisions) (flutter/flutter#184494)
2026-04-02 matej.knopp@gmail.com Implement popup windows for macOS (flutter/flutter#182371)
2026-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from fV-JIWUt4FQGeDtEe... to BFLjk6Uwd0gs_Hkdk... (flutter/flutter#184492)
2026-04-02 victorsanniay@gmail.com Add await or ignore to future-returning methods defined in Dart SDK (flutter/flutter#184229)
2026-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 043a2bfd56ff to d84bdfeb45eb (2 revisions) (flutter/flutter#184487)
2026-04-01 engine-flutter-autoroll@skia.org Roll Skia from c2363c39c283 to bdeebacf23c8 (9 revisions) (flutter/flutter#184480)
2026-04-01 ksanaullah383.khan@gmail.com Remove sliver_test_utils cross-import from sliver_app_bar_test (flutter/flutter#184193)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Improve error message when `dart-define` content are not `base64 encoded` and add more test cases (flutter/flutter#184219)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Replace usages of `MediaQuery.of(context).property` with `MediaQuery.propertyOf(context)` (flutter/flutter#184211)
2026-04-01 techonlabs@gmail.com [ios] Add opt-in inline prediction text input support (flutter/flutter#183650)
2026-04-01 jesswon@google.com [fix-forward] fix build_android_host_app_with_module_source integration test (flutter/flutter#184466)
2026-04-01 katelovett@google.com Update style guide (flutter/flutter#184478)
2026-04-01 engine-flutter-autoroll@skia.org Roll Packages from b04f3e5 to b3fcf14 (3 revisions) (flutter/flutter#184474)
2026-04-01 15619084+vashworth@users.noreply.github.com Warn about slow SwiftPM downloads and centralize SwiftPM cache (flutter/flutter#183747)
2026-04-01 15619084+vashworth@users.noreply.github.com Inject FlutterFramework dependency in iOS Add2App swift packages (flutter/flutter#184365)
2026-04-01 1063596+reidbaker@users.noreply.github.com Prepare for skills adoption (flutter/flutter#184129)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC louisehsu@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
mbcorona pushed a commit to mbcorona/flutter that referenced this pull request Apr 15, 2026
Add support for tooltips on Linux. These are implemented using a popup
window. Due to a limitation of the Wayland xdg_popup implementation they
do not reposition after being shown, which means the example application
does not behave the same on Linux.

---------

Co-authored-by: Matthew Kosarek <matt.kosarek@canonical.com>
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…r#11420)

flutter/flutter@3d69471...0f401ee

2026-04-02 matej.knopp@gmail.com Remove isSizedToContent from _window_linux.dart. (flutter/flutter#184506)
2026-04-02 matej.knopp@gmail.com Windows: Get graphics adapter from engine instead of view (flutter/flutter#184479)
2026-04-02 robert.ancell@canonical.com Reduce number of mallocs in FFI call (flutter/flutter#184166)
2026-04-02 robert.ancell@canonical.com Handle events without a device (flutter/flutter#184163)
2026-04-02 robert.ancell@canonical.com Implement tooltip windows on Linux (flutter/flutter#182348)
2026-04-02 engine-flutter-autoroll@skia.org Roll Skia from bdeebacf23c8 to bb9fd8653739 (4 revisions) (flutter/flutter#184494)
2026-04-02 matej.knopp@gmail.com Implement popup windows for macOS (flutter/flutter#182371)
2026-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from fV-JIWUt4FQGeDtEe... to BFLjk6Uwd0gs_Hkdk... (flutter/flutter#184492)
2026-04-02 victorsanniay@gmail.com Add await or ignore to future-returning methods defined in Dart SDK (flutter/flutter#184229)
2026-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 043a2bfd56ff to d84bdfeb45eb (2 revisions) (flutter/flutter#184487)
2026-04-01 engine-flutter-autoroll@skia.org Roll Skia from c2363c39c283 to bdeebacf23c8 (9 revisions) (flutter/flutter#184480)
2026-04-01 ksanaullah383.khan@gmail.com Remove sliver_test_utils cross-import from sliver_app_bar_test (flutter/flutter#184193)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Improve error message when `dart-define` content are not `base64 encoded` and add more test cases (flutter/flutter#184219)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Replace usages of `MediaQuery.of(context).property` with `MediaQuery.propertyOf(context)` (flutter/flutter#184211)
2026-04-01 techonlabs@gmail.com [ios] Add opt-in inline prediction text input support (flutter/flutter#183650)
2026-04-01 jesswon@google.com [fix-forward] fix build_android_host_app_with_module_source integration test (flutter/flutter#184466)
2026-04-01 katelovett@google.com Update style guide (flutter/flutter#184478)
2026-04-01 engine-flutter-autoroll@skia.org Roll Packages from b04f3e5 to b3fcf14 (3 revisions) (flutter/flutter#184474)
2026-04-01 15619084+vashworth@users.noreply.github.com Warn about slow SwiftPM downloads and centralize SwiftPM cache (flutter/flutter#183747)
2026-04-01 15619084+vashworth@users.noreply.github.com Inject FlutterFramework dependency in iOS Add2App swift packages (flutter/flutter#184365)
2026-04-01 1063596+reidbaker@users.noreply.github.com Prepare for skills adoption (flutter/flutter#184129)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC louisehsu@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: desktop Running on desktop CICD Run CI/CD d: examples Sample code and demos engine flutter/engine related. See also e: labels. framework flutter/packages/flutter repository. See also f: labels. platform-linux Building on or for Linux specifically team-linux Owned by the Linux platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants