[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - 71 commits - include/basegfx include/vcl offapi/com Repository.mk svgio/CppunitTest_svgio_read.mk svgio/inc svgio/Library_svgio.mk svgio/Module_svgio.mk svgio/qa svgio/source vcl/CppunitTest_vcl_widget_definition_reader_test.mk vcl/headless vcl/inc vcl/Library_vcl.mk vcl/Module_vcl.mk vcl/Package_theme_definitions.mk vcl/qa vcl/quartz vcl/source vcl/uiconfig vcl/unx
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Mar 11 12:55:28 UTC 2019
Repository.mk | 1
include/basegfx/DrawCommands.hxx | 99 +
include/vcl/alpha.hxx | 14
offapi/com/sun/star/graphic/XSvgParser.idl | 14
svgio/CppunitTest_svgio_read.mk | 67
svgio/Library_svgio.mk | 1
svgio/Module_svgio.mk | 1
svgio/inc/svgnode.hxx | 12
svgio/inc/svgvisitor.hxx | 41
svgio/qa/cppunit/SvgRead.cxx | 144 +
svgio/qa/cppunit/data/path.svg | 3
svgio/source/svgreader/svgnode.cxx | 4
svgio/source/svgreader/svgvisitor.cxx | 130 +
svgio/source/svguno/xsvgparser.cxx | 116 +
vcl/CppunitTest_vcl_widget_definition_reader_test.mk | 52
vcl/Library_vcl.mk | 3
vcl/Module_vcl.mk | 6
vcl/Package_theme_definitions.mk | 54
vcl/headless/svpgdi.cxx | 9
vcl/inc/FileDefinitionWidgetDraw.hxx | 57
vcl/inc/salgdi.hxx | 21
vcl/inc/widgetdraw/WidgetDefinition.hxx | 280 +++
vcl/inc/widgetdraw/WidgetDefinitionReader.hxx | 45
vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx | 97 +
vcl/qa/cppunit/widgetdraw/data/definition1.xml | 82 +
vcl/quartz/salgdi.cxx | 4
vcl/source/gdi/FileDefinitionWidgetDraw.cxx | 926 ++++++++++++
vcl/source/gdi/WidgetDefinition.cxx | 194 ++
vcl/source/gdi/WidgetDefinitionReader.cxx | 473 ++++++
vcl/source/gdi/salgdilayout.cxx | 61
vcl/source/outdev/nativecontrols.cxx | 2
vcl/uiconfig/theme_definitions/arrow-down.svgx | 5
vcl/uiconfig/theme_definitions/arrow-up.svgx | 5
vcl/uiconfig/theme_definitions/combobox-disabled.svgx | 4
vcl/uiconfig/theme_definitions/combobox.svgx | 4
vcl/uiconfig/theme_definitions/common-rect-disabled.svgx | 3
vcl/uiconfig/theme_definitions/common-rect.svgx | 3
vcl/uiconfig/theme_definitions/definition.xml | 466 ++++++
vcl/uiconfig/theme_definitions/pushbutton-default.svgx | 3
vcl/uiconfig/theme_definitions/pushbutton-disabled.svgx | 3
vcl/uiconfig/theme_definitions/pushbutton-rollover.svgx | 3
vcl/uiconfig/theme_definitions/scrollbar-horizontal.svgx | 4
vcl/uiconfig/theme_definitions/scrollbar-vertical.svgx | 4
vcl/uiconfig/theme_definitions/slider-button.svgx | 3
vcl/uiconfig/theme_definitions/spinbox-left-disabled.svgx | 4
vcl/uiconfig/theme_definitions/spinbox-left-pressed.svgx | 4
vcl/uiconfig/theme_definitions/spinbox-left-rollover.svgx | 4
vcl/uiconfig/theme_definitions/spinbox-left.svgx | 4
vcl/uiconfig/theme_definitions/spinbox-right-disabled.svgx | 7
vcl/uiconfig/theme_definitions/spinbox-right-pressed.svgx | 5
vcl/uiconfig/theme_definitions/spinbox-right-rollover.svgx | 5
vcl/uiconfig/theme_definitions/spinbox-right.svgx | 5
vcl/uiconfig/theme_definitions/switch-off-disabled.svgx | 182 ++
vcl/uiconfig/theme_definitions/switch-off-pressed.svgx | 159 ++
vcl/uiconfig/theme_definitions/switch-off.svgx | 182 ++
vcl/uiconfig/theme_definitions/switch-on-disabled.svgx | 144 +
vcl/uiconfig/theme_definitions/switch-on-pressed.svgx | 146 +
vcl/uiconfig/theme_definitions/switch-on.svgx | 144 +
vcl/uiconfig/theme_definitions/tabitem-first-selected.svgx | 3
vcl/uiconfig/theme_definitions/tabitem-first.svgx | 3
vcl/uiconfig/theme_definitions/tabitem-last-selected.svgx | 3
vcl/uiconfig/theme_definitions/tabitem-last.svgx | 3
vcl/uiconfig/theme_definitions/tabitem-middle-selected.svgx | 3
vcl/uiconfig/theme_definitions/tabitem-middle.svgx | 3
vcl/uiconfig/theme_definitions/tick-off-disabled.svgx | 93 +
vcl/uiconfig/theme_definitions/tick-off-pressed.svgx | 126 +
vcl/uiconfig/theme_definitions/tick-off.svgx | 113 +
vcl/uiconfig/theme_definitions/tick-on-disabled.svgx | 125 +
vcl/uiconfig/theme_definitions/tick-on-pressed.svgx | 116 +
vcl/uiconfig/theme_definitions/tick-on.svgx | 116 +
vcl/unx/gtk/salnativewidgets-gtk.cxx | 2
71 files changed, 5166 insertions(+), 61 deletions(-)
New commits:
commit 8a74c84622dc8258d8741e29378ce5a919ad1330
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon Mar 11 12:11:28 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
fix build failures (diff between mastwr and cp-6.0)
Change-Id: Ieb9be180b3a9f8fb33c7a1089a8ef35e66b082ec
diff --git a/svgio/source/svguno/xsvgparser.cxx b/svgio/source/svguno/xsvgparser.cxx
index 22c8d24481ba..015ac547945d 100644
--- a/svgio/source/svguno/xsvgparser.cxx
+++ b/svgio/source/svguno/xsvgparser.cxx
@@ -192,7 +192,7 @@ namespace svgio
parseSvgXML(xSvgStream, xSvgDocHdl);
// decompose to primitives
- for (std::unique_ptr<SvgNode> const & pCandidate : pSvgDocHdl->getSvgDocument().getSvgNodeVector())
+ for (SvgNode* const & pCandidate : pSvgDocHdl->getSvgDocument().getSvgNodeVector())
{
if (Display_none != pCandidate->getDisplay())
{
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index e321734e9a6e..0799c68d8775 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -23,6 +23,9 @@
#include <vcl/bitmapex.hxx>
#include <vcl/BitmapTools.hxx>
+#include <outdata.hxx>
+#include <impbmp.hxx>
+
#include <vcl/pngwrite.hxx>
#include <comphelper/seqstream.hxx>
@@ -188,19 +191,17 @@ void drawFromDrawCommands(gfx::DrawRoot const& rDrawRoot, SalGraphics& rGraphics
if (rRectangle.mpFillColor)
{
rGraphics.SetLineColor();
- rGraphics.SetFillColor(Color(*rRectangle.mpFillColor));
- rGraphics.DrawPolyPolygon(basegfx::B2DHomMatrix(),
- basegfx::B2DPolyPolygon(aB2DPolygon), 0.0f, nullptr);
+ rGraphics.SetFillColor(ImplColorToSal(Color(*rRectangle.mpFillColor)));
+ rGraphics.DrawPolyPolygon(basegfx::B2DPolyPolygon(aB2DPolygon), 0.0f, nullptr);
}
if (rRectangle.mpStrokeColor)
{
- rGraphics.SetLineColor(Color(*rRectangle.mpStrokeColor));
+ rGraphics.SetLineColor(ImplColorToSal(Color(*rRectangle.mpStrokeColor)));
rGraphics.SetFillColor();
rGraphics.DrawPolyLine(
- basegfx::B2DHomMatrix(), aB2DPolygon, 0.0f,
+ aB2DPolygon, 0.0f,
basegfx::B2DVector(rRectangle.mnStrokeWidth, rRectangle.mnStrokeWidth),
- basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND, 0.0f, false,
- nullptr);
+ basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND, 0.0f, nullptr);
}
}
break;
@@ -235,19 +236,19 @@ void drawFromDrawCommands(gfx::DrawRoot const& rDrawRoot, SalGraphics& rGraphics
if (rPath.mpFillColor)
{
rGraphics.SetLineColor();
- rGraphics.SetFillColor(Color(*rPath.mpFillColor));
- rGraphics.DrawPolyPolygon(basegfx::B2DHomMatrix(), aPolyPolygon, 0.0f, nullptr);
+ rGraphics.SetFillColor(ImplColorToSal(Color(*rPath.mpFillColor)));
+ rGraphics.DrawPolyPolygon(aPolyPolygon, 0.0f, nullptr);
}
if (rPath.mpStrokeColor)
{
- rGraphics.SetLineColor(Color(*rPath.mpStrokeColor));
+ rGraphics.SetLineColor(ImplColorToSal(Color(*rPath.mpStrokeColor)));
rGraphics.SetFillColor();
for (auto const& rPolygon : aPolyPolygon)
{
rGraphics.DrawPolyLine(
- basegfx::B2DHomMatrix(), rPolygon, 0.0f,
+ rPolygon, 0.0f,
basegfx::B2DVector(rPath.mnStrokeWidth, rPath.mnStrokeWidth),
- basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND, 0.0f, false,
+ basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND, 0.0f,
nullptr);
}
}
@@ -281,16 +282,15 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
rRectDrawCommand.mnRy / rRect.getHeight() * 2.0);
rGraphics.SetLineColor();
- rGraphics.SetFillColor(rRectDrawCommand.maFillColor);
- rGraphics.DrawPolyPolygon(basegfx::B2DHomMatrix(),
- basegfx::B2DPolyPolygon(aB2DPolygon), 0.0f, nullptr);
- rGraphics.SetLineColor(rRectDrawCommand.maStrokeColor);
+ rGraphics.SetFillColor(ImplColorToSal(rRectDrawCommand.maFillColor));
+ rGraphics.DrawPolyPolygon(basegfx::B2DPolyPolygon(aB2DPolygon), 0.0f, nullptr);
+ rGraphics.SetLineColor(ImplColorToSal(rRectDrawCommand.maStrokeColor));
rGraphics.SetFillColor();
- rGraphics.DrawPolyLine(basegfx::B2DHomMatrix(), aB2DPolygon, 0.0f,
+ rGraphics.DrawPolyLine(aB2DPolygon, 0.0f,
basegfx::B2DVector(rRectDrawCommand.mnStrokeWidth,
rRectDrawCommand.mnStrokeWidth),
basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND,
- 0.0f, false, nullptr);
+ 0.0f, nullptr);
}
break;
case DrawCommandType::CIRCLE:
@@ -306,10 +306,9 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
basegfx::B2DPolygon aB2DPolygon = basegfx::utils::createPolygonFromEllipse(
rRect.getCenter(), rRect.getWidth() / 2.0, rRect.getHeight() / 2.0);
- rGraphics.SetLineColor(rCircleDrawCommand.maStrokeColor);
- rGraphics.SetFillColor(rCircleDrawCommand.maFillColor);
- rGraphics.DrawPolyPolygon(basegfx::B2DHomMatrix(),
- basegfx::B2DPolyPolygon(aB2DPolygon), 0.0f, nullptr);
+ rGraphics.SetLineColor(ImplColorToSal(rCircleDrawCommand.maStrokeColor));
+ rGraphics.SetFillColor(ImplColorToSal(rCircleDrawCommand.maFillColor));
+ rGraphics.DrawPolyPolygon(basegfx::B2DPolyPolygon(aB2DPolygon), 0.0f, nullptr);
}
break;
case DrawCommandType::LINE:
@@ -320,7 +319,7 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
Size aRectSize(nWidth - 1, nHeight - 1);
rGraphics.SetFillColor();
- rGraphics.SetLineColor(rLineDrawCommand.maStrokeColor);
+ rGraphics.SetLineColor(ImplColorToSal(rLineDrawCommand.maStrokeColor));
basegfx::B2DPolygon aB2DPolygon{
{ aRectPoint.X() + (aRectSize.Width() * rLineDrawCommand.mfX1),
@@ -329,11 +328,11 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
aRectPoint.Y() + (aRectSize.Height() * rLineDrawCommand.mfY2) },
};
- rGraphics.DrawPolyLine(basegfx::B2DHomMatrix(), aB2DPolygon, 0.0f,
+ rGraphics.DrawPolyLine(aB2DPolygon, 0.0f,
basegfx::B2DVector(rLineDrawCommand.mnStrokeWidth,
rLineDrawCommand.mnStrokeWidth),
basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND,
- 0.0f, false, nullptr);
+ 0.0f, nullptr);
}
break;
case DrawCommandType::IMAGE:
@@ -352,12 +351,12 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
nImageHeight / nScaleFactor);
if (!!aBitmap)
{
- const std::shared_ptr<SalBitmap> pSalBitmap
- = aBitmap.GetBitmap().ImplGetSalBitmap();
+ SalBitmap* pSalBitmap
+ = aBitmap.GetBitmap().ImplGetImpBitmap()->ImplGetSalBitmap();
if (aBitmap.IsAlpha())
{
- const std::shared_ptr<SalBitmap> pSalBitmapAlpha
- = aBitmap.GetAlpha().ImplGetSalBitmap();
+ SalBitmap* pSalBitmapAlpha
+ = aBitmap.GetAlpha().ImplGetImpBitmap()->ImplGetSalBitmap();
rGraphics.DrawBitmap(aTR, *pSalBitmap, *pSalBitmapAlpha, nullptr);
}
else
commit 7dddcceeeb2a47e528223d3728d6b916ba5a801a
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 22:27:54 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: slight window borders, use font 10 instead of 12
Change-Id: I6b0ba769817894b99c3f757d23948783a66fce12
Reviewed-on: https://gerrit.libreoffice.org/69023
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
Tested-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 2513e6864fee07da9ec8ea5489ada82de0991b15)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 59f0947e7eea..e321734e9a6e 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -830,7 +830,6 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
return true;
}
break;
-
default:
break;
}
@@ -895,7 +894,7 @@ bool FileDefinitionWidgetDraw::updateSettings(AllSettings& rSettings)
aStyleSet.SetToolTextColor(pDefinitionStyle->maToolTextColor);
aStyleSet.SetFontColor(pDefinitionStyle->maFontColor);
- vcl::Font aFont(FAMILY_SWISS, Size(0, 12));
+ vcl::Font aFont(FAMILY_SWISS, Size(0, 10));
aFont.SetCharSet(osl_getThreadTextEncoding());
aFont.SetWeight(WEIGHT_NORMAL);
aFont.SetFamilyName("Liberation Sans");
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index a4394de98ec5..e91953109554 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -361,7 +361,7 @@
<tabbody>
<part value="Entire">
<state>
- <rect stroke="#FFFFFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
+ <rect stroke="#f4f5f5" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
</state>
</part>
</tabbody>
@@ -369,12 +369,12 @@
<windowbackground>
<part value="BackgroundWindow">
<state>
- <rect stroke="#FFFFFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
+ <rect stroke="#f4f5f5" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
</state>
</part>
<part value="BackgroundDialog">
<state>
- <rect stroke="#FFFFFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
+ <rect stroke="#f4f5f5" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
</state>
</part>
</windowbackground>
commit b30f2bb81032485b233b72af7b9736165e0b8e54
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 22:26:42 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: support disabled pushbutton
Change-Id: I8c6e019f5d1f12c85334f3440e09ef755ed6863d
Reviewed-on: https://gerrit.libreoffice.org/69022
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 5d535ffbe34b09a75f8e41fc46be1ed0eb1fbdfa)
diff --git a/vcl/Package_theme_definitions.mk b/vcl/Package_theme_definitions.mk
index 143152d7327a..a30ca8179850 100644
--- a/vcl/Package_theme_definitions.mk
+++ b/vcl/Package_theme_definitions.mk
@@ -35,6 +35,7 @@ $(eval $(call gb_Package_add_files,vcl_theme_definitions,$(LIBO_SHARE_FOLDER)/th
common-rect-disabled.svgx \
pushbutton-default.svgx \
pushbutton-rollover.svgx \
+ pushbutton-disabled.svgx \
tabitem-first.svgx \
tabitem-middle.svgx \
tabitem-last.svgx \
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 4789b9a844ed..a4394de98ec5 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -67,12 +67,15 @@
<pushbutton>
<part value="Entire">
- <state>
+ <state enabled="true">
<external source="pushbutton-default.svgx" />
</state>
<state enabled="true" rollover="true">
<external source="pushbutton-rollover.svgx" />
</state>
+ <state enabled="false">
+ <external source="pushbutton-disabled.svgx" />
+ </state>
</part>
</pushbutton>
diff --git a/vcl/uiconfig/theme_definitions/pushbutton-disabled.svgx b/vcl/uiconfig/theme_definitions/pushbutton-disabled.svgx
new file mode 100644
index 000000000000..e4c1f63599d7
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/pushbutton-disabled.svgx
@@ -0,0 +1,3 @@
+<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
+ <rect x=".5" y=".5" width="43" height="25" rx="2" ry="2" fill="#fff" stroke="#8e8e93"/>
+</svg>
commit 4ca6f4bf5598e75682a9894e672b0b79aaa4d121
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 21:54:04 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: add support for menubar, menupopup and tooltip
But they are not used - for now.
Change-Id: I93a74f5a9e52791fd08afbb5502427a0684d60cf
Reviewed-on: https://gerrit.libreoffice.org/69021
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 7e5fe834e722d51b5e82ecddfe549ec21c7a225e)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 5c0920bca4d6..59f0947e7eea 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -121,12 +121,13 @@ bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType eType, Contr
return true;
case ControlType::Menubar:
case ControlType::MenuPopup:
- return false;
+ return true;
case ControlType::Progress:
return true;
case ControlType::IntroProgress:
- case ControlType::Tooltip:
return false;
+ case ControlType::Tooltip:
+ return true;
case ControlType::WindowBackground:
case ControlType::Frame:
case ControlType::ListNode:
@@ -581,17 +582,23 @@ bool FileDefinitionWidgetDraw::drawNativeControl(ControlType eType, ControlPart
}
break;
case ControlType::Menubar:
- break;
case ControlType::MenuPopup:
- break;
+ {
+ bOK = resolveDefinition(eType, ePart, eState, rValue, nX, nY, nWidth, nHeight);
+ }
+ break;
case ControlType::Progress:
{
bOK = resolveDefinition(eType, ePart, eState, rValue, nX, nY, nWidth, nHeight);
}
break;
case ControlType::IntroProgress:
- case ControlType::Tooltip:
break;
+ case ControlType::Tooltip:
+ {
+ bOK = resolveDefinition(eType, ePart, eState, rValue, nX, nY, nWidth, nHeight);
+ }
+ break;
case ControlType::WindowBackground:
case ControlType::Frame:
{
diff --git a/vcl/source/gdi/WidgetDefinitionReader.cxx b/vcl/source/gdi/WidgetDefinitionReader.cxx
index f52757d37629..c183cb717e9c 100644
--- a/vcl/source/gdi/WidgetDefinitionReader.cxx
+++ b/vcl/source/gdi/WidgetDefinitionReader.cxx
@@ -139,28 +139,32 @@ ControlPart xmlStringToControlPart(OString const& sPart)
bool getControlTypeForXmlString(OString const& rString, ControlType& reType)
{
- static std::unordered_map<OString, ControlType> aPartMap
- = { { "pushbutton", ControlType::Pushbutton },
- { "radiobutton", ControlType::Radiobutton },
- { "checkbox", ControlType::Checkbox },
- { "combobox", ControlType::Combobox },
- { "editbox", ControlType::Editbox },
- { "listbox", ControlType::Listbox },
- { "scrollbar", ControlType::Scrollbar },
- { "spinbox", ControlType::Spinbox },
- { "slider", ControlType::Slider },
- { "fixedline", ControlType::Fixedline },
- { "progress", ControlType::Progress },
- { "tabitem", ControlType::TabItem },
- { "tabheader", ControlType::TabHeader },
- { "tabpane", ControlType::TabPane },
- { "tabbody", ControlType::TabBody },
- { "frame", ControlType::Frame },
- { "windowbackground", ControlType::WindowBackground },
- { "toolbar", ControlType::Toolbar },
- { "listnode", ControlType::ListNode },
- { "listnet", ControlType::ListNet },
- { "listheader", ControlType::ListHeader } };
+ static std::unordered_map<OString, ControlType> aPartMap = {
+ { "pushbutton", ControlType::Pushbutton },
+ { "radiobutton", ControlType::Radiobutton },
+ { "checkbox", ControlType::Checkbox },
+ { "combobox", ControlType::Combobox },
+ { "editbox", ControlType::Editbox },
+ { "listbox", ControlType::Listbox },
+ { "scrollbar", ControlType::Scrollbar },
+ { "spinbox", ControlType::Spinbox },
+ { "slider", ControlType::Slider },
+ { "fixedline", ControlType::Fixedline },
+ { "progress", ControlType::Progress },
+ { "tabitem", ControlType::TabItem },
+ { "tabheader", ControlType::TabHeader },
+ { "tabpane", ControlType::TabPane },
+ { "tabbody", ControlType::TabBody },
+ { "frame", ControlType::Frame },
+ { "windowbackground", ControlType::WindowBackground },
+ { "toolbar", ControlType::Toolbar },
+ { "listnode", ControlType::ListNode },
+ { "listnet", ControlType::ListNet },
+ { "listheader", ControlType::ListHeader },
+ { "menubar", ControlType::Menubar },
+ { "menupopup", ControlType::MenuPopup },
+ { "tooltip", ControlType::Tooltip },
+ };
auto const& rIterator = aPartMap.find(rString);
if (rIterator != aPartMap.end())
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 46346286756c..4789b9a844ed 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -452,4 +452,12 @@
</part>
</listheader>
+ <menubar>
+ </menubar>
+
+ <menupopup>
+ </menupopup>
+
+ <tooltip>
+ </tooltip>
</widgets>
commit 1e1fc114c861eb61825a314196d94f4e03441dec
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 21:30:28 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: change color for window background and frame
Change-Id: I37f1524db71eea2912ffb65fdd7a00605e6b1d4d
Reviewed-on: https://gerrit.libreoffice.org/69017
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
Tested-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit e089b75ba2758183e6eb389d4070560c8989c4e4)
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 23a19de392d5..46346286756c 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -366,25 +366,20 @@
<windowbackground>
<part value="BackgroundWindow">
<state>
- <rect stroke="#FF0000" fill="#FF0000" stroke-width="1" rx="1" ry="1"/>
+ <rect stroke="#FFFFFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
</state>
</part>
<part value="BackgroundDialog">
<state>
- <rect stroke="#0000FF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
+ <rect stroke="#FFFFFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
</state>
</part>
</windowbackground>
<frame>
- <part value="Entire">
- <state>
- <rect stroke="#00FF00" fill="#00FF00" stroke-width="1" rx="1" ry="1"/>
- </state>
- </part>
<part value="Border">
<state>
- <rect stroke="#00FF00" fill="#00FF00" stroke-width="1" rx="1" ry="1"/>
+ <rect stroke="#FFFFFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1"/>
</state>
</part>
</frame>
commit 1b965b2855426b6b1ff07d8e3b35b13fb23e11b1
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 21:29:25 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: take into account scaling factor for images
Change-Id: I65bd71dfd113fae33aee7c2b60b945e065314f80
Reviewed-on: https://gerrit.libreoffice.org/69016
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
Tested-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit cbfe46bf79ac89f7cd1916eeaaf5f10164038535)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index b51d98b2c073..5c0920bca4d6 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -27,6 +27,7 @@
#include <comphelper/seqstream.hxx>
#include <comphelper/processfactory.hxx>
+#include <comphelper/lok.hxx>
#include <com/sun/star/graphic/SvgTools.hpp>
#include <basegfx/DrawCommands.hxx>
@@ -336,13 +337,18 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
break;
case DrawCommandType::IMAGE:
{
+ double nScaleFactor = 1.0;
+ if (comphelper::LibreOfficeKit::isActive())
+ nScaleFactor = comphelper::LibreOfficeKit::getDPIScale();
+
auto const& rDrawCommand = static_cast<ImageDrawCommand const&>(*pDrawCommand);
SvFileStream aFileStream(rDrawCommand.msSource, StreamMode::READ);
BitmapEx aBitmap;
- vcl::bitmap::loadFromSvg(aFileStream, "", aBitmap, 1.0);
+ vcl::bitmap::loadFromSvg(aFileStream, "", aBitmap, nScaleFactor);
long nImageWidth = aBitmap.GetSizePixel().Width();
long nImageHeight = aBitmap.GetSizePixel().Height();
- SalTwoRect aTR(0, 0, nImageWidth, nImageHeight, nX, nY, nImageWidth, nImageHeight);
+ SalTwoRect aTR(0, 0, nImageWidth, nImageHeight, nX, nY, nImageWidth / nScaleFactor,
+ nImageHeight / nScaleFactor);
if (!!aBitmap)
{
const std::shared_ptr<SalBitmap> pSalBitmap
commit 65ed11775250c2c72444b46eca369f21d82164b3
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 21:23:06 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: draw slider button from svg, left and right track
Change-Id: Iaba4a67845699d795c719d0259e93bb6c72df470
Reviewed-on: https://gerrit.libreoffice.org/69015
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 100ea3038b033b6b168860e203e893ae8f67b9c1)
diff --git a/vcl/Package_theme_definitions.mk b/vcl/Package_theme_definitions.mk
index d9cc421fe794..143152d7327a 100644
--- a/vcl/Package_theme_definitions.mk
+++ b/vcl/Package_theme_definitions.mk
@@ -47,6 +47,7 @@ $(eval $(call gb_Package_add_files,vcl_theme_definitions,$(LIBO_SHARE_FOLDER)/th
combobox-disabled.svgx \
arrow-up.svgx \
arrow-down.svgx \
+ slider-button.svgx \
))
# vim: set noet sw=4 ts=4:
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index b557021f4601..b51d98b2c073 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -529,17 +529,35 @@ bool FileDefinitionWidgetDraw::drawNativeControl(ControlType eType, ControlPart
break;
case ControlType::Slider:
{
- bOK = resolveDefinition(eType, ePart, eState, rValue, nX, nY, nWidth, nHeight);
+ const SliderValue* pSliderValue = static_cast<const SliderValue*>(&rValue);
+ long nThumbX = pSliderValue->maThumbRect.Left();
+ long nThumbY = pSliderValue->maThumbRect.Top();
+ long nThumbWidth = pSliderValue->maThumbRect.GetWidth() - 1;
+ long nThumbHeight = pSliderValue->maThumbRect.GetHeight() - 1;
- if (bOK)
+ if (ePart == ControlPart::TrackHorzArea)
+ {
+ long nCenterX = nThumbX + nThumbWidth / 2;
+
+ bOK = resolveDefinition(eType, ControlPart::TrackHorzLeft, eState, rValue, nX, nY,
+ nCenterX - nX, nHeight);
+ if (bOK)
+ bOK = resolveDefinition(eType, ControlPart::TrackHorzRight, eState, rValue,
+ nCenterX, nY, nX + nWidth - nCenterX, nHeight);
+ }
+ else if (ePart == ControlPart::TrackVertArea)
{
- const SliderValue* pSliderValue = static_cast<const SliderValue*>(&rValue);
+ long nCenterY = nThumbY + nThumbHeight / 2;
- long nThumbX = pSliderValue->maThumbRect.Left();
- long nThumbY = pSliderValue->maThumbRect.Top();
- long nThumbWidth = pSliderValue->maThumbRect.GetWidth() - 1;
- long nThumbHeight = pSliderValue->maThumbRect.GetHeight() - 1;
+ bOK = resolveDefinition(eType, ControlPart::TrackVertUpper, eState, rValue, nX, nY,
+ nWidth, nCenterY - nY);
+ if (bOK)
+ bOK = resolveDefinition(eType, ControlPart::TrackVertLower, eState, rValue, nY,
+ nCenterY, nWidth, nY + nHeight - nCenterY);
+ }
+ if (bOK)
+ {
bOK = resolveDefinition(eType, ControlPart::Button,
eState | pSliderValue->mnThumbState, rValue, nThumbX,
nThumbY, nThumbWidth, nThumbHeight);
@@ -791,6 +809,14 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
}
}
break;
+ case ControlType::Slider:
+ if (ePart == ControlPart::ThumbHorz || ePart == ControlPart::ThumbVert)
+ {
+ rNativeContentRegion = tools::Rectangle(aLocation, Size(28, 28));
+ rNativeBoundingRegion = rNativeContentRegion;
+ return true;
+ }
+ break;
default:
break;
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index bdb1e700715b..23a19de392d5 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -270,17 +270,27 @@
<slider>
<part value="Button">
<state>
- <circ stroke="#AAAAAA" fill="#FFFFFF" stroke-width="1" rx="7" ry="7"/>
+ <image source="slider-button.svgx" />
</state>
</part>
- <part value="TrackHorzArea">
+ <part value="TrackHorzLeft">
+ <state>
+ <line stroke="#007AFF" stroke-width="6" x1="0.0" y1="0.5" x2="1.0" y2="0.5"/>
+ </state>
+ </part>
+ <part value="TrackHorzRight">
<state>
- <line stroke="#007AFF" fill="#007AFF" stroke-width="10" x1="0.0" y1="0.5" x2="1.0" y2="0.5"/>
+ <line stroke="#8e8e93" stroke-width="6" x1="0.0" y1="0.5" x2="1.0" y2="0.5"/>
</state>
</part>
- <part value="TrackVertArea">
+ <part value="TrackVertUpper">
+ <state>
+ <line stroke="#007AFF" stroke-width="6" x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+ </state>
+ </part>
+ <part value="TrackVertLower">
<state>
- <line stroke="#007AFF" fill="#007AFF" stroke-width="10" x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
+ <line stroke="#8e8e93" stroke-width="6" x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
</state>
</part>
</slider>
diff --git a/vcl/uiconfig/theme_definitions/slider-button.svgx b/vcl/uiconfig/theme_definitions/slider-button.svgx
new file mode 100644
index 000000000000..66772c7521e6
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/slider-button.svgx
@@ -0,0 +1,3 @@
+<svg version="1.1" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg">
+ <rect x="2" y="2" width="24" height="24" rx="12" ry="12" fill="#fff" stroke="#8e8e93" stroke-width=".92308"/>
+</svg>
commit 424fc5ef1f6ff38b2400d0a1a3080d15fc77799c
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 19:55:42 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: draw listheader button and arrow
Also adds support for signaling if arrow points up or down, which
is signaled through extra attribute.
Change-Id: I5a87cdb31e18150495df521bf925c7b983e2313a
Reviewed-on: https://gerrit.libreoffice.org/69013
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 8ff3e9a418a6f154d3ecb2df669fbd70361ae0c0)
diff --git a/vcl/Package_theme_definitions.mk b/vcl/Package_theme_definitions.mk
index 0ca04e765039..d9cc421fe794 100644
--- a/vcl/Package_theme_definitions.mk
+++ b/vcl/Package_theme_definitions.mk
@@ -45,6 +45,8 @@ $(eval $(call gb_Package_add_files,vcl_theme_definitions,$(LIBO_SHARE_FOLDER)/th
scrollbar-vertical.svgx \
combobox.svgx \
combobox-disabled.svgx \
+ arrow-up.svgx \
+ arrow-down.svgx \
))
# vim: set noet sw=4 ts=4:
diff --git a/vcl/inc/widgetdraw/WidgetDefinition.hxx b/vcl/inc/widgetdraw/WidgetDefinition.hxx
index 7e1505c8daae..77baf0922cd8 100644
--- a/vcl/inc/widgetdraw/WidgetDefinition.hxx
+++ b/vcl/inc/widgetdraw/WidgetDefinition.hxx
@@ -202,8 +202,10 @@ public:
sal_Int32 mnMarginHeight;
OString msOrientation;
- std::vector<std::shared_ptr<WidgetDefinitionState>>
- getStates(ControlType eType, ControlState eState, ImplControlValue const& rValue);
+ std::vector<std::shared_ptr<WidgetDefinitionState>> getStates(ControlType eType,
+ ControlPart ePart,
+ ControlState eState,
+ ImplControlValue const& rValue);
std::vector<std::shared_ptr<WidgetDefinitionState>> maStates;
};
diff --git a/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx b/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx
index c56379cc70c7..75dc559067fc 100644
--- a/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx
+++ b/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx
@@ -57,7 +57,8 @@ void WidgetDefinitionReaderTest::testRead()
= ControlState::DEFAULT | ControlState::ENABLED | ControlState::ROLLOVER;
std::vector<std::shared_ptr<vcl::WidgetDefinitionState>> aStates
= aDefinition.getDefinition(ControlType::Pushbutton, ControlPart::Entire)
- ->getStates(ControlType::Pushbutton, eState, ImplControlValue());
+ ->getStates(ControlType::Pushbutton, ControlPart::Entire, eState,
+ ImplControlValue());
CPPUNIT_ASSERT_EQUAL(size_t(2), aStates.size());
@@ -71,7 +72,7 @@ void WidgetDefinitionReaderTest::testRead()
{
std::vector<std::shared_ptr<vcl::WidgetDefinitionState>> aStates
= aDefinition.getDefinition(ControlType::Radiobutton, ControlPart::Entire)
- ->getStates(ControlType::Radiobutton, ControlState::NONE,
+ ->getStates(ControlType::Radiobutton, ControlPart::Entire, ControlState::NONE,
ImplControlValue(ButtonValue::On));
CPPUNIT_ASSERT_EQUAL(size_t(1), aStates.size());
CPPUNIT_ASSERT_EQUAL(size_t(2), aStates[0]->mpDrawCommands.size());
@@ -80,7 +81,7 @@ void WidgetDefinitionReaderTest::testRead()
{
std::vector<std::shared_ptr<vcl::WidgetDefinitionState>> aStates
= aDefinition.getDefinition(ControlType::Radiobutton, ControlPart::Entire)
- ->getStates(ControlType::Radiobutton, ControlState::NONE,
+ ->getStates(ControlType::Radiobutton, ControlPart::Entire, ControlState::NONE,
ImplControlValue(ButtonValue::Off));
CPPUNIT_ASSERT_EQUAL(size_t(1), aStates.size());
CPPUNIT_ASSERT_EQUAL(size_t(1), aStates[0]->mpDrawCommands.size());
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 9085753dbf25..b557021f4601 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -402,7 +402,7 @@ bool FileDefinitionWidgetDraw::resolveDefinition(ControlType eType, ControlPart
auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ePart);
if (pPart)
{
- auto const& aStates = pPart->getStates(eType, eState, rValue);
+ auto const& aStates = pPart->getStates(eType, ePart, eState, rValue);
if (!aStates.empty())
{
// use last defined state
diff --git a/vcl/source/gdi/WidgetDefinition.cxx b/vcl/source/gdi/WidgetDefinition.cxx
index 5d316298da37..668fe74bf403 100644
--- a/vcl/source/gdi/WidgetDefinition.cxx
+++ b/vcl/source/gdi/WidgetDefinition.cxx
@@ -26,7 +26,7 @@ std::shared_ptr<WidgetDefinitionPart> WidgetDefinition::getDefinition(ControlTyp
}
std::vector<std::shared_ptr<WidgetDefinitionState>>
-WidgetDefinitionPart::getStates(ControlType eType, ControlState eState,
+WidgetDefinitionPart::getStates(ControlType eType, ControlPart ePart, ControlState eState,
ImplControlValue const& rValue)
{
std::vector<std::shared_ptr<WidgetDefinitionState>> aStatesToAdd;
@@ -69,26 +69,43 @@ WidgetDefinitionPart::getStates(ControlType eType, ControlState eState,
bAdd = false;
}
- if (eType == ControlType::TabItem)
- {
- OString sExtra;
-
- auto const& rTabItemValue = static_cast<TabitemValue const&>(rValue);
-
- if (rTabItemValue.isLeftAligned() && rTabItemValue.isRightAligned()
- && rTabItemValue.isFirst() && rTabItemValue.isLast())
- sExtra = "first_last";
- else if (rTabItemValue.isLeftAligned() || rTabItemValue.isFirst())
- sExtra = "first";
- else if (rTabItemValue.isRightAligned() || rTabItemValue.isLast())
- sExtra = "last";
- else
- sExtra = "middle";
+ OString sExtra = "any";
- if (state->msExtra != "any" && state->msExtra != sExtra)
+ switch (eType)
+ {
+ case ControlType::TabItem:
+ {
+ auto const& rTabItemValue = static_cast<TabitemValue const&>(rValue);
+
+ if (rTabItemValue.isLeftAligned() && rTabItemValue.isRightAligned()
+ && rTabItemValue.isFirst() && rTabItemValue.isLast())
+ sExtra = "first_last";
+ else if (rTabItemValue.isLeftAligned() || rTabItemValue.isFirst())
+ sExtra = "first";
+ else if (rTabItemValue.isRightAligned() || rTabItemValue.isLast())
+ sExtra = "last";
+ else
+ sExtra = "middle";
+ }
+ break;
+ case ControlType::ListHeader:
{
- bAdd = false;
+ if (ePart == ControlPart::Arrow)
+ {
+ if (rValue.getNumericVal() == 1)
+ sExtra = "down";
+ else
+ sExtra = "up";
+ }
}
+ break;
+ default:
+ break;
+ }
+
+ if (state->msExtra != "any" && state->msExtra != sExtra)
+ {
+ bAdd = false;
}
if (bAdd)
diff --git a/vcl/uiconfig/theme_definitions/arrow-down.svgx b/vcl/uiconfig/theme_definitions/arrow-down.svgx
new file mode 100644
index 000000000000..032df3df64b9
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/arrow-down.svgx
@@ -0,0 +1,5 @@
+<svg version="1.1" viewBox="0 0 11 20" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(245.46 49.566)">
+ <path d="m-242.75-44.074h5.5903l-2.7951 8z" fill="#007aff" stroke="#007aff"/>
+ </g>
+</svg>
diff --git a/vcl/uiconfig/theme_definitions/arrow-up.svgx b/vcl/uiconfig/theme_definitions/arrow-up.svgx
new file mode 100644
index 000000000000..524906f31018
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/arrow-up.svgx
@@ -0,0 +1,5 @@
+<svg version="1.1" viewBox="0 0 11 20" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(245.46 49.566)">
+ <path d="m-242.75-35.066h5.5903l-2.7951-7.9855z" fill="#007aff" stroke="#007aff"/>
+ </g>
+</svg>
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 848f0e600d89..bdb1e700715b 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -432,6 +432,19 @@
</listnet>
<listheader>
+ <part value="Button">
+ <state>
+ <rect stroke="#8e8e93" fill="#f4f5f5" stroke-width="1" rx="1" ry="1"/>
+ </state>
+ </part>
+ <part value="Arrow">
+ <state extra="up">
+ <image source="arrow-up.svgx"/>
+ </state>
+ <state extra="down">
+ <image source="arrow-down.svgx"/>
+ </state>
+ </part>
</listheader>
</widgets>
commit a946badc191eda0500159ee023427548e2472c4b
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 17:26:29 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:13:00 2019 +0100
widget theme: support "height" for editbox and set to "32"
Change-Id: Iff48c83b6f1b28bc7fbf7646c399a844a3155970
Reviewed-on: https://gerrit.libreoffice.org/69012
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 3ae8b9301fa817968f3115639bc8a5f2170d179e)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 4fb2fd315f8d..9085753dbf25 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -728,10 +728,13 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
case ControlType::EditboxNoBorder:
case ControlType::MultilineEditbox:
{
- //auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+ sal_Int32 nHeight = rBoundingControlRegion.GetHeight();
- Size aSize(rBoundingControlRegion.GetWidth(),
- std::max(rBoundingControlRegion.GetHeight(), 32L));
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
+ if (pPart)
+ nHeight = std::max(nHeight, pPart->mnHeight);
+
+ Size aSize(rBoundingControlRegion.GetWidth(), nHeight);
rNativeContentRegion = tools::Rectangle(aLocation, aSize);
rNativeBoundingRegion = rNativeContentRegion;
rNativeBoundingRegion.expand(2);
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 027b78e5fd6e..848f0e600d89 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -147,7 +147,7 @@
</combobox>
<editbox>
- <part value="Entire">
+ <part value="Entire" height="32">
<state enabled="true">
<external source="common-rect.svgx" />
</state>
commit 9dd81227b13033c174f1b63ab6a9857dde13158a
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun Mar 10 17:24:00 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
widget theme: toolbar drawing definition - separator, buttons
Change-Id: Ic8574c0f0c3c51526254c34d820977a0fbb520a0
Reviewed-on: https://gerrit.libreoffice.org/69011
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit cdabde598e9569b9427b70d616e50f22daa1bb61)
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 0a6f696320b5..027b78e5fd6e 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -191,12 +191,10 @@
<spinbox>
<part value="Entire">
- <state>
- </state>
+ <state/> <!-- Intentional empty - don't draw anything -->
</part>
<part value="SubEdit">
- <state>
- </state>
+ <state/> <!-- Intentional empty - don't draw anything -->
</part>
<part value="ButtonDown" width="44" height="26">
<state enabled="true">
@@ -395,32 +393,34 @@
</part>
<part value="ThumbHorz">
- <state>
- <rect stroke="#00FFFF" fill="#00FFFF" stroke-width="1" rx="1" ry="1"/>
- </state>
+ <state/> <!-- Intentional empty - don't draw anything -->
</part>
<part value="ThumbVert">
- <state>
- <rect stroke="#00FFFF" fill="#00FFFF" stroke-width="1" rx="1" ry="1"/>
- </state>
+ <state/> <!-- Intentional empty - don't draw anything -->
</part>
<part value="SeparatorVert">
<state>
- <rect stroke="#00FFFF" fill="#00FFFF" stroke-width="1" rx="1" ry="1"/>
+ <line stroke="#007AFF" fill="#007AFF" stroke-width="2" x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
</state>
</part>
<part value="SeparatorHorz">
<state>
- <rect stroke="#00FFFF" fill="#00FFFF" stroke-width="1" rx="1" ry="1"/>
+ <line stroke="#007AFF" fill="#007AFF" stroke-width="2" x1="0.0" y1="0.5" x2="1.0" y2="0.5"/>
</state>
</part>
<part value="Button">
- <state>
- <rect stroke="#00FFFF" fill="#00FFFF" stroke-width="1" rx="1" ry="1"/>
+ <state enabled="true" button-value="true">
+ <rect stroke="#c0c0c0" fill="#c0c0c0" stroke-width="1" rx="4" ry="4"/>
+ </state>
+ <state enabled="true" button-value="false">
+ <rect stroke="#f4f5f5" fill="#f4f5f5" stroke-width="1" rx="4" ry="4"/>
+ </state>
+ <state enabled="false">
+ <rect stroke="#007AFF" fill="#00FF00" stroke-width="1" rx="4" ry="4"/>
</state>
</part>
</toolbar>
commit 922fb093b602f4569c316e8d6300432110198313
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat Mar 9 14:57:28 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
widget theme: adjust draw positions of editbox, combobox, listbox
Change-Id: Id14b5530c994e10bb9f45f036b43025c73c7ac83
Reviewed-on: https://gerrit.libreoffice.org/68977
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
Tested-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit a66e0f83cb488e024319f67add61b08528a39596)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 17b7c2c833db..4fb2fd315f8d 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -734,6 +734,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
std::max(rBoundingControlRegion.GetHeight(), 32L));
rNativeContentRegion = tools::Rectangle(aLocation, aSize);
rNativeBoundingRegion = rNativeContentRegion;
+ rNativeBoundingRegion.expand(2);
return true;
}
break;
@@ -764,7 +765,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
{
Point aPoint(aLocation.X() + rBoundingControlRegion.GetWidth()
- aComboButtonSize.Width(),
- aLocation.Y());
+ aLocation.Y() + 1);
rNativeContentRegion = tools::Rectangle(aPoint, aComboButtonSize);
rNativeBoundingRegion = rNativeContentRegion;
return true;
@@ -773,8 +774,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
{
Size aSize(rBoundingControlRegion.GetWidth() - aComboButtonSize.Width(),
aComboButtonSize.Height());
- rNativeContentRegion = tools::Rectangle(aLocation, aSize);
- rNativeContentRegion.expand(1);
+ rNativeContentRegion = tools::Rectangle(aLocation + Point(1, 1), aSize);
rNativeBoundingRegion = rNativeContentRegion;
return true;
}
commit 73112b3817beaab1517c5b92fbfa452e08c486e9
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat Mar 9 14:50:57 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
only read and parse widget definition once from the file
Change-Id: I71c095e5e5dd21650663e6fb717bcb22958a597f
Reviewed-on: https://gerrit.libreoffice.org/68976
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit e9393e392e95ec8fcab77662790482aa0adf0f78)
diff --git a/vcl/inc/FileDefinitionWidgetDraw.hxx b/vcl/inc/FileDefinitionWidgetDraw.hxx
index dc3ee7f8967c..24b9e0ab8a26 100644
--- a/vcl/inc/FileDefinitionWidgetDraw.hxx
+++ b/vcl/inc/FileDefinitionWidgetDraw.hxx
@@ -22,7 +22,7 @@ class FileDefinitionWidgetDraw : public vcl::WidgetDrawInterface
{
private:
SalGraphics& m_rGraphics;
- WidgetDefinition m_aWidgetDefinition;
+ std::shared_ptr<WidgetDefinition> m_pWidgetDefinition;
bool resolveDefinition(ControlType eType, ControlPart ePart, ControlState eState,
const ImplControlValue& rValue, long nX, long nY, long nWidth,
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index bc2636491829..17b7c2c833db 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -44,14 +44,28 @@ OUString lcl_getThemeDefinitionPath()
return sPath;
}
+std::shared_ptr<WidgetDefinition> setWidgetDefinition(OUString const& rDefinitionFile,
+ OUString const& rDefinitionResourcesPath)
+{
+ static std::shared_ptr<WidgetDefinition> spDefinition;
+ if (!spDefinition)
+ {
+ spDefinition = std::make_shared<WidgetDefinition>();
+ WidgetDefinitionReader aReader(rDefinitionFile, rDefinitionResourcesPath);
+ aReader.read(*spDefinition);
+ }
+ return spDefinition;
+}
+
} // end anonymous namespace
FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
: m_rGraphics(rGraphics)
{
OUString sDefinitionBasePath = lcl_getThemeDefinitionPath();
- WidgetDefinitionReader aReader(sDefinitionBasePath + "definition.xml", sDefinitionBasePath);
- aReader.read(m_aWidgetDefinition);
+
+ m_pWidgetDefinition
+ = setWidgetDefinition(sDefinitionBasePath + "definition.xml", sDefinitionBasePath);
ImplSVData* pSVData = ImplGetSVData();
pSVData->maNWFData.mbNoFocusRects = true;
@@ -385,7 +399,7 @@ bool FileDefinitionWidgetDraw::resolveDefinition(ControlType eType, ControlPart
long nWidth, long nHeight)
{
bool bOK = false;
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ePart);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ePart);
if (pPart)
{
auto const& aStates = pPart->getStates(eType, eState, rValue);
@@ -588,13 +602,13 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
case ControlType::Spinbox:
{
auto const& pButtonUpPart
- = m_aWidgetDefinition.getDefinition(eType, ControlPart::ButtonUp);
+ = m_pWidgetDefinition->getDefinition(eType, ControlPart::ButtonUp);
if (!pButtonUpPart)
return false;
Size aButtonSizeUp(pButtonUpPart->mnWidth, pButtonUpPart->mnHeight);
auto const& pButtonDownPart
- = m_aWidgetDefinition.getDefinition(eType, ControlPart::ButtonDown);
+ = m_pWidgetDefinition->getDefinition(eType, ControlPart::ButtonDown);
if (!pButtonDownPart)
return false;
Size aButtonSizeDown(pButtonDownPart->mnWidth, pButtonDownPart->mnHeight);
@@ -679,7 +693,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
break;
case ControlType::Checkbox:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
if (!pPart)
return false;
@@ -689,7 +703,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
}
case ControlType::Radiobutton:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
if (!pPart)
return false;
@@ -699,7 +713,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
}
case ControlType::TabItem:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
if (!pPart)
return false;
@@ -743,7 +757,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
case ControlType::Combobox:
case ControlType::Listbox:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::ButtonDown);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::ButtonDown);
Size aComboButtonSize(pPart->mnWidth, pPart->mnHeight);
if (ePart == ControlPart::ButtonDown)
@@ -786,7 +800,7 @@ bool FileDefinitionWidgetDraw::updateSettings(AllSettings& rSettings)
{
StyleSettings aStyleSet = rSettings.GetStyleSettings();
- auto pDefinitionStyle = m_aWidgetDefinition.mpStyle;
+ auto pDefinitionStyle = m_pWidgetDefinition->mpStyle;
aStyleSet.SetFaceColor(pDefinitionStyle->maFaceColor);
aStyleSet.SetCheckedColor(pDefinitionStyle->maCheckedColor);
commit 9bfd89b077fd885fd074bb47f3dd19392793e026
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat Mar 9 13:49:40 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
Separate style colors from WidgetDefinition into its own class
Change-Id: I11cd695da81bae7b49b2319b89e5c560ba64f04e
Reviewed-on: https://gerrit.libreoffice.org/68975
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 4e25914b165d7ed64b3026af758fb857676aacd5)
diff --git a/vcl/inc/widgetdraw/WidgetDefinition.hxx b/vcl/inc/widgetdraw/WidgetDefinition.hxx
index c183edd9e315..7e1505c8daae 100644
--- a/vcl/inc/widgetdraw/WidgetDefinition.hxx
+++ b/vcl/inc/widgetdraw/WidgetDefinition.hxx
@@ -208,7 +208,7 @@ public:
std::vector<std::shared_ptr<WidgetDefinitionState>> maStates;
};
-class VCL_DLLPUBLIC WidgetDefinition
+class VCL_DLLPUBLIC WidgetDefinitionStyle
{
public:
Color maFaceColor;
@@ -261,7 +261,12 @@ public:
Color maVisitedLinkColor;
Color maToolTextColor;
Color maFontColor;
+};
+class VCL_DLLPUBLIC WidgetDefinition
+{
+public:
+ std::shared_ptr<WidgetDefinitionStyle> mpStyle;
std::unordered_map<ControlTypeAndPart, std::shared_ptr<WidgetDefinitionPart>> maDefinitions;
std::shared_ptr<WidgetDefinitionPart> getDefinition(ControlType eType, ControlPart ePart);
};
diff --git a/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx b/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx
index 20b3270267dd..c56379cc70c7 100644
--- a/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx
+++ b/vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx
@@ -39,20 +39,17 @@ void WidgetDefinitionReaderTest::testRead()
{
vcl::WidgetDefinition aDefinition;
- CPPUNIT_ASSERT_EQUAL(OUString("000000"), aDefinition.maFaceColor.AsRGBHexString());
- CPPUNIT_ASSERT_EQUAL(OUString("000000"), aDefinition.maCheckedColor.AsRGBHexString());
- CPPUNIT_ASSERT_EQUAL(OUString("000000"), aDefinition.maLightColor.AsRGBHexString());
-
vcl::WidgetDefinitionReader aReader(getFullUrl("definition1.xml"), getFullUrl(""));
aReader.read(aDefinition);
- CPPUNIT_ASSERT_EQUAL(OUString("123456"), aDefinition.maFaceColor.AsRGBHexString());
- CPPUNIT_ASSERT_EQUAL(OUString("234567"), aDefinition.maCheckedColor.AsRGBHexString());
- CPPUNIT_ASSERT_EQUAL(OUString("345678"), aDefinition.maLightColor.AsRGBHexString());
+ CPPUNIT_ASSERT_EQUAL(OUString("123456"), aDefinition.mpStyle->maFaceColor.AsRGBHexString());
+ CPPUNIT_ASSERT_EQUAL(OUString("234567"), aDefinition.mpStyle->maCheckedColor.AsRGBHexString());
+ CPPUNIT_ASSERT_EQUAL(OUString("345678"), aDefinition.mpStyle->maLightColor.AsRGBHexString());
- CPPUNIT_ASSERT_EQUAL(OUString("ffffff"), aDefinition.maVisitedLinkColor.AsRGBHexString());
- CPPUNIT_ASSERT_EQUAL(OUString("ffffff"), aDefinition.maToolTextColor.AsRGBHexString());
- CPPUNIT_ASSERT_EQUAL(OUString("ffffff"), aDefinition.maFontColor.AsRGBHexString());
+ CPPUNIT_ASSERT_EQUAL(OUString("ffffff"),
+ aDefinition.mpStyle->maVisitedLinkColor.AsRGBHexString());
+ CPPUNIT_ASSERT_EQUAL(OUString("ffffff"), aDefinition.mpStyle->maToolTextColor.AsRGBHexString());
+ CPPUNIT_ASSERT_EQUAL(OUString("ffffff"), aDefinition.mpStyle->maFontColor.AsRGBHexString());
// Pushbutton
{
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index abd55fb0bca0..bc2636491829 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -786,56 +786,58 @@ bool FileDefinitionWidgetDraw::updateSettings(AllSettings& rSettings)
{
StyleSettings aStyleSet = rSettings.GetStyleSettings();
- aStyleSet.SetFaceColor(m_aWidgetDefinition.maFaceColor);
- aStyleSet.SetCheckedColor(m_aWidgetDefinition.maCheckedColor);
- aStyleSet.SetLightColor(m_aWidgetDefinition.maLightColor);
- aStyleSet.SetLightBorderColor(m_aWidgetDefinition.maLightBorderColor);
- aStyleSet.SetShadowColor(m_aWidgetDefinition.maShadowColor);
- aStyleSet.SetDarkShadowColor(m_aWidgetDefinition.maDarkShadowColor);
- aStyleSet.SetButtonTextColor(m_aWidgetDefinition.maButtonTextColor);
- aStyleSet.SetButtonRolloverTextColor(m_aWidgetDefinition.maButtonRolloverTextColor);
- aStyleSet.SetRadioCheckTextColor(m_aWidgetDefinition.maRadioCheckTextColor);
- aStyleSet.SetGroupTextColor(m_aWidgetDefinition.maGroupTextColor);
- aStyleSet.SetLabelTextColor(m_aWidgetDefinition.maLabelTextColor);
- aStyleSet.SetWindowColor(m_aWidgetDefinition.maWindowColor);
- aStyleSet.SetWindowTextColor(m_aWidgetDefinition.maWindowTextColor);
- aStyleSet.SetDialogColor(m_aWidgetDefinition.maDialogColor);
- aStyleSet.SetDialogTextColor(m_aWidgetDefinition.maDialogTextColor);
- aStyleSet.SetWorkspaceColor(m_aWidgetDefinition.maWorkspaceColor);
- aStyleSet.SetMonoColor(m_aWidgetDefinition.maMonoColor);
- aStyleSet.SetFieldColor(m_aWidgetDefinition.maFieldColor);
- aStyleSet.SetFieldTextColor(m_aWidgetDefinition.maFieldTextColor);
- aStyleSet.SetFieldRolloverTextColor(m_aWidgetDefinition.maFieldRolloverTextColor);
- aStyleSet.SetActiveColor(m_aWidgetDefinition.maActiveColor);
- aStyleSet.SetActiveTextColor(m_aWidgetDefinition.maActiveTextColor);
- aStyleSet.SetActiveBorderColor(m_aWidgetDefinition.maActiveBorderColor);
- aStyleSet.SetDeactiveColor(m_aWidgetDefinition.maDeactiveColor);
- aStyleSet.SetDeactiveTextColor(m_aWidgetDefinition.maDeactiveTextColor);
- aStyleSet.SetDeactiveBorderColor(m_aWidgetDefinition.maDeactiveBorderColor);
- aStyleSet.SetMenuColor(m_aWidgetDefinition.maMenuColor);
- aStyleSet.SetMenuBarColor(m_aWidgetDefinition.maMenuBarColor);
- aStyleSet.SetMenuBarRolloverColor(m_aWidgetDefinition.maMenuBarRolloverColor);
- aStyleSet.SetMenuBorderColor(m_aWidgetDefinition.maMenuBorderColor);
- aStyleSet.SetMenuTextColor(m_aWidgetDefinition.maMenuTextColor);
- aStyleSet.SetMenuBarTextColor(m_aWidgetDefinition.maMenuBarTextColor);
- aStyleSet.SetMenuBarRolloverTextColor(m_aWidgetDefinition.maMenuBarRolloverTextColor);
- aStyleSet.SetMenuBarHighlightTextColor(m_aWidgetDefinition.maMenuBarHighlightTextColor);
- aStyleSet.SetMenuHighlightColor(m_aWidgetDefinition.maMenuHighlightColor);
- aStyleSet.SetMenuHighlightTextColor(m_aWidgetDefinition.maMenuHighlightTextColor);
- aStyleSet.SetHighlightColor(m_aWidgetDefinition.maHighlightColor);
- aStyleSet.SetHighlightTextColor(m_aWidgetDefinition.maHighlightTextColor);
- aStyleSet.SetActiveTabColor(m_aWidgetDefinition.maActiveTabColor);
- aStyleSet.SetInactiveTabColor(m_aWidgetDefinition.maInactiveTabColor);
- aStyleSet.SetTabTextColor(m_aWidgetDefinition.maTabTextColor);
- aStyleSet.SetTabRolloverTextColor(m_aWidgetDefinition.maTabRolloverTextColor);
- aStyleSet.SetTabHighlightTextColor(m_aWidgetDefinition.maTabHighlightTextColor);
- aStyleSet.SetDisableColor(m_aWidgetDefinition.maDisableColor);
- aStyleSet.SetHelpColor(m_aWidgetDefinition.maHelpColor);
- aStyleSet.SetHelpTextColor(m_aWidgetDefinition.maHelpTextColor);
- aStyleSet.SetLinkColor(m_aWidgetDefinition.maLinkColor);
- aStyleSet.SetVisitedLinkColor(m_aWidgetDefinition.maVisitedLinkColor);
- aStyleSet.SetToolTextColor(m_aWidgetDefinition.maToolTextColor);
- aStyleSet.SetFontColor(m_aWidgetDefinition.maFontColor);
+ auto pDefinitionStyle = m_aWidgetDefinition.mpStyle;
+
+ aStyleSet.SetFaceColor(pDefinitionStyle->maFaceColor);
+ aStyleSet.SetCheckedColor(pDefinitionStyle->maCheckedColor);
+ aStyleSet.SetLightColor(pDefinitionStyle->maLightColor);
+ aStyleSet.SetLightBorderColor(pDefinitionStyle->maLightBorderColor);
+ aStyleSet.SetShadowColor(pDefinitionStyle->maShadowColor);
+ aStyleSet.SetDarkShadowColor(pDefinitionStyle->maDarkShadowColor);
+ aStyleSet.SetButtonTextColor(pDefinitionStyle->maButtonTextColor);
+ aStyleSet.SetButtonRolloverTextColor(pDefinitionStyle->maButtonRolloverTextColor);
+ aStyleSet.SetRadioCheckTextColor(pDefinitionStyle->maRadioCheckTextColor);
+ aStyleSet.SetGroupTextColor(pDefinitionStyle->maGroupTextColor);
+ aStyleSet.SetLabelTextColor(pDefinitionStyle->maLabelTextColor);
+ aStyleSet.SetWindowColor(pDefinitionStyle->maWindowColor);
+ aStyleSet.SetWindowTextColor(pDefinitionStyle->maWindowTextColor);
+ aStyleSet.SetDialogColor(pDefinitionStyle->maDialogColor);
+ aStyleSet.SetDialogTextColor(pDefinitionStyle->maDialogTextColor);
+ aStyleSet.SetWorkspaceColor(pDefinitionStyle->maWorkspaceColor);
+ aStyleSet.SetMonoColor(pDefinitionStyle->maMonoColor);
+ aStyleSet.SetFieldColor(pDefinitionStyle->maFieldColor);
+ aStyleSet.SetFieldTextColor(pDefinitionStyle->maFieldTextColor);
+ aStyleSet.SetFieldRolloverTextColor(pDefinitionStyle->maFieldRolloverTextColor);
+ aStyleSet.SetActiveColor(pDefinitionStyle->maActiveColor);
+ aStyleSet.SetActiveTextColor(pDefinitionStyle->maActiveTextColor);
+ aStyleSet.SetActiveBorderColor(pDefinitionStyle->maActiveBorderColor);
+ aStyleSet.SetDeactiveColor(pDefinitionStyle->maDeactiveColor);
+ aStyleSet.SetDeactiveTextColor(pDefinitionStyle->maDeactiveTextColor);
+ aStyleSet.SetDeactiveBorderColor(pDefinitionStyle->maDeactiveBorderColor);
+ aStyleSet.SetMenuColor(pDefinitionStyle->maMenuColor);
+ aStyleSet.SetMenuBarColor(pDefinitionStyle->maMenuBarColor);
+ aStyleSet.SetMenuBarRolloverColor(pDefinitionStyle->maMenuBarRolloverColor);
+ aStyleSet.SetMenuBorderColor(pDefinitionStyle->maMenuBorderColor);
+ aStyleSet.SetMenuTextColor(pDefinitionStyle->maMenuTextColor);
+ aStyleSet.SetMenuBarTextColor(pDefinitionStyle->maMenuBarTextColor);
+ aStyleSet.SetMenuBarRolloverTextColor(pDefinitionStyle->maMenuBarRolloverTextColor);
+ aStyleSet.SetMenuBarHighlightTextColor(pDefinitionStyle->maMenuBarHighlightTextColor);
+ aStyleSet.SetMenuHighlightColor(pDefinitionStyle->maMenuHighlightColor);
+ aStyleSet.SetMenuHighlightTextColor(pDefinitionStyle->maMenuHighlightTextColor);
+ aStyleSet.SetHighlightColor(pDefinitionStyle->maHighlightColor);
+ aStyleSet.SetHighlightTextColor(pDefinitionStyle->maHighlightTextColor);
+ aStyleSet.SetActiveTabColor(pDefinitionStyle->maActiveTabColor);
+ aStyleSet.SetInactiveTabColor(pDefinitionStyle->maInactiveTabColor);
+ aStyleSet.SetTabTextColor(pDefinitionStyle->maTabTextColor);
+ aStyleSet.SetTabRolloverTextColor(pDefinitionStyle->maTabRolloverTextColor);
+ aStyleSet.SetTabHighlightTextColor(pDefinitionStyle->maTabHighlightTextColor);
+ aStyleSet.SetDisableColor(pDefinitionStyle->maDisableColor);
+ aStyleSet.SetHelpColor(pDefinitionStyle->maHelpColor);
+ aStyleSet.SetHelpTextColor(pDefinitionStyle->maHelpTextColor);
+ aStyleSet.SetLinkColor(pDefinitionStyle->maLinkColor);
+ aStyleSet.SetVisitedLinkColor(pDefinitionStyle->maVisitedLinkColor);
+ aStyleSet.SetToolTextColor(pDefinitionStyle->maToolTextColor);
+ aStyleSet.SetFontColor(pDefinitionStyle->maFontColor);
vcl::Font aFont(FAMILY_SWISS, Size(0, 12));
aFont.SetCharSet(osl_getThreadTextEncoding());
diff --git a/vcl/source/gdi/WidgetDefinitionReader.cxx b/vcl/source/gdi/WidgetDefinitionReader.cxx
index 467e4dbfe2b3..f52757d37629 100644
--- a/vcl/source/gdi/WidgetDefinitionReader.cxx
+++ b/vcl/source/gdi/WidgetDefinitionReader.cxx
@@ -370,60 +370,63 @@ bool WidgetDefinitionReader::read(WidgetDefinition& rWidgetDefinition)
if (!lcl_fileExists(m_rDefinitionFile))
return false;
- SvFileStream aFileStream(m_rDefinitionFile, StreamMode::READ);
+ auto pStyle = std::make_shared<WidgetDefinitionStyle>();
std::unordered_map<OString, Color*> aStyleColorMap = {
- { "faceColor", &rWidgetDefinition.maFaceColor },
- { "checkedColor", &rWidgetDefinition.maCheckedColor },
- { "lightColor", &rWidgetDefinition.maLightColor },
- { "lightBorderColor", &rWidgetDefinition.maLightBorderColor },
- { "shadowColor", &rWidgetDefinition.maShadowColor },
- { "darkShadowColor", &rWidgetDefinition.maDarkShadowColor },
- { "buttonTextColor", &rWidgetDefinition.maButtonTextColor },
- { "buttonRolloverTextColor", &rWidgetDefinition.maButtonRolloverTextColor },
- { "radioCheckTextColor", &rWidgetDefinition.maRadioCheckTextColor },
- { "groupTextColor", &rWidgetDefinition.maGroupTextColor },
- { "labelTextColor", &rWidgetDefinition.maLabelTextColor },
- { "windowColor", &rWidgetDefinition.maWindowColor },
- { "windowTextColor", &rWidgetDefinition.maWindowTextColor },
- { "dialogColor", &rWidgetDefinition.maDialogColor },
- { "dialogTextColor", &rWidgetDefinition.maDialogTextColor },
- { "workspaceColor", &rWidgetDefinition.maWorkspaceColor },
- { "monoColor", &rWidgetDefinition.maMonoColor },
- { "fieldColor", &rWidgetDefinition.maFieldColor },
- { "fieldTextColor", &rWidgetDefinition.maFieldTextColor },
- { "fieldRolloverTextColor", &rWidgetDefinition.maFieldRolloverTextColor },
- { "activeColor", &rWidgetDefinition.maActiveColor },
- { "activeTextColor", &rWidgetDefinition.maActiveTextColor },
- { "activeBorderColor", &rWidgetDefinition.maActiveBorderColor },
- { "deactiveColor", &rWidgetDefinition.maDeactiveColor },
- { "deactiveTextColor", &rWidgetDefinition.maDeactiveTextColor },
- { "deactiveBorderColor", &rWidgetDefinition.maDeactiveBorderColor },
- { "menuColor", &rWidgetDefinition.maMenuColor },
- { "menuBarColor", &rWidgetDefinition.maMenuBarColor },
- { "menuBarRolloverColor", &rWidgetDefinition.maMenuBarRolloverColor },
- { "menuBorderColor", &rWidgetDefinition.maMenuBorderColor },
- { "menuTextColor", &rWidgetDefinition.maMenuTextColor },
- { "menuBarTextColor", &rWidgetDefinition.maMenuBarTextColor },
- { "menuBarRolloverTextColor", &rWidgetDefinition.maMenuBarRolloverTextColor },
- { "menuBarHighlightTextColor", &rWidgetDefinition.maMenuBarHighlightTextColor },
- { "menuHighlightColor", &rWidgetDefinition.maMenuHighlightColor },
- { "menuHighlightTextColor", &rWidgetDefinition.maMenuHighlightTextColor },
- { "highlightColor", &rWidgetDefinition.maHighlightColor },
- { "highlightTextColor", &rWidgetDefinition.maHighlightTextColor },
- { "activeTabColor", &rWidgetDefinition.maActiveTabColor },
- { "inactiveTabColor", &rWidgetDefinition.maInactiveTabColor },
- { "tabTextColor", &rWidgetDefinition.maTabTextColor },
- { "tabRolloverTextColor", &rWidgetDefinition.maTabRolloverTextColor },
- { "tabHighlightTextColor", &rWidgetDefinition.maTabHighlightTextColor },
- { "disableColor", &rWidgetDefinition.maDisableColor },
- { "helpColor", &rWidgetDefinition.maHelpColor },
- { "helpTextColor", &rWidgetDefinition.maHelpTextColor },
- { "linkColor", &rWidgetDefinition.maLinkColor },
- { "visitedLinkColor", &rWidgetDefinition.maVisitedLinkColor },
- { "toolTextColor", &rWidgetDefinition.maToolTextColor },
- { "fontColor", &rWidgetDefinition.maFontColor },
+ { "faceColor", &pStyle->maFaceColor },
+ { "checkedColor", &pStyle->maCheckedColor },
+ { "lightColor", &pStyle->maLightColor },
+ { "lightBorderColor", &pStyle->maLightBorderColor },
+ { "shadowColor", &pStyle->maShadowColor },
+ { "darkShadowColor", &pStyle->maDarkShadowColor },
+ { "buttonTextColor", &pStyle->maButtonTextColor },
+ { "buttonRolloverTextColor", &pStyle->maButtonRolloverTextColor },
+ { "radioCheckTextColor", &pStyle->maRadioCheckTextColor },
+ { "groupTextColor", &pStyle->maGroupTextColor },
+ { "labelTextColor", &pStyle->maLabelTextColor },
+ { "windowColor", &pStyle->maWindowColor },
+ { "windowTextColor", &pStyle->maWindowTextColor },
+ { "dialogColor", &pStyle->maDialogColor },
+ { "dialogTextColor", &pStyle->maDialogTextColor },
+ { "workspaceColor", &pStyle->maWorkspaceColor },
+ { "monoColor", &pStyle->maMonoColor },
+ { "fieldColor", &pStyle->maFieldColor },
+ { "fieldTextColor", &pStyle->maFieldTextColor },
+ { "fieldRolloverTextColor", &pStyle->maFieldRolloverTextColor },
+ { "activeColor", &pStyle->maActiveColor },
+ { "activeTextColor", &pStyle->maActiveTextColor },
+ { "activeBorderColor", &pStyle->maActiveBorderColor },
+ { "deactiveColor", &pStyle->maDeactiveColor },
+ { "deactiveTextColor", &pStyle->maDeactiveTextColor },
+ { "deactiveBorderColor", &pStyle->maDeactiveBorderColor },
+ { "menuColor", &pStyle->maMenuColor },
+ { "menuBarColor", &pStyle->maMenuBarColor },
+ { "menuBarRolloverColor", &pStyle->maMenuBarRolloverColor },
+ { "menuBorderColor", &pStyle->maMenuBorderColor },
+ { "menuTextColor", &pStyle->maMenuTextColor },
+ { "menuBarTextColor", &pStyle->maMenuBarTextColor },
+ { "menuBarRolloverTextColor", &pStyle->maMenuBarRolloverTextColor },
+ { "menuBarHighlightTextColor", &pStyle->maMenuBarHighlightTextColor },
+ { "menuHighlightColor", &pStyle->maMenuHighlightColor },
+ { "menuHighlightTextColor", &pStyle->maMenuHighlightTextColor },
+ { "highlightColor", &pStyle->maHighlightColor },
+ { "highlightTextColor", &pStyle->maHighlightTextColor },
+ { "activeTabColor", &pStyle->maActiveTabColor },
+ { "inactiveTabColor", &pStyle->maInactiveTabColor },
+ { "tabTextColor", &pStyle->maTabTextColor },
+ { "tabRolloverTextColor", &pStyle->maTabRolloverTextColor },
+ { "tabHighlightTextColor", &pStyle->maTabHighlightTextColor },
+ { "disableColor", &pStyle->maDisableColor },
+ { "helpColor", &pStyle->maHelpColor },
+ { "helpTextColor", &pStyle->maHelpTextColor },
+ { "linkColor", &pStyle->maLinkColor },
+ { "visitedLinkColor", &pStyle->maVisitedLinkColor },
+ { "toolTextColor", &pStyle->maToolTextColor },
+ { "fontColor", &pStyle->maFontColor },
};
+ rWidgetDefinition.mpStyle = pStyle;
+
+ SvFileStream aFileStream(m_rDefinitionFile, StreamMode::READ);
tools::XmlWalker aWalker;
if (!aWalker.open(&aFileStream))
commit 4156d3b9330d0fd9260593b0dca707b3c8b69273
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Fri Mar 8 19:00:18 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
Fix multiline tabs drawing of first / last tab
Use is{Left,Right}Aligned instead of is{First,Last}. In multi-line
tabs, not only first/last item needs to be drawn differently, but
also some middle, which is now the first in the new line now.
Change-Id: I81ddde192eca794f16df98d629f47991c59732c7
Reviewed-on: https://gerrit.libreoffice.org/68945
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 86d9b85fb05d3d32fba4642e1231595341612d15)
diff --git a/vcl/source/gdi/WidgetDefinition.cxx b/vcl/source/gdi/WidgetDefinition.cxx
index 25eba80ecb13..5d316298da37 100644
--- a/vcl/source/gdi/WidgetDefinition.cxx
+++ b/vcl/source/gdi/WidgetDefinition.cxx
@@ -75,11 +75,12 @@ WidgetDefinitionPart::getStates(ControlType eType, ControlState eState,
auto const& rTabItemValue = static_cast<TabitemValue const&>(rValue);
- if (rTabItemValue.isFirst() && rTabItemValue.isLast())
+ if (rTabItemValue.isLeftAligned() && rTabItemValue.isRightAligned()
+ && rTabItemValue.isFirst() && rTabItemValue.isLast())
sExtra = "first_last";
- else if (rTabItemValue.isFirst())
+ else if (rTabItemValue.isLeftAligned() || rTabItemValue.isFirst())
sExtra = "first";
- else if (rTabItemValue.isLast())
+ else if (rTabItemValue.isRightAligned() || rTabItemValue.isLast())
sExtra = "last";
else
sExtra = "middle";
commit a1750a87bc2d9a908af3cedc15dd78b32212de8c
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Fri Mar 8 19:44:26 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
Fix crash in widget drawing of a SVG as image
Change-Id: Iaa7e01b49b9c2dcdfa98e4e8bc431dba82fe6bb4
Reviewed-on: https://gerrit.libreoffice.org/68942
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 8de89e1c39b211cb4c39e47c992b03ed33003658)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 606417ac1ca5..abd55fb0bca0 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -329,8 +329,21 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
long nImageWidth = aBitmap.GetSizePixel().Width();
long nImageHeight = aBitmap.GetSizePixel().Height();
SalTwoRect aTR(0, 0, nImageWidth, nImageHeight, nX, nY, nImageWidth, nImageHeight);
- rGraphics.DrawBitmap(aTR, *aBitmap.GetBitmap().ImplGetSalBitmap().get(),
- *aBitmap.GetAlpha().ImplGetSalBitmap().get(), nullptr);
+ if (!!aBitmap)
+ {
+ const std::shared_ptr<SalBitmap> pSalBitmap
+ = aBitmap.GetBitmap().ImplGetSalBitmap();
+ if (aBitmap.IsAlpha())
+ {
+ const std::shared_ptr<SalBitmap> pSalBitmapAlpha
+ = aBitmap.GetAlpha().ImplGetSalBitmap();
+ rGraphics.DrawBitmap(aTR, *pSalBitmap, *pSalBitmapAlpha, nullptr);
+ }
+ else
+ {
+ rGraphics.DrawBitmap(aTR, *pSalBitmap, nullptr);
+ }
+ }
}
break;
case DrawCommandType::EXTERNAL:
commit b3783c28b1c2ec26a54e31b43da3cb6a7494eedc
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Fri Mar 8 08:49:10 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
make it possible to use FileDefinitionWidgetDraw in more backends
Reviewed-on: https://gerrit.libreoffice.org/68898
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit a2bf2ca1e3d398db0caa07fce4d135e6dc8b2f27)
Change-Id: I8871eb49e11d8c72c469230967c3c979091a0f9b
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 75dd5995c28b..11c6fc1d9589 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -562,12 +562,11 @@ SvpSalGraphics::SvpSalGraphics()
, m_ePaintMode(PaintMode::Over)
, m_aTextRenderImpl(*this)
{
- bool bFileDefinitionsWidgetDraw = !!getenv("VCL_DRAW_WIDGETS_FROM_FILE");
-
- if (bFileDefinitionsWidgetDraw)
- m_pWidgetDraw.reset(new vcl::FileDefinitionWidgetDraw(*this));
- else if (comphelper::LibreOfficeKit::isActive())
- m_pWidgetDraw.reset(new vcl::CustomWidgetDraw(*this));
+ if (!initWidgetDrawBackends())
+ {
+ if (comphelper::LibreOfficeKit::isActive())
+ m_pWidgetDraw.reset(new vcl::CustomWidgetDraw(*this));
+ }
}
SvpSalGraphics::~SvpSalGraphics()
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx
index 557447da2e38..48f18635f778 100644
--- a/vcl/inc/salgdi.hxx
+++ b/vcl/inc/salgdi.hxx
@@ -343,8 +343,7 @@ public:
* @param [in] ePart The part of the widget.
* @return true if the platform supports native drawing of the widget type defined by part.
*/
- virtual bool IsNativeControlSupported(
- ControlType eType, ControlPart ePart );
+ bool IsSupported(ControlType eType, ControlPart ePart);
/**
@@ -438,6 +437,11 @@ public:
#endif // ENABLE_CAIRO_CANVAS
+private:
+ bool callGetNativeControlRegion(ControlType nType, ControlPart nPart, const tools::Rectangle& rControlRegion, ControlState nState, const ImplControlValue& aValue, tools::Rectangle &rNativeBoundingRegion, tools::Rectangle &rNativeContentRegion);
+ bool callDrawNativeControl(ControlType nType, ControlPart nPart, const tools::Rectangle& rControlRegion, ControlState nState, const ImplControlValue& aValue, const OUString& rCaption);
+ bool callHitTestNativeControl(ControlType eType, ControlPart nPart, const tools::Rectangle& rControlRegion, const Point& aPos, bool& rIsInside);
+
protected:
virtual bool setClipRegion( const vcl::Region& ) = 0;
@@ -526,6 +530,15 @@ protected:
sal_uLong nSize ) = 0;
/**
+ * Query the platform layer for native control support.
+ *
+ * @param [in] eType The widget type.
+ * @param [in] ePart The part of the widget.
+ * @return true if the platform supports native drawing of the widget type defined by part.
+ */
+ virtual bool IsNativeControlSupported(ControlType eType, ControlPart ePart);
+
+ /**
* Query if a position is inside the native widget part.
*
* Mainly used for scrollbars.
@@ -590,6 +603,7 @@ protected:
tools::Rectangle &rNativeBoundingRegion,
tools::Rectangle &rNativeContentRegion );
+
/** Blend the bitmap with the current buffer */
virtual bool blendBitmap(
const SalTwoRect&,
@@ -649,6 +663,9 @@ protected:
/// flags which hold the SetAntialiasing() value from OutputDevice
bool m_bAntiAliasB2DDraw : 1;
+ // native controls
+ bool initWidgetDrawBackends(bool bForce = false);
+
bool hasWidgetDraw()
{
return bool(m_pWidgetDraw);
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index e78bb16e3f4b..d7aa4d279370 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -29,6 +29,7 @@
#include <osl/process.h>
#include <rtl/bootstrap.h>
#include <rtl/strbuf.hxx>
+#include <comphelper/lok.hxx>
#include <vcl/metric.hxx>
#include <vcl/fontcharmap.hxx>
@@ -227,6 +228,9 @@ AquaSalGraphics::AquaSalGraphics()
mpTextStyle[i] = nullptr;
mpFontData[i] = nullptr;
}
+
+ if (comphelper::LibreOfficeKit::isActive())
+ initWidgetDrawBackends(true);
}
AquaSalGraphics::~AquaSalGraphics()
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index 18b05f19da37..8b87e9872072 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -30,6 +30,7 @@
#include <salgdi.hxx>
#include <salframe.hxx>
#include <basegfx/numeric/ftools.hxx> //for F_PI180
+#include <FileDefinitionWidgetDraw.hxx>
// The only common SalFrame method
@@ -57,6 +58,18 @@ SalGraphics::SalGraphics()
m_nLayout = SalLayoutFlags::BiDiRtl;
}
+bool SalGraphics::initWidgetDrawBackends(bool bForce)
+{
+ bool bFileDefinitionsWidgetDraw = !!getenv("VCL_DRAW_WIDGETS_FROM_FILE");
+
+ if (bFileDefinitionsWidgetDraw || bForce)
+ {
+ m_pWidgetDraw.reset(new vcl::FileDefinitionWidgetDraw(*this));
+ return true;
+ }
+ return false;
+}
+
SalGraphics::~SalGraphics()
{
}
@@ -640,6 +653,22 @@ bool SalGraphics::DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pP
return drawEPS( nX, nY, nWidth, nHeight, pPtr, nSize );
}
+bool SalGraphics::IsSupported(ControlType eType, ControlPart ePart)
+{
+ if (m_pWidgetDraw)
+ return m_pWidgetDraw->isNativeControlSupported(eType, ePart);
+ else
+ return IsNativeControlSupported(eType, ePart);
+}
+
+bool SalGraphics::callHitTestNativeControl(ControlType eType, ControlPart nPart, const tools::Rectangle& rControlRegion, const Point& aPos, bool& rIsInside)
+{
+ if (m_pWidgetDraw)
+ return m_pWidgetDraw->hitTestNativeControl(eType, nPart, rControlRegion, aPos, rIsInside);
+ else
+ return hitTestNativeControl(eType, nPart, rControlRegion, aPos, rIsInside);
+}
+
bool SalGraphics::HitTestNativeScrollbar( ControlPart nPart, const tools::Rectangle& rControlRegion,
const Point& aPos, bool& rIsInside, const OutputDevice *pOutDev )
{
@@ -649,10 +678,10 @@ bool SalGraphics::HitTestNativeScrollbar( ControlPart nPart, const tools::Rectan
tools::Rectangle rgn( rControlRegion );
mirror( pt.X(), pOutDev );
mirror( rgn, pOutDev );
- return hitTestNativeControl( ControlType::Scrollbar, nPart, rgn, pt, rIsInside );
+ return callHitTestNativeControl( ControlType::Scrollbar, nPart, rgn, pt, rIsInside );
}
else
- return hitTestNativeControl( ControlType::Scrollbar, nPart, rControlRegion, aPos, rIsInside );
+ return callHitTestNativeControl( ControlType::Scrollbar, nPart, rControlRegion, aPos, rIsInside );
}
void SalGraphics::mirror( ImplControlValue& rVal, const OutputDevice* pOutDev ) const
@@ -691,9 +720,17 @@ void SalGraphics::mirror( ImplControlValue& rVal, const OutputDevice* pOutDev )
}
}
+bool SalGraphics::callDrawNativeControl(ControlType nType, ControlPart nPart, const tools::Rectangle& rControlRegion, ControlState nState, const ImplControlValue& aValue, const OUString& rCaption)
+{
+ if (m_pWidgetDraw)
+ return m_pWidgetDraw->drawNativeControl(nType, nPart, rControlRegion, nState, aValue, rCaption);
+ else
+ return drawNativeControl(nType, nPart, rControlRegion, nState, aValue, rCaption);
+}
+
bool SalGraphics::DrawNativeControl( ControlType nType, ControlPart nPart, const tools::Rectangle& rControlRegion,
ControlState nState, const ImplControlValue& aValue,
- const OUString& aCaption, const OutputDevice *pOutDev )
+ const OUString& aCaption, const OutputDevice *pOutDev)
{
if( (m_nLayout & SalLayoutFlags::BiDiRtl) || (pOutDev && pOutDev->IsRTLEnabled()) )
{
@@ -703,11 +740,19 @@ bool SalGraphics::DrawNativeControl( ControlType nType, ControlPart nPart, const
mirror(rgn, pOutDev);
std::unique_ptr< ImplControlValue > mirrorValue( aValue.clone());
mirror( *mirrorValue, pOutDev );
- bool bRet = drawNativeControl( nType, nPart, rgn, nState, *mirrorValue, aCaption );
+ bool bRet = callDrawNativeControl(nType, nPart, rgn, nState, *mirrorValue, aCaption);
return bRet;
}
else
- return drawNativeControl( nType, nPart, rControlRegion, nState, aValue, aCaption );
+ return callDrawNativeControl(nType, nPart, rControlRegion, nState, aValue, aCaption);
+}
+
+bool SalGraphics::callGetNativeControlRegion(ControlType nType, ControlPart nPart, const tools::Rectangle& rControlRegion, ControlState nState, const ImplControlValue& aValue, tools::Rectangle &rNativeBoundingRegion, tools::Rectangle &rNativeContentRegion)
+{
+ if (m_pWidgetDraw)
+ return m_pWidgetDraw->getNativeControlRegion(nType, nPart, rControlRegion, nState, aValue, OUString(), rNativeBoundingRegion, rNativeContentRegion);
+ else
+ return getNativeControlRegion(nType, nPart, rControlRegion, nState, aValue, OUString(), rNativeBoundingRegion, rNativeContentRegion);
}
bool SalGraphics::GetNativeControlRegion( ControlType nType, ControlPart nPart, const tools::Rectangle& rControlRegion, ControlState nState,
@@ -720,8 +765,7 @@ bool SalGraphics::GetNativeControlRegion( ControlType nType, ControlPart nPart,
mirror( rgn, pOutDev );
std::unique_ptr< ImplControlValue > mirrorValue( aValue.clone());
mirror( *mirrorValue, pOutDev );
- if( getNativeControlRegion( nType, nPart, rgn, nState, *mirrorValue, OUString(),
- rNativeBoundingRegion, rNativeContentRegion ) )
+ if (callGetNativeControlRegion(nType, nPart, rgn, nState, *mirrorValue, rNativeBoundingRegion, rNativeContentRegion))
{
mirror( rNativeBoundingRegion, pOutDev, true );
mirror( rNativeContentRegion, pOutDev, true );
@@ -730,8 +774,7 @@ bool SalGraphics::GetNativeControlRegion( ControlType nType, ControlPart nPart,
return false;
}
else
- return getNativeControlRegion( nType, nPart, rControlRegion, nState, aValue, OUString(),
- rNativeBoundingRegion, rNativeContentRegion );
+ return callGetNativeControlRegion(nType, nPart, rControlRegion, nState, aValue, rNativeBoundingRegion, rNativeContentRegion);
}
bool SalGraphics::BlendBitmap( const SalTwoRect& rPosAry,
diff --git a/vcl/source/outdev/nativecontrols.cxx b/vcl/source/outdev/nativecontrols.cxx
index 81acddfe2f12..234259f0d6f2 100644
--- a/vcl/source/outdev/nativecontrols.cxx
+++ b/vcl/source/outdev/nativecontrols.cxx
@@ -163,7 +163,7 @@ bool OutputDevice::IsNativeControlSupported( ControlType nType, ControlPart nPar
if ( !AcquireGraphics() )
return false;
- return mpGraphics->IsNativeControlSupported(nType, nPart);
+ return mpGraphics->IsSupported(nType, nPart);
}
bool OutputDevice::HitTestNativeScrollbar(
diff --git a/vcl/unx/gtk/salnativewidgets-gtk.cxx b/vcl/unx/gtk/salnativewidgets-gtk.cxx
index 313af6cc0518..7592ecee34ba 100644
--- a/vcl/unx/gtk/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/salnativewidgets-gtk.cxx
@@ -70,6 +70,8 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow,
m_aClipRegion(true)
{
Init( pFrame, GDK_WINDOW_XID( widget_get_window( pWindow ) ), nXScreen );
+
+ initWidgetDrawBackends();
}
GtkSalGraphics::~GtkSalGraphics()
commit b6eeacd7da8f83ae8825809cc634c86be494e84e
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Mar 7 14:20:31 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
don't need "spinbox-entire" svg anymore
Change-Id: I8385acf7ecd46b7c8b990abb688bd2ddddcb6bc5
Reviewed-on: https://gerrit.libreoffice.org/68867
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit c8919fcbcb2d112b79c60d8b2c404da5606f82bd)
diff --git a/vcl/Package_theme_definitions.mk b/vcl/Package_theme_definitions.mk
index 9c75aa34ba7b..0ca04e765039 100644
--- a/vcl/Package_theme_definitions.mk
+++ b/vcl/Package_theme_definitions.mk
@@ -31,7 +31,6 @@ $(eval $(call gb_Package_add_files,vcl_theme_definitions,$(LIBO_SHARE_FOLDER)/th
spinbox-right-pressed.svgx \
spinbox-right-rollover.svgx \
spinbox-right-disabled.svgx \
- spinbox-entire.svgx \
common-rect.svgx \
common-rect-disabled.svgx \
pushbutton-default.svgx \
diff --git a/vcl/uiconfig/theme_definitions/spinbox-entire.svgx b/vcl/uiconfig/theme_definitions/spinbox-entire.svgx
deleted file mode 100644
index 24a3b12c2d58..000000000000
--- a/vcl/uiconfig/theme_definitions/spinbox-entire.svgx
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
- <rect x=".5" y=".5" width="43" height="25" rx="2" ry="2" fill="#fff" stroke="#007aff"/>
-</svg>
commit ecf3e40777f4f1aa61ab272fba8fb58c93610c6d
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Mar 7 14:16:34 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:59 2019 +0100
widget theme - update editbox, draw from svg
Change-Id: I0dfdaaf74c9b31ecd9b1de511b48dacf2e90f59f
Reviewed-on: https://gerrit.libreoffice.org/68866
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
Tested-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 27b43f1dc45d7f3bec99ccbdc96e334c7f967fbc)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 54aa111431d9..606417ac1ca5 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -701,8 +701,12 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
case ControlType::EditboxNoBorder:
case ControlType::MultilineEditbox:
{
- rNativeBoundingRegion = rBoundingControlRegion;
- rNativeContentRegion = rBoundingControlRegion;
+ //auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+
+ Size aSize(rBoundingControlRegion.GetWidth(),
+ std::max(rBoundingControlRegion.GetHeight(), 32L));
+ rNativeContentRegion = tools::Rectangle(aLocation, aSize);
+ rNativeBoundingRegion = rNativeContentRegion;
return true;
}
break;
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 8c9b1af285d9..0a6f696320b5 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -148,9 +148,11 @@
<editbox>
<part value="Entire">
- <state>
- <rect stroke="#FFFFFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1" />
- <line stroke="#C7C7C7" stroke-width="2" x1="0.0" y1="0.9" x2="1.0" y2="0.9"/>
+ <state enabled="true">
+ <external source="common-rect.svgx" />
+ </state>
+ <state enabled="false">
+ <external source="common-rect-disabled.svgx" />
</state>
</part>
</editbox>
commit fffd40985797d80b4c46591a1f9888cf7aa12da4
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Mar 7 14:10:24 2019 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon Mar 11 12:12:58 2019 +0100
widget theme - update combobox/listbox, draw from svg
Change-Id: Ie5e28883d70ad61340c58bcacd8c2ffb2ced1536
Reviewed-on: https://gerrit.libreoffice.org/68865
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit ce4c486456673e475cb0ae932bc706a7130d21f5)
diff --git a/vcl/Package_theme_definitions.mk b/vcl/Package_theme_definitions.mk
index b51f60555165..9c75aa34ba7b 100644
--- a/vcl/Package_theme_definitions.mk
+++ b/vcl/Package_theme_definitions.mk
@@ -32,6 +32,8 @@ $(eval $(call gb_Package_add_files,vcl_theme_definitions,$(LIBO_SHARE_FOLDER)/th
spinbox-right-rollover.svgx \
spinbox-right-disabled.svgx \
spinbox-entire.svgx \
+ common-rect.svgx \
+ common-rect-disabled.svgx \
pushbutton-default.svgx \
pushbutton-rollover.svgx \
tabitem-first.svgx \
@@ -42,6 +44,8 @@ $(eval $(call gb_Package_add_files,vcl_theme_definitions,$(LIBO_SHARE_FOLDER)/th
tabitem-last-selected.svgx \
scrollbar-horizontal.svgx \
scrollbar-vertical.svgx \
+ combobox.svgx \
+ combobox-disabled.svgx \
))
# vim: set noet sw=4 ts=4:
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 0067fed75954..54aa111431d9 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -723,6 +723,40 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
}
}
break;
+ case ControlType::Combobox:
+ case ControlType::Listbox:
+ {
+ auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::ButtonDown);
+ Size aComboButtonSize(pPart->mnWidth, pPart->mnHeight);
+
+ if (ePart == ControlPart::ButtonDown)
+ {
+ Point aPoint(aLocation.X() + rBoundingControlRegion.GetWidth()
+ - aComboButtonSize.Width(),
+ aLocation.Y());
+ rNativeContentRegion = tools::Rectangle(aPoint, aComboButtonSize);
+ rNativeBoundingRegion = rNativeContentRegion;
+ return true;
+ }
+ else if (ePart == ControlPart::SubEdit)
+ {
+ Size aSize(rBoundingControlRegion.GetWidth() - aComboButtonSize.Width(),
+ aComboButtonSize.Height());
+ rNativeContentRegion = tools::Rectangle(aLocation, aSize);
+ rNativeContentRegion.expand(1);
+ rNativeBoundingRegion = rNativeContentRegion;
+ return true;
+ }
+ else if (ePart == ControlPart::Entire)
+ {
+ Size aSize(rBoundingControlRegion.GetWidth(), aComboButtonSize.Height());
+ rNativeContentRegion = tools::Rectangle(aLocation, aSize);
+ rNativeBoundingRegion = rNativeContentRegion;
+ rNativeBoundingRegion.expand(1);
+ return true;
+ }
+ }
+ break;
default:
break;
diff --git a/vcl/uiconfig/theme_definitions/combobox-disabled.svgx b/vcl/uiconfig/theme_definitions/combobox-disabled.svgx
new file mode 100644
index 000000000000..ccb892d77f90
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/combobox-disabled.svgx
@@ -0,0 +1,4 @@
+<svg version="1.1" viewBox="0 0 35 36" xmlns="http://www.w3.org/2000/svg">
+ <path d="m6.8098e-4 -4e-7v1.2272l-6.8092e-4 33.546v1.2272h33.75c0.68524 0 1.2499-0.55442 1.2499-1.2272v-33.546c0-0.67283-0.56468-1.2272-1.2499-1.2272z" fill="#8e8e93"/>
+ <path d="m17.5 19.091-4.6667-5.0907-1.3333 1.4546 6 6.5454 6-6.5454-1.3333-1.4546z" fill="#f5f5f5"/>
+</svg>
diff --git a/vcl/uiconfig/theme_definitions/combobox.svgx b/vcl/uiconfig/theme_definitions/combobox.svgx
new file mode 100644
index 000000000000..b4a1627f3882
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/combobox.svgx
@@ -0,0 +1,4 @@
+<svg version="1.1" viewBox="0 0 35 36" xmlns="http://www.w3.org/2000/svg">
+ <path d="m6.8098e-4 -4e-7v1.2272l-6.8092e-4 33.546v1.2272h33.75c0.68524 0 1.2499-0.55442 1.2499-1.2272v-33.546c0-0.67283-0.56468-1.2272-1.2499-1.2272z" fill="#0273f8"/>
+ <path d="m17.5 19.091-4.6667-5.0907-1.3333 1.4546 6 6.5454 6-6.5454-1.3333-1.4546z" fill="#f5f5f5"/>
+</svg>
diff --git a/vcl/uiconfig/theme_definitions/common-rect-disabled.svgx b/vcl/uiconfig/theme_definitions/common-rect-disabled.svgx
new file mode 100644
index 000000000000..e4c1f63599d7
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/common-rect-disabled.svgx
@@ -0,0 +1,3 @@
+<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
+ <rect x=".5" y=".5" width="43" height="25" rx="2" ry="2" fill="#fff" stroke="#8e8e93"/>
+</svg>
diff --git a/vcl/uiconfig/theme_definitions/common-rect.svgx b/vcl/uiconfig/theme_definitions/common-rect.svgx
new file mode 100644
index 000000000000..24a3b12c2d58
--- /dev/null
+++ b/vcl/uiconfig/theme_definitions/common-rect.svgx
@@ -0,0 +1,3 @@
+<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
+ <rect x=".5" y=".5" width="43" height="25" rx="2" ry="2" fill="#fff" stroke="#007aff"/>
+</svg>
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index 99df7524b8d2..8c9b1af285d9 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -124,24 +124,24 @@
<combobox>
<part value="Entire">
- <state>
- <external source="spinbox-entire.svgx" />
+ <state enabled="true">
+ <external source="common-rect.svgx" />
+ </state>
+ <state enabled="false">
+ <external source="common-rect-disabled.svgx" />
</state>
</part>
<part value="SubEdit">
<state>
</state>
</part>
- <part value="ButtonUp">
- <state>
- <line stroke="#C7C7C7" stroke-width="4" x1="0.2" y1="0.6" x2="0.5" y2="0.4"/>
- <line stroke="#C7C7C7" stroke-width="4" x1="0.5" y1="0.4" x2="0.8" y2="0.6"/>
+
+ <part value="ButtonDown" width="35" height="36">
+ <state enabled="true">
+ <image source="combobox.svgx" />
</state>
- </part>
- <part value="ButtonDown">
- <state>
- <line stroke="#C7C7C7" stroke-width="4" x1="0.2" y1="0.4" x2="0.5" y2="0.6"/>
- <line stroke="#C7C7C7" stroke-width="4" x1="0.5" y1="0.6" x2="0.8" y2="0.4"/>
+ <state enabled="false">
+ <image source="combobox-disabled.svgx" />
</state>
</part>
</combobox>
@@ -157,8 +157,11 @@
<listbox>
<part value="Entire">
- <state>
- <rect stroke="#007AFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1" />
+ <state enabled="true">
+ <external source="common-rect.svgx" />
+ </state>
+ <state enabled="false">
+ <external source="common-rect-disabled.svgx" />
</state>
</part>
<part value="ListboxWindow">
@@ -166,21 +169,20 @@
<rect stroke="#007AFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1" />
</state>
</part>
- <part value="Focus">
+ <part value="SubEdit">
<state>
- <rect stroke="#007AFF" fill="#FFFFFF" stroke-width="1" rx="1" ry="1" />
</state>
</part>
- <part value="ButtonUp">
- <state>
- <line stroke="#007AFF" stroke-width="4" x1="0.2" y1="0.6" x2="0.5" y2="0.4"/>
- <line stroke="#007AFF" stroke-width="4" x1="0.5" y1="0.4" x2="0.8" y2="0.6"/>
+ <part value="ButtonDown" width="35" height="36">
+ <state enabled="true">
+ <image source="combo.svgx" />
+ </state>
+ <state enabled="false">
+ <image source="combo-disabled.svgx" />
</state>
</part>
- <part value="ButtonDown">
+ <part value="Focus">
<state>
- <line stroke="#007AFF" stroke-width="4" x1="0.2" y1="0.4" x2="0.5" y2="0.6"/>
- <line stroke="#007AFF" stroke-width="4" x1="0.5" y1="0.6" x2="0.8" y2="0.4"/>
</state>
</part>
</listbox>
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list