summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorSarper Akdemir <sarper.akdemir.extern@allotropia.de>2023-10-26 14:43:59 +0300
committerSarper Akdemir <sarper.akdemir.extern@allotropia.de>2023-11-06 09:04:01 +0100
commit806656ce4b20aa5b096fe3f072060f6302117afc (patch)
tree83611f3ac6538384dc10f41acbd3df44ad913612 /vcl
parentb1e24664de424a626f78b9fe002bf4d47c8907d5 (diff)
tdf#157518: vcl: add native macOS rendering support for LevelBar control
Uses NSLevelIndicator to render LevelBar control on macOS. Closely follows the existing implementation for ControlType::Progress Change-Id: Ibd38e172b8b6297e6322cfe9d5a1b0a6ef0f0656 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158504 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/osx/salnativewidgets.cxx31
1 files changed, 31 insertions, 0 deletions
diff --git a/vcl/osx/salnativewidgets.cxx b/vcl/osx/salnativewidgets.cxx
index 46d13e7473c6..8a7e81fd5d86 100644
--- a/vcl/osx/salnativewidgets.cxx
+++ b/vcl/osx/salnativewidgets.cxx
@@ -194,6 +194,7 @@ bool AquaSalGraphics::isNativeControlSupported(ControlType nType, ControlPart nP
|| nPart == ControlPart::MenuItemRadioMark)
return true;
break;
+ case ControlType::LevelBar:
case ControlType::Progress:
case ControlType::IntroProgress:
if (nPart == ControlPart::Entire)
@@ -611,6 +612,35 @@ bool AquaGraphicsBackendBase::performDrawNativeControl(ControlType nType,
bOK = true;
}
break;
+ case ControlType::LevelBar:
+ {
+ NSRect rect = { NSZeroPoint, NSMakeSize(rc.size.width, rc.size.height) };
+ NSLevelIndicator* pBox = [[NSLevelIndicator alloc] initWithFrame:rect];
+ [pBox setLevelIndicatorStyle: NSLevelIndicatorStyleContinuousCapacity];
+ [pBox setMinValue: 0];
+ [pBox setMaxValue: rc.size.width];
+ [pBox setCriticalValue: rc.size.width * 35.0 / 100.0];
+ [pBox setWarningValue: rc.size.width * 70.0 / 100.0];
+ [pBox setDoubleValue: aValue.getNumericVal()];
+
+ CGContextSaveGState(context);
+ CGContextTranslateCTM(context, rc.origin.x, rc.origin.y);
+
+ NSGraphicsContext* savedContext = [NSGraphicsContext currentContext];
+ NSGraphicsContext* graphicsContext = [NSGraphicsContext graphicsContextWithCGContext:context flipped:NO];
+ [NSGraphicsContext setCurrentContext: graphicsContext];
+
+ [pBox drawRect: rect];
+
+ [NSGraphicsContext setCurrentContext: savedContext];
+
+ CGContextRestoreGState(context);
+
+ [pBox release];
+
+ bOK = true;
+ }
+ break;
case ControlType::Progress:
case ControlType::IntroProgress:
{
@@ -1104,6 +1134,7 @@ bool AquaSalGraphics::getNativeControlRegion(ControlType nType,
toReturn = true;
}
break;
+ case ControlType::LevelBar:
case ControlType::Progress:
{
tools::Rectangle aRect(aCtrlBoundRect);