From 69def70fe607d86c843e01a47db93fa669205d67 Mon Sep 17 00:00:00 2001 From: agentbox Date: Sat, 1 Aug 2026 12:04:49 +0000 Subject: [PATCH] fix: swipe-to-refresh hijacks upward scroll in WebView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added setOnChildScrollUpCallback — only allows pull-to-refresh when WebView scrollY is 0 (at the very top). When scrolled down, the gesture passes through to the WebView for normal scrolling. Also fixed: url_label/hint now say 'base URL' instead of misleading 'server URL'/'public URL'. --- .../main/java/com/mealtracker/app/MainActivity.java | 4 ++++ android/app/src/main/res/values/strings.xml | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/java/com/mealtracker/app/MainActivity.java b/android/app/src/main/java/com/mealtracker/app/MainActivity.java index 1486fac..218a19a 100644 --- a/android/app/src/main/java/com/mealtracker/app/MainActivity.java +++ b/android/app/src/main/java/com/mealtracker/app/MainActivity.java @@ -64,6 +64,10 @@ public class MainActivity extends AppCompatActivity { btnRefresh.setOnClickListener(v -> webView.reload()); btnSettings.setOnClickListener(v -> showSettingsDialog()); + // Only allow pull-to-refresh when WebView is scrolled to the top + swipeRefresh.setEnabled(false); + swipeRefresh.setOnChildScrollUpCallback((parent, child) -> webView.getScrollY() > 0); + SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); serverUrl = prefs.getString(KEY_SERVER_URL, ""); diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 34246c9..94d18b7 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -4,17 +4,17 @@ Refresh Settings Server Configuration - Enter your Meal Tracker server URL: - The address where your meal tracker is hosted.\nExample: https://meals.example.com + Enter your Meal Tracker base URL: + The base address of your meal tracker server.\nExample: https://meals.example.com Save Cancel Clear Data Connected to server - Please enter a server URL + Please enter a base URL No network connection.\nTap to retry. Could not reach the server.\nCheck the URL and tap to retry.\n\nTip: make sure the URL opens in a browser first. - Server returned HTTP %d.\nCheck your server URL and tap to retry. - No server configured.\nTap the gear icon ⚙ to enter your server URL. + Server returned HTTP %d.\nCheck your base URL and tap to retry. + No server configured.\nTap the gear icon ⚙ to enter your base URL. Local data cleared ⚠ Certificate Warning The server at %1$s uses an untrusted certificate (error %2$d).\n\nThis is common for self-hosted servers. Proceed only if you trust this server.