fix: compensate CEF OSR backing scale for zoom
- commit
- f82f76a11672a03fba8dee3dd0b07d53759868a1
- author
- brice · · 2026-06-26 05:42 UTC
- parent
- 10629bd
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
2 files · +3 -3
M internal/infrastructure/cef/webview.go +2 -2
| @@ -492,11 +492,11 @@ func cefZoomFromFactor(factor float64) float64 { | |||
| 492 | 492 | } | |
| 493 | 493 | ||
| 494 | 494 | func cefZoomFromPageAndBackingFactor(pageZoom, backingScale float64) float64 { | |
| 495 | - | return cefZoomFromFactor(pageZoom * normalizeScale(backingScale)) | |
| 495 | + | return cefZoomFromFactor(pageZoom / normalizeScale(backingScale)) | |
| 496 | 496 | } | |
| 497 | 497 | ||
| 498 | 498 | func pageZoomFromCEFAndBackingLevel(level, backingScale float64) float64 { | |
| 499 | - | return factorFromCEFZoom(level) / normalizeScale(backingScale) | |
| 499 | + | return factorFromCEFZoom(level) * normalizeScale(backingScale) | |
| 500 | 500 | } | |
| 501 | 501 | ||
| 502 | 502 | func (wv *WebView) applyCEFZoomLevel(host purecef.BrowserHost, factor, cefLevel, backingScale float64) { | |
| @@ -492,11 +492,11 @@ func cefZoomFromFactor(factor float64) float64 { | |||||
| 492 | } | 492 | } | ||
| 493 | 493 | ||||
| 494 | func cefZoomFromPageAndBackingFactor(pageZoom, backingScale float64) float64 { | 494 | func cefZoomFromPageAndBackingFactor(pageZoom, backingScale float64) float64 { | ||
| 495 | - | return cefZoomFromFactor(pageZoom * normalizeScale(backingScale)) | 495 | + | return cefZoomFromFactor(pageZoom / normalizeScale(backingScale)) |
| 496 | } | 496 | } | ||
| 497 | 497 | ||||
| 498 | func pageZoomFromCEFAndBackingLevel(level, backingScale float64) float64 { | 498 | func pageZoomFromCEFAndBackingLevel(level, backingScale float64) float64 { | ||
| 499 | - | return factorFromCEFZoom(level) / normalizeScale(backingScale) | 499 | + | return factorFromCEFZoom(level) * normalizeScale(backingScale) |
| 500 | } | 500 | } | ||
| 501 | 501 | ||||
| 502 | func (wv *WebView) applyCEFZoomLevel(host purecef.BrowserHost, factor, cefLevel, backingScale float64) { | 502 | func (wv *WebView) applyCEFZoomLevel(host purecef.BrowserHost, factor, cefLevel, backingScale float64) { | ||
M internal/infrastructure/cef/webview_zoom_test.go +1 -1
| @@ -23,7 +23,7 @@ func TestZoomConversionsCompensateDeviceSizedOSRBackingInternally(t *testing.T) | |||
| 23 | 23 | for _, pageZoom := range []float64{1.0, 1.75} { | |
| 24 | 24 | t.Run(fmt.Sprintf("backing_%.2f_page_%.2f", backing, pageZoom), func(t *testing.T) { | |
| 25 | 25 | level := cefZoomFromPageAndBackingFactor(pageZoom, backing) | |
| 26 | - | assert.InDelta(t, pageZoom*backing, factorFromCEFZoom(level), 1e-9) | |
| 26 | + | assert.InDelta(t, pageZoom/backing, factorFromCEFZoom(level), 1e-9) | |
| 27 | 27 | assert.InDelta(t, pageZoom, pageZoomFromCEFAndBackingLevel(level, backing), 1e-9) | |
| 28 | 28 | }) | |
| 29 | 29 | } | |
| @@ -23,7 +23,7 @@ func TestZoomConversionsCompensateDeviceSizedOSRBackingInternally(t *testing.T) | |||||
| 23 | for _, pageZoom := range []float64{1.0, 1.75} { | 23 | for _, pageZoom := range []float64{1.0, 1.75} { | ||
| 24 | t.Run(fmt.Sprintf("backing_%.2f_page_%.2f", backing, pageZoom), func(t *testing.T) { | 24 | t.Run(fmt.Sprintf("backing_%.2f_page_%.2f", backing, pageZoom), func(t *testing.T) { | ||
| 25 | level := cefZoomFromPageAndBackingFactor(pageZoom, backing) | 25 | level := cefZoomFromPageAndBackingFactor(pageZoom, backing) | ||
| 26 | - | assert.InDelta(t, pageZoom*backing, factorFromCEFZoom(level), 1e-9) | 26 | + | assert.InDelta(t, pageZoom/backing, factorFromCEFZoom(level), 1e-9) |
| 27 | assert.InDelta(t, pageZoom, pageZoomFromCEFAndBackingLevel(level, backing), 1e-9) | 27 | assert.InDelta(t, pageZoom, pageZoomFromCEFAndBackingLevel(level, backing), 1e-9) | ||
| 28 | }) | 28 | }) | ||
| 29 | } | 29 | } | ||