diff options
author | Sarper Akdemir <sarper.akdemir.extern@allotropia.de> | 2023-10-26 14:43:59 +0300 |
---|---|---|
committer | Sarper Akdemir <sarper.akdemir.extern@allotropia.de> | 2023-11-06 09:04:01 +0100 |
commit | 806656ce4b20aa5b096fe3f072060f6302117afc (patch) | |
tree | 83611f3ac6538384dc10f41acbd3df44ad913612 /vcl | |
parent | b1e24664de424a626f78b9fe002bf4d47c8907d5 (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.cxx | 31 |
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); |