fix(macos): масштаб канвы берём у окна контрола, а не у главного экрана

backingScaleFactor главного экрана врёт, когда окно лежит на другом
мониторе. Спрашиваем масштаб у NSWindow того NSView, которому принадлежит
паинтбокс: это ровно то число, в котором Cocoa рисует эту канву, и оно
меняется само при перетаскивании окна между мониторами.

Objective-C по-прежнему живёт только в MacScale; наружу торчит
кроссплатформенная GetControlScale, которая на Windows/Linux сворачивается
в Result := 1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 21:20:53 +03:00
co-authored by Claude Opus 4.8
parent fd8769898a
commit 388687d684
5 changed files with 63 additions and 3 deletions
+1 -1
View File
@@ -261,7 +261,7 @@ begin
// Окно могли перетащить на монитор с другим масштабом — кэш линейки тогда
// держит битмап прежнего разрешения, его надо выбросить.
NewScale := GetScreenScale;
NewScale := GetControlScale(PB);
if NewScale <> FScale then
begin
FScale := NewScale;