From fbbf331057d09e7faa530c7d52705547ff630f34 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Sat, 14 Feb 2026 20:38:10 +0100 Subject: [PATCH] fix viewport not resetting when keyboard dismisses Co-Authored-By: Claude Opus 4.6 --- .../browser/presentation/screens/browser.dart | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart b/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart index 63befd43..bccb1c0e 100644 --- a/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart +++ b/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart @@ -418,19 +418,15 @@ class BrowserScreen extends HookConsumerWidget { useOnStreamChange( viewportService.keyboardEvents, onData: (event) { - if (event.isVisible && event.heightPx > 0) { - // When keyboard is visible, notify GeckoView to adjust viewport - // This uses the native API to handle keyboard without Flutter resize - // If find-in-page is also visible, add its height to the keyboard height - final findInPageHeightPx = findInPageVisible - ? (FindInPageWidget.findInPageHeight * pixelRatio).round() - : 0; - unawaited( - viewportService.setDynamicToolbarMaxHeight( - event.heightPx + findInPageHeightPx, - ), - ); - } + // When keyboard is visible, use keyboard height for viewport adjustment. + // When hidden, restore normal toolbar height to avoid stale viewport size. + final findInPageHeightPx = findInPageVisible + ? (FindInPageWidget.findInPageHeight * pixelRatio).round() + : 0; + final targetHeightPx = event.isVisible && event.heightPx > 0 + ? event.heightPx + findInPageHeightPx + : toolbarHeightPx; + unawaited(viewportService.setDynamicToolbarMaxHeight(targetHeightPx)); }, );