diff --git a/patch/patch.cfg b/patch/patch.cfg index b07cfb4a5..c6cfbc2b8 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -516,5 +516,10 @@ patches = [ # Linux: Fix Sharesheet undefined symbol error. # https://bugs.chromium.org/p/chromium/issues/detail?id=1123388 'name': 'chrome_browser_sharesheet_1123388', + }, + { + # Windows/Linux: Fix scrolling in popup lists with high-dpi. + # https://crrev.com/97514ca869 + 'name': 'webkit_widget_base_2444320', } ] diff --git a/patch/patches/webkit_widget_base_2444320.patch b/patch/patches/webkit_widget_base_2444320.patch new file mode 100644 index 000000000..f23b4e9a0 --- /dev/null +++ b/patch/patches/webkit_widget_base_2444320.patch @@ -0,0 +1,15 @@ +diff --git third_party/blink/renderer/platform/widget/widget_base.cc third_party/blink/renderer/platform/widget/widget_base.cc +index 048460f4dd81..59a70580ded0 100644 +--- third_party/blink/renderer/platform/widget/widget_base.cc ++++ third_party/blink/renderer/platform/widget/widget_base.cc +@@ -1281,8 +1281,8 @@ gfx::Point WidgetBase::BlinkSpaceToFlooredDIPs(const gfx::Point& point) { + return point; + // TODO(danakj): Should this be GetScreenInfo() so it changes under emulation? + // TODO(dtapuska): Determine if this should be a floor vs rounded. +- return gfx::ScaleToFlooredPoint( +- point, client_->GetOriginalScreenInfo().device_scale_factor); ++ float reverse = 1 / client_->GetOriginalScreenInfo().device_scale_factor; ++ return gfx::ScaleToFlooredPoint(point, reverse); + } + + gfx::Size WidgetBase::DIPsToCeiledBlinkSpace(const gfx::Size& size) {