samsung tap scroll setting

This commit is contained in:
Fabian Freund
2026-05-06 18:18:07 +02:00
parent 581a5b662b
commit d5f977a3d2
14 changed files with 3364 additions and 2204 deletions
@@ -25,7 +25,9 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart';
import 'package:weblibre/features/settings/presentation/widgets/sections.dart';
import 'package:weblibre/features/user/data/models/engine_settings.dart';
import 'package:weblibre/features/user/data/models/general_settings.dart';
import 'package:weblibre/features/user/domain/presentation/dialogs/quit_browser_dialog.dart';
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
import 'package:weblibre/features/user/domain/repositories/engine_settings.dart';
import 'package:weblibre/utils/exit_app.dart';
@@ -44,6 +46,9 @@ class ExperimentalSettingsScreen extends StatelessWidget {
controller: controller,
padding: const EdgeInsets.symmetric(horizontal: 12.0),
children: const [
SettingSection(name: 'Browser Touch Diagnostics'),
_TouchDiagnosticsInfoTile(),
_BrowserHandlingScrollEnabledTile(),
SettingSection(name: 'Web Push'),
_UnifiedPushDistributorTile(),
SettingSection(name: 'Runtime & Startup'),
@@ -58,6 +63,51 @@ class ExperimentalSettingsScreen extends StatelessWidget {
}
}
class _TouchDiagnosticsInfoTile extends StatelessWidget {
const _TouchDiagnosticsInfoTile();
@override
Widget build(BuildContext context) {
return const ListTile(
leading: Icon(MdiIcons.bugOutline),
title: Text('Samsung tap-scroll checks'),
subtitle: Text(
'For issue #284, test in this order: disable Pull to Refresh, disable Auto-hide Tab Bar, then disable the native scroll detector below.',
),
);
}
}
class _BrowserHandlingScrollEnabledTile extends HookConsumerWidget {
const _BrowserHandlingScrollEnabledTile();
@override
Widget build(BuildContext context, WidgetRef ref) {
final browserHandlingScrollEnabled = ref.watch(
generalSettingsWithDefaultsProvider.select(
(s) => s.browserHandlingScrollEnabled,
),
);
return SwitchListTile.adaptive(
title: const Text('Native Gecko Scroll Detector'),
subtitle: const Text(
'Lets native Gecko touch handling decide when the browser toolbar may react to page scrolling. Turn this off to test Samsung tap-scroll issues.',
),
secondary: const Icon(Icons.touch_app),
value: browserHandlingScrollEnabled,
onChanged: (value) async {
await ref
.read(saveGeneralSettingsControllerProvider.notifier)
.save(
(currentSettings) =>
currentSettings.copyWith.browserHandlingScrollEnabled(value),
);
},
);
}
}
class _UnifiedPushDistributorTile extends StatelessWidget {
const _UnifiedPushDistributorTile();