Cocoa: Fix scroll bar visibility issue in TCocoaWidgetSet.GetScrollbarVisible()

if the following two conditions are met at the same time, it will cause an infinite loop:
1. in macOS system settings, set the scroll bar to always be shown.
2. NSScrollView sets Border to bsSingle (occupies two points)
3. the width of DocumentView just exceeds the visual horizontal size of ScrollView by 1-2 points
This commit is contained in:
rich2014 2024-03-15 22:37:49 +08:00
parent ab4727c101
commit e7b7b114a2

View File

@ -1571,20 +1571,22 @@ begin
begin
sc := NSScrollView(obj);
case SBStyle of
SB_Vert: Result := sc.hasVerticalScroller;
SB_Horz: Result := sc.hasHorizontalScroller;
SB_Vert: Result := sc.hasVerticalScroller and not sc.verticalScroller.isHidden;
SB_Horz: Result := sc.hasHorizontalScroller and not sc.horizontalScroller.isHidden;
else
Result := sc.hasHorizontalScroller and sc.hasVerticalScroller;
Result := sc.hasHorizontalScroller and not sc.horizontalScroller.isHidden
and sc.hasVerticalScroller and not sc.verticalScroller.isHidden;
end;
end
else if obj.isKindOfClass(TCocoaManualScrollView) then
begin
mn := TCocoaManualScrollView(obj);
case SBStyle of
SB_Vert: Result := mn.hasVerticalScroller;
SB_Horz: Result := mn.hasHorizontalScroller;
SB_Vert: Result := mn.hasVerticalScroller and not mn.verticalScroller.isHidden;
SB_Horz: Result := mn.hasHorizontalScroller and not mn.horizontalScroller.isHidden;
else
Result := mn.hasHorizontalScroller and mn.hasVerticalScroller;
Result := mn.hasHorizontalScroller and not mn.horizontalScroller.isHidden
and mn.hasVerticalScroller and not mn.verticalScroller.isHidden;
end;
end
else