Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit ce1c5236 authored by Carmelo Messina's avatar Carmelo Messina
Browse files

Android Pixel Perfect Mode: fix scrolling inside some web elements (#2301)

parent 39aa73de
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -1809,7 +1809,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
 
   if (ForMainFrame()) {
     if (size_ != new_size) {
@@ -1966,6 +1981,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing(
@@ -1967,6 +1982,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing(
           size_.value(),
           widget_base_->DIPsToCeiledBlinkSpace(
               widget_base_->VisibleViewportSize()),
@@ -1818,7 +1818,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
           visual_properties.browser_controls_params);
       return;
     }
@@ -1999,6 +2016,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing(
@@ -2000,6 +2017,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing(
 
       View()->ResizeWithBrowserControls(
           size_.value(), widget_base_->VisibleViewportSize(),
@@ -1827,7 +1827,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
           visual_properties.browser_controls_params);
     }
 
@@ -2377,6 +2396,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level,
@@ -2378,6 +2397,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level,
           View()->ZoomFactorForViewportLayout() *
           static_cast<float>(View()->ZoomLevelToZoomFactor(zoom_level)) *
           static_cast<float>(css_zoom_factor);
@@ -1836,7 +1836,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
       if (zoom_changed) {
         // Set the layout shift exclusion window for the zoom level change.
         if (LocalFrameView* view = document->View()) {
@@ -3429,6 +3450,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr<cc::Layer> layer) {
@@ -3430,6 +3451,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr<cc::Layer> layer) {
     // be needed in setting the raster scale.
     SetPageScaleStateAndLimits(1.f, false /* is_pinch_gesture_active */,
                                View()->MinimumPageScaleFactor(),
@@ -1844,7 +1844,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
                                View()->MaximumPageScaleFactor());
   }
 
@@ -4798,9 +4820,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits(
@@ -4799,9 +4821,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits(
     float page_scale_factor,
     bool is_pinch_gesture_active,
     float minimum,
@@ -1856,7 +1856,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
 
   // Only propagate page scale from the main frame.
   if (ForMainFrame()) {
@@ -4924,7 +4947,10 @@ void WebFrameWidgetImpl::OrientationChanged() {
@@ -4925,7 +4948,10 @@ void WebFrameWidgetImpl::OrientationChanged() {
 void WebFrameWidgetImpl::DidUpdateSurfaceAndScreen(
     const display::ScreenInfos& previous_original_screen_infos) {
   display::ScreenInfo screen_info = widget_base_->GetScreenInfo();
@@ -1868,7 +1868,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
 
   if (ShouldAutoDetermineCompositingToLCDTextSetting()) {
     // This causes compositing state to be modified which dirties the
@@ -5120,7 +5146,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) {
@@ -5121,7 +5147,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) {
 
   if (!device_scale_factor_for_testing_) {
     non_testing_device_scale_factor_ =
@@ -2047,8 +2047,8 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox
     case WebInputEvent::Type::kGestureScrollBegin:
-      scroll_state_data.position_x = event.PositionInWidget().x();
-      scroll_state_data.position_y = event.PositionInWidget().y();
+      scroll_state_data.position_x = event.PositionInWidget().x() / 2.f;
+      scroll_state_data.position_y = event.PositionInWidget().y() / 2.f;
+      scroll_state_data.position_x = ScalePoint(event.PositionInWidget()).x();
+      scroll_state_data.position_y = ScalePoint(event.PositionInWidget()).y();
       scroll_state_data.delta_x_hint = -event.data.scroll_begin.delta_x_hint;
       scroll_state_data.delta_y_hint = -event.data.scroll_begin.delta_y_hint;
       scroll_state_data.is_beginning = true;