From 394bf64515273985b30f77033c95277b41f021c4 Mon Sep 17 00:00:00 2001 From: Tomaž Vajngerl Date: Tue, 29 Jan 2019 13:53:48 +0100 Subject: Draw basic combobox from the theme definition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2ed631676be878bd5e89872077ab47937aabbf7a Reviewed-on: https://gerrit.libreoffice.org/68697 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl --- vcl/source/gdi/FileDefinitionWidgetDraw.cxx | 25 ++++++++++++++++++++++--- vcl/source/gdi/WidgetDefinitionReader.cxx | 5 +++++ 2 files changed, 27 insertions(+), 3 deletions(-) (limited to 'vcl/source') diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx index a287f2c0fee7..6681d2190dd2 100644 --- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx +++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx @@ -42,7 +42,7 @@ FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics) pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true; } -bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType eType, ControlPart /*ePart*/) +bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType eType, ControlPart ePart) { switch (eType) { @@ -52,7 +52,9 @@ bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType eType, Contr case ControlType::Checkbox: return true; case ControlType::Combobox: - return false; + if (ePart == ControlPart::HasBackgroundTexture) + return false; + return true; case ControlType::Editbox: case ControlType::EditboxNoBorder: case ControlType::MultilineEditbox: @@ -248,7 +250,21 @@ bool FileDefinitionWidgetDraw::drawNativeControl(ControlType eType, ControlPart } break; case ControlType::Combobox: - break; + { + std::shared_ptr pPart + = m_aWidgetDefinition.getDefinition(eType, ePart); + if (pPart) + { + auto aStates = pPart->getStates(eState, rValue); + if (!aStates.empty()) + { + std::shared_ptr pState = aStates.back(); + munchDrawCommands(pState->mpDrawCommands, m_rGraphics, nX, nY, nWidth, nHeight); + bOK = true; + } + } + } + break; case ControlType::Editbox: case ControlType::EditboxNoBorder: case ControlType::MultilineEditbox: @@ -309,6 +325,9 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion( case ControlType::Checkbox: rNativeContentRegion = tools::Rectangle(Point(), Size(48, 32)); return true; + case ControlType::Radiobutton: + rNativeContentRegion = tools::Rectangle(Point(), Size(32, 32)); + return true; default: break; } diff --git a/vcl/source/gdi/WidgetDefinitionReader.cxx b/vcl/source/gdi/WidgetDefinitionReader.cxx index 40dcbcee45bb..f37385cc09b9 100644 --- a/vcl/source/gdi/WidgetDefinitionReader.cxx +++ b/vcl/source/gdi/WidgetDefinitionReader.cxx @@ -153,6 +153,11 @@ bool getControlTypeForXmlString(OString const& rString, ControlType& reType) reType = ControlType::Checkbox; bReturn = true; } + else if (rString == "combobox") + { + reType = ControlType::Combobox; + bReturn = true; + } return bReturn; } -- cgit