setting tab abr long press url copy

This commit is contained in:
Fabian Freund
2026-03-24 17:32:02 +01:00
parent 160a258fea
commit 87d6e81609
11 changed files with 91 additions and 5 deletions
@@ -42,7 +42,7 @@ final class BrowserAddonServiceProvider
}
String _$browserAddonServiceHash() =>
r'6f07d93576a0816bf1b9e1b36397b89b7cacf43f';
r'1485fd056ce32e142e342e920affb82a5c77a370';
abstract class _$BrowserAddonService extends $Notifier<void> {
void build();
@@ -18,6 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:skeletonizer/skeletonizer.dart';
@@ -64,6 +65,7 @@ class CompactAppBarTitle extends ConsumerWidget {
isTabTunneled:
isTabTuneledAsync.hasValue && isTabTuneledAsync.value == true,
showSiteSettingsBadge: showSiteSettingsBadge,
longPressUrlCopy: settings.tabBarLongPressUrlCopy,
onSiteSettingsTap: () {
ref
.read(bottomSheetControllerProvider.notifier)
@@ -89,6 +91,7 @@ class CompactAppBarTitleView extends StatelessWidget {
required this.onSiteSettingsTap,
required this.onTitleTap,
this.tabIcon,
this.longPressUrlCopy = true,
});
final TabState tabState;
@@ -97,6 +100,7 @@ class CompactAppBarTitleView extends StatelessWidget {
final VoidCallback onSiteSettingsTap;
final VoidCallback onTitleTap;
final Widget? tabIcon;
final bool longPressUrlCopy;
@override
Widget build(BuildContext context) {
@@ -168,6 +172,13 @@ class CompactAppBarTitleView extends StatelessWidget {
style: theme.textTheme.bodyMedium?.copyWith(
color: theme.colorScheme.onSurface,
),
onTooltipTriggered: longPressUrlCopy
? () async {
await Clipboard.setData(
ClipboardData(text: tabState.url.toString()),
);
}
: null,
),
),
],
@@ -209,6 +220,7 @@ class AppBarTitle extends ConsumerWidget {
isTabTunneled:
isTabTuneledAsync.hasValue && isTabTuneledAsync.value == true,
showSiteSettingsBadge: showSiteSettingsBadge,
longPressUrlCopy: settings.tabBarLongPressUrlCopy,
onSiteSettingsTap: () {
ref
.read(bottomSheetControllerProvider.notifier)
@@ -233,6 +245,7 @@ class AppBarTitleView extends StatelessWidget {
required this.showSiteSettingsBadge,
required this.onSiteSettingsTap,
required this.onTitleTap,
required this.longPressUrlCopy,
this.tabIcon,
});
@@ -242,6 +255,7 @@ class AppBarTitleView extends StatelessWidget {
final VoidCallback onSiteSettingsTap;
final VoidCallback onTitleTap;
final Widget? tabIcon;
final bool longPressUrlCopy;
@override
Widget build(BuildContext context) {
@@ -333,6 +347,13 @@ class AppBarTitleView extends StatelessWidget {
style: theme.textTheme.bodyMedium?.copyWith(
color: theme.colorScheme.onSurface,
),
onTooltipTriggered: longPressUrlCopy
? () async {
await Clipboard.setData(
ClipboardData(text: tabState.url.toString()),
);
}
: null,
),
),
],