@@ -25,6 +25,7 @@ import kotlinx.coroutines.launch as coroutineLaunch
2525import kotlinx.coroutines.withContext
2626import fulguris.html.homepage.HomePageFactory
2727import fulguris.js.InvertPage
28+ import fulguris.js.NestedScrollDetect
2829import fulguris.js.SetMetaViewport
2930import fulguris.js.TextReflow
3031import fulguris.permissions.PermissionsManager
@@ -95,6 +96,7 @@ class WebPageClient(
9596 val textReflowJs: TextReflow = hiltEntryPoint.textReflowJs
9697 val invertPageJs: InvertPage = hiltEntryPoint.invertPageJs
9798 val setMetaViewport: SetMetaViewport = hiltEntryPoint.setMetaViewport
99+ val nestedScrollDetectJs: NestedScrollDetect = hiltEntryPoint.nestedScrollDetectJs
98100 val homePageFactory: HomePageFactory = hiltEntryPoint.homePageFactory
99101 val abpBlockerManager: AbpBlockerManager = hiltEntryPoint.abpBlockerManager
100102 val noopBlocker: NoOpAdBlocker = hiltEntryPoint.noopBlocker
@@ -337,7 +339,7 @@ class WebPageClient(
337339 iResourceCount++
338340 Timber .d(" $ihs : onLoadResource - ${if (isForMainFrame) " Main frame" else " Resource" } - $iResourceCount - $url " )
339341 }
340-
342+
341343 /* *
342344 *
343345 */
@@ -347,7 +349,7 @@ class WebPageClient(
347349 webBrowser.onTabChangedUrl(webPageTab)
348350 }
349351 }
350-
352+
351353
352354 /* *
353355 * Overrides [WebViewClient.onPageFinished].
@@ -379,6 +381,14 @@ class WebPageClient(
379381 // Flag that we have called onPageFinished
380382 onPageFinishedDone = true
381383
384+ // Inject nested scroll detection so that pull-to-refresh is suppressed when
385+ // the user scrolls inside a CSS overflow:auto/scroll element (e.g. a sidebar).
386+ // Only inject if pull-to-refresh is enabled and JavaScript is enabled.
387+ // Though if the config changes we could be missing it...
388+ if (view.context.configPrefs.pullToRefresh && view.settings.javaScriptEnabled) {
389+ view.evaluateJavascript(nestedScrollDetectJs.provideJs(), null )
390+ }
391+
382392 // Execute and clear callback registered with loadUrl
383393 webPageTab.onLoadCompleteCallback?.invoke()
384394 webPageTab.onLoadCompleteCallback = null
@@ -1228,4 +1238,3 @@ class WebPageClient(
12281238 super .onSafeBrowsingHit(view, request, threatType, callback)
12291239 }
12301240}
1231-
0 commit comments