[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.2' - 95 commits - cui/source cui/uiconfig include/basegfx include/tools include/vcl offapi/com Repository.mk solenv/sanitizers 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
Jan Holesovsky (via logerrit)
logerrit at kemper.freedesktop.org
Thu Aug 29 11:11:54 UTC 2019
Repository.mk | 1
cui/source/inc/cuitabarea.hxx | 2
cui/source/tabpages/tparea.cxx | 2
cui/source/tabpages/tpgradnt.cxx | 23
cui/uiconfig/ui/gradientpage.ui | 73
include/basegfx/DrawCommands.hxx | 103 +
include/tools/gen.hxx | 6
include/vcl/alpha.hxx | 13
include/vcl/button.hxx | 10
include/vcl/salnativewidgets.hxx | 4
include/vcl/settings.hxx | 1
include/vcl/slider.hxx | 1
offapi/com/sun/star/graphic/XSvgParser.idl | 14
solenv/sanitizers/ui/cui.suppr | 1
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 | 146 +
svgio/qa/cppunit/data/VisiotorTest-Rect.svg | 4
svgio/qa/cppunit/data/path.svg | 3
svgio/source/svgreader/svgnode.cxx | 4
svgio/source/svgreader/svgvisitor.cxx | 134 +
svgio/source/svguno/xsvgparser.cxx | 116 -
vcl/CppunitTest_vcl_widget_definition_reader_test.mk | 52
vcl/Library_vcl.mk | 3
vcl/Module_vcl.mk | 4
vcl/Package_theme_definitions.mk | 57
vcl/headless/CustomWidgetDraw.cxx | 2
vcl/headless/svpgdi.cxx | 7
vcl/inc/FileDefinitionWidgetDraw.hxx | 61
vcl/inc/WidgetThemeLibrary.hxx | 4
vcl/inc/bitmapwriteaccess.hxx | 2
vcl/inc/listbox.hxx | 4
vcl/inc/salgdi.hxx | 22
vcl/inc/svdata.hxx | 6
vcl/inc/widgetdraw/WidgetDefinition.hxx | 268 ++
vcl/inc/widgetdraw/WidgetDefinitionReader.hxx | 45
vcl/qa/cppunit/widgetdraw/WidgetDefinitionReaderTest.cxx | 98 +
vcl/qa/cppunit/widgetdraw/data/definition1.xml | 82
vcl/quartz/salgdi.cxx | 4
vcl/source/app/settings.cxx | 5
vcl/source/app/svmain.cxx | 3
vcl/source/control/button.cxx | 11
vcl/source/control/imp_listbox.cxx | 53
vcl/source/control/listbox.cxx | 4
vcl/source/control/slider.cxx | 55
vcl/source/gdi/FileDefinitionWidgetDraw.cxx | 978 ++++++++++
vcl/source/gdi/WidgetDefinition.cxx | 186 +
vcl/source/gdi/WidgetDefinitionReader.cxx | 454 ++++
vcl/source/gdi/salgdilayout.cxx | 67
vcl/source/outdev/nativecontrols.cxx | 2
vcl/source/window/builder.cxx | 12
vcl/uiconfig/theme_definitions/ios/arrow-down.svg | 5
vcl/uiconfig/theme_definitions/ios/arrow-up.svg | 5
vcl/uiconfig/theme_definitions/ios/combobox-button-disabled.svg | 4
vcl/uiconfig/theme_definitions/ios/combobox-button.svg | 4
vcl/uiconfig/theme_definitions/ios/combobox-disabled.svg | 3
vcl/uiconfig/theme_definitions/ios/combobox.svg | 3
vcl/uiconfig/theme_definitions/ios/common-rect-disabled.svg | 3
vcl/uiconfig/theme_definitions/ios/common-rect-focus-slim.svg | 3
vcl/uiconfig/theme_definitions/ios/common-rect-focus.svg | 3
vcl/uiconfig/theme_definitions/ios/common-rect.svg | 3
vcl/uiconfig/theme_definitions/ios/definition.xml | 493 +++++
vcl/uiconfig/theme_definitions/ios/pushbutton-default.svg | 3
vcl/uiconfig/theme_definitions/ios/pushbutton-disabled.svg | 3
vcl/uiconfig/theme_definitions/ios/pushbutton-rollover.svg | 3
vcl/uiconfig/theme_definitions/ios/scrollbar-horizontal.svg | 4
vcl/uiconfig/theme_definitions/ios/scrollbar-vertical.svg | 4
vcl/uiconfig/theme_definitions/ios/slider-button-disabled.svg | 3
vcl/uiconfig/theme_definitions/ios/slider-button.svg | 3
vcl/uiconfig/theme_definitions/ios/spinbox-left-disabled.svg | 4
vcl/uiconfig/theme_definitions/ios/spinbox-left-pressed.svg | 5
vcl/uiconfig/theme_definitions/ios/spinbox-left.svg | 4
vcl/uiconfig/theme_definitions/ios/spinbox-right-disabled.svg | 5
vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg | 6
vcl/uiconfig/theme_definitions/ios/spinbox-right.svg | 5
vcl/uiconfig/theme_definitions/ios/switch-off-disabled.svg | 14
vcl/uiconfig/theme_definitions/ios/switch-off-pressed.svg | 15
vcl/uiconfig/theme_definitions/ios/switch-off.svg | 15
vcl/uiconfig/theme_definitions/ios/switch-on-disabled.svg | 15
vcl/uiconfig/theme_definitions/ios/switch-on-pressed.svg | 11
vcl/uiconfig/theme_definitions/ios/switch-on.svg | 15
vcl/uiconfig/theme_definitions/ios/tabitem-first-selected.svg | 3
vcl/uiconfig/theme_definitions/ios/tabitem-first.svg | 3
vcl/uiconfig/theme_definitions/ios/tabitem-last-selected.svg | 3
vcl/uiconfig/theme_definitions/ios/tabitem-last.svg | 3
vcl/uiconfig/theme_definitions/ios/tabitem-middle-selected.svg | 3
vcl/uiconfig/theme_definitions/ios/tabitem-middle.svg | 3
vcl/uiconfig/theme_definitions/ios/tick-off-disabled.svg | 4
vcl/uiconfig/theme_definitions/ios/tick-off-pressed.svg | 11
vcl/uiconfig/theme_definitions/ios/tick-off.svg | 13
vcl/uiconfig/theme_definitions/ios/tick-on-disabled.svg | 11
vcl/uiconfig/theme_definitions/ios/tick-on-pressed.svg | 11
vcl/uiconfig/theme_definitions/ios/tick-on.svg | 13
vcl/unx/gtk/salnativewidgets-gtk.cxx | 2
97 files changed, 3918 insertions(+), 165 deletions(-)
New commits:
commit 2070bea8c8182981f313d9a9d30b68e002a144f1
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Wed Nov 28 22:21:57 2018 +0100
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:58 2019 +0900
custom widgets: Rename 'stock' to 'action'.
If the button has this property, it means it is located in the action
area, not that it is a stock button per se.
(cherry picked from commit ec1b227b435a555464cb2a9fe747631485ebdbf1)
Change-Id: Ia57ad24d8cd4ff1d7b74d7ef82da0f352fe3deb3
diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx
index 8f7afce4aecb..dd5d95018410 100644
--- a/include/vcl/button.hxx
+++ b/include/vcl/button.hxx
@@ -160,14 +160,14 @@ public:
virtual bool set_property(const OString &rKey, const OUString &rValue) override;
virtual void ShowFocus(const tools::Rectangle& rRect) override;
- void setStock(bool bIsStock)
+ void setAction(bool bIsAction)
{
- mbIsStock = bIsStock;
+ mbIsAction = bIsAction;
}
- bool isStock()
+ bool isAction()
{
- return mbIsStock;
+ return mbIsAction;
}
protected:
@@ -206,7 +206,7 @@ private:
SymbolType meSymbol;
TriState meState;
bool mbPressed;
- bool mbIsStock;
+ bool mbIsAction;
};
inline void PushButton::Check( bool bCheck )
diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx
index 9ccfa0319057..a9a572731e3c 100644
--- a/include/vcl/salnativewidgets.hxx
+++ b/include/vcl/salnativewidgets.hxx
@@ -497,7 +497,7 @@ public:
: ImplControlValue( ControlType::Pushbutton, 0 )
, mbBevelButton(false)
, mbSingleLine(true)
- , mbIsStock(false)
+ , mbIsAction(false)
{}
virtual ~PushButtonValue() override;
@@ -510,7 +510,7 @@ public:
bool mbBevelButton:1; // only used on OSX
bool mbSingleLine:1; // only used on OSX
- bool mbIsStock:1;
+ bool mbIsAction:1;
};
diff --git a/vcl/headless/CustomWidgetDraw.cxx b/vcl/headless/CustomWidgetDraw.cxx
index 8a920af1ee55..9e49390b0f3a 100644
--- a/vcl/headless/CustomWidgetDraw.cxx
+++ b/vcl/headless/CustomWidgetDraw.cxx
@@ -97,7 +97,7 @@ bool CustomWidgetDraw::drawNativeControl(ControlType eType, ControlPart ePart,
{
const PushButtonValue* pPushButtonValue = static_cast<const PushButtonValue*>(&rValue);
if (pPushButtonValue)
- aParameters.bIsStock = pPushButtonValue->mbIsStock;
+ aParameters.bIsAction = pPushButtonValue->mbIsAction;
bOK = s_pWidgetImplementation->drawPushButton(aParameters, nWidth, nHeight);
}
break;
diff --git a/vcl/inc/WidgetThemeLibrary.hxx b/vcl/inc/WidgetThemeLibrary.hxx
index ccb804cf1b6a..ed4260226a80 100644
--- a/vcl/inc/WidgetThemeLibrary.hxx
+++ b/vcl/inc/WidgetThemeLibrary.hxx
@@ -79,7 +79,7 @@ struct ControlDrawParameters
, ePart(i_ePart)
, eState(i_eState)
, eButtonValue(ButtonValue::DontKnow)
- , bIsStock(false)
+ , bIsAction(false)
, nValue(0)
{
}
@@ -89,7 +89,7 @@ struct ControlDrawParameters
ControlPart ePart;
ControlState eState;
ButtonValue eButtonValue;
- bool bIsStock;
+ bool bIsAction;
int64_t nValue;
};
diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx
index 3c998f8943e3..1ecff165a9e1 100644
--- a/vcl/source/control/button.cxx
+++ b/vcl/source/control/button.cxx
@@ -635,7 +635,7 @@ void PushButton::ImplInitPushButtonData()
mnDDStyle = PushButtonDropdownStyle::NONE;
mbIsActive = false;
mbPressed = false;
- mbIsStock = false;
+ mbIsAction = false;
}
namespace
@@ -1046,7 +1046,7 @@ void PushButton::ImplDrawPushButton(vcl::RenderContext& rRenderContext)
if (bNativeOK)
{
PushButtonValue aControlValue;
- aControlValue.mbIsStock = isStock();
+ aControlValue.mbIsAction = isAction();
tools::Rectangle aCtrlRegion(aInRect);
ControlState nState = ControlState::NONE;
@@ -1702,7 +1702,7 @@ void PushButton::ShowFocus(const tools::Rectangle& rRect)
if (IsNativeControlSupported(ControlType::Pushbutton, ControlPart::Focus))
{
PushButtonValue aControlValue;
- aControlValue.mbIsStock = isStock();
+ aControlValue.mbIsAction = isAction();
tools::Rectangle aInRect(Point(), GetOutputSizePixel());
GetOutDev()->DrawNativeControl(ControlType::Pushbutton, ControlPart::Focus, aInRect,
ControlState::FOCUSED, aControlValue, OUString());
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index ea4153161e3c..e2833756b87e 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -1182,9 +1182,6 @@ namespace
xWindow = VclPtr<PushButton>::Create(pParent, nBits);
xWindow->SetText(getStockText(sType));
}
- PushButton* pPushButton = dynamic_cast<PushButton*>(xWindow.get());
- if (pPushButton)
- pPushButton->setStock(true);
}
if (!xWindow)
@@ -2780,17 +2777,22 @@ void VclBuilder::handleChild(vcl::Window *pParent, xmlreader::XmlReader &reader)
}
}
+ bool bIsButtonBox = dynamic_cast<VclButtonBox*>(pCurrentChild) != nullptr;
+
//To-Do make reorder a virtual in Window, move this foo
//there and see above
std::vector<vcl::Window*> aChilds;
for (vcl::Window* pChild = pCurrentChild->GetWindow(GetWindowType::FirstChild); pChild;
pChild = pChild->GetWindow(GetWindowType::Next))
{
+ if (bIsButtonBox)
+ {
+ if (PushButton* pPushButton = dynamic_cast<PushButton*>(pChild))
+ pPushButton->setAction(true);
+ }
aChilds.push_back(pChild);
}
- bool bIsButtonBox = dynamic_cast<VclButtonBox*>(pCurrentChild) != nullptr;
-
//sort child order within parent so that tabbing
//between controls goes in a visually sensible sequence
std::stable_sort(aChilds.begin(), aChilds.end(), sortIntoBestTabTraversalOrder(this));
commit ee16b284727fe27b62c2d48608965d9f147195ab
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Wed Apr 3 22:11:41 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:58 2019 +0900
tdf#124155 fix slider to not go beyond rect bounds
We need to ask the NWF for the size of the thumb and not just use
the hard-coded value.
Change-Id: I98c6b5782c6a043fc358198ddf844d36d7aa90d6
Reviewed-on: https://gerrit.libreoffice.org/70201
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 9956cf0692058414ef3efdb0e8058fbb0b39f6bc)
diff --git a/include/vcl/slider.hxx b/include/vcl/slider.hxx
index 6549b4c0ac54..36247d52381a 100644
--- a/include/vcl/slider.hxx
+++ b/include/vcl/slider.hxx
@@ -36,6 +36,7 @@ private:
long mnThumbPixOffset;
long mnThumbPixRange;
long mnThumbPixPos;
+ long mnThumbSize;
long mnChannelPixOffset;
long mnChannelPixRange;
long mnChannelPixTop;
diff --git a/vcl/source/control/slider.cxx b/vcl/source/control/slider.cxx
index c9288aacf566..e2b7a2baa26c 100644
--- a/vcl/source/control/slider.cxx
+++ b/vcl/source/control/slider.cxx
@@ -29,7 +29,6 @@
#define SLIDER_STATE_THUMB_DOWN (sal_uInt16(0x0004))
#define SLIDER_THUMB_SIZE 9
-#define SLIDER_THUMB_HALFSIZE 4
#define SLIDER_CHANNEL_OFFSET 0
#define SLIDER_CHANNEL_SIZE 4
#define SLIDER_CHANNEL_HALFSIZE 2
@@ -43,6 +42,7 @@ void Slider::ImplInit( vcl::Window* pParent, WinBits nStyle )
mnThumbPixOffset = 0;
mnThumbPixRange = 0;
mnThumbPixPos = 0; // between mnThumbPixOffset and mnThumbPixOffset+mnThumbPixRange
+ mnThumbSize = SLIDER_THUMB_SIZE;
mnChannelPixOffset = 0;
mnChannelPixRange = 0;
mnChannelPixTop = 0;
@@ -115,8 +115,8 @@ void Slider::ImplUpdateRects( bool bUpdate )
{
if ( GetStyle() & WB_HORZ )
{
- maThumbRect.SetLeft( mnThumbPixPos-SLIDER_THUMB_HALFSIZE );
- maThumbRect.SetRight( maThumbRect.Left()+SLIDER_THUMB_SIZE-1 );
+ maThumbRect.SetLeft(mnThumbPixPos - (mnThumbSize / 2));
+ maThumbRect.SetRight(maThumbRect.Left() + mnThumbSize - 1);
if ( mnChannelPixOffset < maThumbRect.Left() )
{
maChannel1Rect.SetLeft( mnChannelPixOffset );
@@ -136,7 +136,7 @@ void Slider::ImplUpdateRects( bool bUpdate )
else
maChannel2Rect.SetEmpty();
- const tools::Rectangle aControlRegion( tools::Rectangle( Point(0,0), Size( SLIDER_THUMB_SIZE, 10 ) ) );
+ const tools::Rectangle aControlRegion(tools::Rectangle(Point(), Size(mnThumbSize, 10)));
tools::Rectangle aThumbBounds, aThumbContent;
if ( GetNativeControlRegion( ControlType::Slider, ControlPart::ThumbHorz,
aControlRegion, ControlState::NONE, ImplControlValue(),
@@ -149,8 +149,8 @@ void Slider::ImplUpdateRects( bool bUpdate )
}
else
{
- maThumbRect.SetTop( mnThumbPixPos-SLIDER_THUMB_HALFSIZE );
- maThumbRect.SetBottom( maThumbRect.Top()+SLIDER_THUMB_SIZE-1 );
+ maThumbRect.SetTop( mnThumbPixPos - (mnThumbSize / 2));
+ maThumbRect.SetBottom( maThumbRect.Top() + mnThumbSize - 1);
if ( mnChannelPixOffset < maThumbRect.Top() )
{
maChannel1Rect.SetTop( mnChannelPixOffset );
@@ -170,7 +170,7 @@ void Slider::ImplUpdateRects( bool bUpdate )
else
maChannel2Rect.SetEmpty();
- const tools::Rectangle aControlRegion( tools::Rectangle( Point(0,0), Size( 10, SLIDER_THUMB_SIZE ) ) );
+ const tools::Rectangle aControlRegion(tools::Rectangle(Point(), Size(10, mnThumbSize)));
tools::Rectangle aThumbBounds, aThumbContent;
if ( GetNativeControlRegion( ControlType::Slider, ControlPart::ThumbVert,
aControlRegion, ControlState::NONE, ImplControlValue(),
@@ -247,8 +247,39 @@ void Slider::ImplCalc( bool bUpdate )
{
bool bInvalidateAll = false;
- if ( mbCalcSize )
+ if (mbCalcSize)
{
+ if (GetStyle() & WB_HORZ)
+ {
+ const tools::Rectangle aControlRegion(tools::Rectangle(Point(), Size(SLIDER_THUMB_SIZE, 10)));
+ tools::Rectangle aThumbBounds, aThumbContent;
+ if (GetNativeControlRegion(ControlType::Slider, ControlPart::ThumbHorz,
+ aControlRegion, ControlState::NONE, ImplControlValue(),
+ aThumbBounds, aThumbContent))
+ {
+ mnThumbSize = aThumbBounds.GetWidth();
+ }
+ else
+ {
+ mnThumbSize = SLIDER_THUMB_SIZE;
+ }
+ }
+ else
+ {
+ const tools::Rectangle aControlRegion(tools::Rectangle(Point(), Size(10, SLIDER_THUMB_SIZE)));
+ tools::Rectangle aThumbBounds, aThumbContent;
+ if (GetNativeControlRegion( ControlType::Slider, ControlPart::ThumbVert,
+ aControlRegion, ControlState::NONE, ImplControlValue(),
+ aThumbBounds, aThumbContent))
+ {
+ mnThumbSize = aThumbBounds.GetHeight();
+ }
+ else
+ {
+ mnThumbSize = SLIDER_THUMB_SIZE;
+ }
+ }
+
long nOldChannelPixOffset = mnChannelPixOffset;
long nOldChannelPixRange = mnChannelPixRange;
long nOldChannelPixTop = mnChannelPixTop;
@@ -276,10 +307,10 @@ void Slider::ImplCalc( bool bUpdate )
maThumbRect.SetRight( aSize.Width()-1 );
}
- if ( nCalcWidth >= SLIDER_THUMB_SIZE )
+ if (nCalcWidth >= mnThumbSize)
{
- mnThumbPixOffset = SLIDER_THUMB_HALFSIZE;
- mnThumbPixRange = nCalcWidth-(SLIDER_THUMB_HALFSIZE*2);
+ mnThumbPixOffset = mnThumbSize / 2;
+ mnThumbPixRange = nCalcWidth - mnThumbSize;
mnThumbPixPos = 0;
mnChannelPixOffset = SLIDER_CHANNEL_OFFSET;
mnChannelPixRange = nCalcWidth-(SLIDER_CHANNEL_OFFSET*2);
@@ -936,7 +967,7 @@ void Slider::SetThumbPos( long nNewThumbPos )
Size Slider::CalcWindowSizePixel()
{
- long nWidth = mnMaxRange-mnMinRange+(SLIDER_THUMB_HALFSIZE*2)+1;
+ long nWidth = mnMaxRange - mnMinRange + mnThumbSize + 1;
long nHeight = SLIDER_HEIGHT;
Size aSize;
if ( GetStyle() & WB_HORZ )
commit 7d47f34d0342634fa7a367acca0370886050da50
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Wed Apr 3 21:59:37 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:57 2019 +0900
tdf#124155 fix slider for border and angle in gradient tab page
This is the consequence of the previous change, where the sliders
didn't respond to input when welded.
Change-Id: Ifec7fd913435a6ec51b93872c7a40d6815807397
Reviewed-on: https://gerrit.libreoffice.org/70198
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 3e6b3d75a698e0c005c88f9e8ca86e7978a402a6)
diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx
index 022ace854752..520606d276d9 100644
--- a/cui/source/tabpages/tpgradnt.cxx
+++ b/cui/source/tabpages/tpgradnt.cxx
@@ -591,6 +591,7 @@ void SvxGradientTabPage::SetControlState_Impl( css::awt::GradientStyle eXGS )
m_xMtrCenterY->set_sensitive(false);
m_xFtAngle->set_sensitive(true);
m_xMtrAngle->set_sensitive(true);
+ m_xSliderAngle->set_sensitive(true);
break;
case css::awt::GradientStyle_RADIAL:
@@ -599,6 +600,7 @@ void SvxGradientTabPage::SetControlState_Impl( css::awt::GradientStyle eXGS )
m_xMtrCenterY->set_sensitive(true);
m_xFtAngle->set_sensitive(false);
m_xMtrAngle->set_sensitive(false);
+ m_xSliderAngle->set_sensitive(false);
break;
case css::awt::GradientStyle_ELLIPTICAL:
@@ -607,6 +609,7 @@ void SvxGradientTabPage::SetControlState_Impl( css::awt::GradientStyle eXGS )
m_xMtrCenterY->set_sensitive(true);
m_xFtAngle->set_sensitive(true);
m_xMtrAngle->set_sensitive(true);
+ m_xSliderAngle->set_sensitive(true);
break;
case css::awt::GradientStyle_SQUARE:
@@ -616,6 +619,7 @@ void SvxGradientTabPage::SetControlState_Impl( css::awt::GradientStyle eXGS )
m_xMtrCenterY->set_sensitive(true);
m_xFtAngle->set_sensitive(true);
m_xMtrAngle->set_sensitive(true);
+ m_xSliderAngle->set_sensitive(true);
break;
default:
break;
diff --git a/cui/uiconfig/ui/gradientpage.ui b/cui/uiconfig/ui/gradientpage.ui
index a3b3d751caf9..ba34727e60bc 100644
--- a/cui/uiconfig/ui/gradientpage.ui
+++ b/cui/uiconfig/ui/gradientpage.ui
@@ -25,6 +25,11 @@
<property name="upper">359</property>
<property name="step_increment">15</property>
</object>
+ <object class="GtkAdjustment" id="angleadjustmentslider">
+ <property name="upper">359</property>
+ <property name="step_increment">15</property>
+ <property name="page_increment">15</property>
+ </object>
<object class="GtkAdjustment" id="percentadjustment">
<property name="upper">100</property>
<property name="step_increment">5</property>
@@ -384,7 +389,6 @@
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="adjustment">adjustment3</property>
- <property name="fill_level">0</property>
<property name="round_digits">1</property>
<property name="draw_value">False</property>
</object>
@@ -521,8 +525,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
- <property name="adjustment">angleadjustment</property>
- <property name="fill_level">0</property>
+ <property name="adjustment">angleadjustmentslider</property>
<property name="draw_value">False</property>
</object>
<packing>
commit d50f6e37eadf04b0d8bd28a32983f2abd6bd9fcd
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Wed Apr 3 12:21:08 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:57 2019 +0900
tdf#124155 change "gradient tab page" - increment & angle slider
Remove slider for increments as the increments should better be
left to "auto" and rarely modified (setting a value means it will
use a limitied amount of increments, but auto effectively means
as much as it is needed and can use the native backend for
drawing).
OTOH use a slider for setting the "angle" as it is already present
in hatch tab page. Angle needs a slider as it is usually one of
the main properties of a gradient (especially linear).
Increase the tab pages a bit (10px on every side) to have a bit of
breating space for all the widgets.
Reviewed-on: https://gerrit.libreoffice.org/70175
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 994b41a6c69d20637dcb95894c385f5c0102d600)
Change-Id: I66167fe2c97b53bc3627237279332bdd59fb03d7
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index 8faa44e825f2..a2870676de32 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -377,6 +377,7 @@ private:
std::unique_ptr<weld::MetricSpinButton> m_xMtrCenterY;
std::unique_ptr<weld::Label> m_xFtAngle;
std::unique_ptr<weld::MetricSpinButton> m_xMtrAngle;
+ std::unique_ptr<weld::Scale> m_xSliderAngle;
std::unique_ptr<weld::MetricSpinButton> m_xMtrBorder;
std::unique_ptr<weld::Scale> m_xSliderBorder;
std::unique_ptr<ColorListBox> m_xLbColorFrom;
@@ -386,7 +387,6 @@ private:
std::unique_ptr<SvxPresetListBox> m_xGradientLB;
std::unique_ptr<weld::SpinButton> m_xMtrIncrement;
std::unique_ptr<weld::CheckButton> m_xCbIncrement;
- std::unique_ptr<weld::Scale> m_xSliderIncrement;
std::unique_ptr<weld::Button> m_xBtnAdd;
std::unique_ptr<weld::Button> m_xBtnModify;
std::unique_ptr<weld::CustomWeld> m_xCtlPreview;
diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx
index 4705f95cf44e..4a72f6d498c8 100644
--- a/cui/source/tabpages/tparea.cxx
+++ b/cui/source/tabpages/tparea.cxx
@@ -158,6 +158,8 @@ void SvxAreaTabPage::SetOptimalSize(weld::DialogController* pController)
}
m_pFillTabPage.disposeAndClear();
+ aSize.extendBy(10, 10); // apply a bit of margin
+
m_xFillTab->set_size_request(aSize.Width(), aSize.Height());
}
diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx
index 5d6cacbea86f..022ace854752 100644
--- a/cui/source/tabpages/tpgradnt.cxx
+++ b/cui/source/tabpages/tpgradnt.cxx
@@ -62,6 +62,7 @@ SvxGradientTabPage::SvxGradientTabPage(TabPageParent pParent, const SfxItemSet&
, m_xMtrCenterY(m_xBuilder->weld_metric_spin_button("centerymtr", FieldUnit::PERCENT))
, m_xFtAngle(m_xBuilder->weld_label("angleft"))
, m_xMtrAngle(m_xBuilder->weld_metric_spin_button("anglemtr", FieldUnit::DEGREE))
+ , m_xSliderAngle(m_xBuilder->weld_scale("angleslider"))
, m_xMtrBorder(m_xBuilder->weld_metric_spin_button("bordermtr", FieldUnit::PERCENT))
, m_xSliderBorder(m_xBuilder->weld_scale("borderslider"))
, m_xLbColorFrom(new ColorListBox(m_xBuilder->weld_menu_button("colorfromlb"), pParent.GetFrameWeld()))
@@ -71,7 +72,6 @@ SvxGradientTabPage::SvxGradientTabPage(TabPageParent pParent, const SfxItemSet&
, m_xGradientLB(new SvxPresetListBox(m_xBuilder->weld_scrolled_window("gradientpresetlistwin")))
, m_xMtrIncrement(m_xBuilder->weld_spin_button("incrementmtr"))
, m_xCbIncrement(m_xBuilder->weld_check_button("autoincrement"))
- , m_xSliderIncrement(m_xBuilder->weld_scale("incrementslider"))
, m_xBtnAdd(m_xBuilder->weld_button("add"))
, m_xBtnModify(m_xBuilder->weld_button("modify"))
, m_xCtlPreview(new weld::CustomWeld(*m_xBuilder, "previewctl", m_aCtlPreview))
@@ -105,10 +105,10 @@ SvxGradientTabPage::SvxGradientTabPage(TabPageParent pParent, const SfxItemSet&
m_xLbGradientType->connect_changed( aLink2 );
m_xCbIncrement->connect_toggled(LINK(this, SvxGradientTabPage, ChangeAutoStepHdl_Impl));
m_xMtrIncrement->connect_value_changed(LINK(this, SvxGradientTabPage, ModifiedEditHdl_Impl));
- m_xSliderIncrement->connect_value_changed(LINK(this, SvxGradientTabPage, ModifiedSliderHdl_Impl));
m_xMtrCenterX->connect_value_changed( aLink );
m_xMtrCenterY->connect_value_changed( aLink );
m_xMtrAngle->connect_value_changed( aLink );
+ m_xSliderAngle->connect_value_changed(LINK(this, SvxGradientTabPage, ModifiedSliderHdl_Impl));
m_xMtrBorder->connect_value_changed( aLink );
m_xSliderBorder->connect_value_changed(LINK(this, SvxGradientTabPage, ModifiedSliderHdl_Impl));
m_xMtrColorFrom->connect_value_changed( aLink );
@@ -233,7 +233,6 @@ bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet )
void SvxGradientTabPage::Reset( const SfxItemSet* )
{
m_xMtrIncrement->set_value(DEFAULT_GRADIENTSTEP);
- m_xSliderIncrement->set_value(DEFAULT_GRADIENTSTEP);
ChangeGradientHdl_Impl();
// determine state of the buttons
@@ -284,12 +283,10 @@ IMPL_LINK_NOARG( SvxGradientTabPage, ChangeAutoStepHdl_Impl, weld::ToggleButton&
{
if (m_xCbIncrement->get_active())
{
- m_xSliderIncrement->set_sensitive(false);
m_xMtrIncrement->set_sensitive(false);
}
else
{
- m_xSliderIncrement->set_sensitive(true);
m_xMtrIncrement->set_sensitive(true);
}
ModifiedHdl_Impl(m_xMtrIncrement.get());
@@ -301,10 +298,10 @@ void SvxGradientTabPage::ModifiedHdl_Impl( void const * pControl )
m_xSliderBorder->set_value(m_xMtrBorder->get_value(FieldUnit::NONE));
if (pControl == m_xSliderBorder.get())
m_xMtrBorder->set_value(m_xSliderBorder->get_value(), FieldUnit::NONE);
- if (pControl == m_xMtrIncrement.get())
- m_xSliderIncrement->set_value(m_xMtrIncrement->get_value());
- if (pControl == m_xSliderIncrement.get())
- m_xMtrIncrement->set_value(m_xSliderIncrement->get_value());
+ if (pControl == m_xMtrAngle.get())
+ m_xSliderAngle->set_value(m_xMtrAngle->get_value(FieldUnit::NONE));
+ if (pControl == m_xSliderAngle.get())
+ m_xMtrAngle->set_value(m_xSliderAngle->get_value(), FieldUnit::NONE);
css::awt::GradientStyle eXGS = static_cast<css::awt::GradientStyle>(m_xLbGradientType->get_active());
@@ -545,15 +542,12 @@ void SvxGradientTabPage::ChangeGradientHdl_Impl()
{
m_xCbIncrement->set_state(TRISTATE_TRUE);
m_xMtrIncrement->set_sensitive(false);
- m_xSliderIncrement->set_sensitive(false);
}
else
{
m_xCbIncrement->set_state(TRISTATE_FALSE);
m_xMtrIncrement->set_sensitive(true);
m_xMtrIncrement->set_value( nValue );
- m_xSliderIncrement->set_sensitive(true);
- m_xSliderIncrement->set_value(nValue);
}
m_xLbGradientType->set_active(
sal::static_int_cast< sal_Int32 >( eXGS ) );
@@ -566,6 +560,7 @@ void SvxGradientTabPage::ChangeGradientHdl_Impl()
m_xLbColorTo->SelectEntry( pGradient->GetEndColor() );
m_xMtrAngle->set_value(pGradient->GetAngle() / 10, FieldUnit::NONE); // should be changed in resource
+ m_xSliderAngle->set_value(pGradient->GetAngle() / 10);
m_xMtrBorder->set_value(pGradient->GetBorder(), FieldUnit::NONE);
m_xSliderBorder->set_value(pGradient->GetBorder());
m_xMtrCenterX->set_value(pGradient->GetXOffset(), FieldUnit::NONE);
diff --git a/cui/uiconfig/ui/gradientpage.ui b/cui/uiconfig/ui/gradientpage.ui
index cdaf2f3f8840..a3b3d751caf9 100644
--- a/cui/uiconfig/ui/gradientpage.ui
+++ b/cui/uiconfig/ui/gradientpage.ui
@@ -249,7 +249,6 @@
<property name="use_underline">True</property>
<property name="mnemonic_widget">incrementmtr</property>
<property name="xalign">0</property>
- <property name="yalign">0.43999999761581421</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -258,20 +257,6 @@
</packing>
</child>
<child>
- <object class="GtkScale" id="incrementslider">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="adjustment">adjustment2</property>
- <property name="round_digits">1</property>
- <property name="draw_value">False</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
<object class="GtkSpinButton" id="incrementmtr">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -280,7 +265,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">2</property>
+ <property name="top_attach">1</property>
</packing>
</child>
<child>
@@ -289,6 +274,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
+ <property name="hexpand">True</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
@@ -296,7 +282,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
- <property name="width">2</property>
</packing>
</child>
</object>
@@ -320,7 +305,6 @@
<property name="label" translatable="yes" context="gradientpage|centerft">Center ( X / Y ):</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
- <property name="yalign">0.43999999761581421</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -373,9 +357,6 @@
</packing>
</child>
<child>
- <placeholder/>
- </child>
- <child>
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -390,11 +371,10 @@
<property name="use_underline">True</property>
<property name="mnemonic_widget">bordermtr</property>
<property name="xalign">0</property>
- <property name="yalign">0.43999999761581421</property>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">2</property>
<property name="width">2</property>
</packing>
</child>
@@ -410,7 +390,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">2</property>
+ <property name="top_attach">3</property>
</packing>
</child>
<child>
@@ -422,7 +402,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">2</property>
+ <property name="top_attach">3</property>
</packing>
</child>
<child>
@@ -433,7 +413,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">0</property>
+ <property name="top_attach">1</property>
</packing>
</child>
<child>
@@ -444,12 +424,12 @@
<property name="label" translatable="yes" context="gradientpage|angleft">A_ngle:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">anglemtr</property>
- <property name="xalign">1</property>
- <property name="yalign">0.43999999761581421</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
+ <property name="width">2</property>
</packing>
</child>
<child>
@@ -460,7 +440,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">6</property>
+ <property name="top_attach">7</property>
</packing>
</child>
<child>
@@ -469,13 +449,14 @@
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">6</property>
+ <property name="top_attach">7</property>
</packing>
</child>
<child>
@@ -489,7 +470,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">5</property>
+ <property name="top_attach">6</property>
<property name="width">2</property>
</packing>
</child>
@@ -499,13 +480,14 @@
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">4</property>
+ <property name="top_attach">5</property>
</packing>
</child>
<child>
@@ -516,7 +498,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">4</property>
+ <property name="top_attach">5</property>
</packing>
</child>
<child>
@@ -530,15 +512,29 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">3</property>
+ <property name="top_attach">4</property>
<property name="width">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkScale" id="angleslider">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">angleadjustment</property>
+ <property name="fill_level">0</property>
+ <property name="draw_value">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">4</property>
+ <property name="position">3</property>
</packing>
</child>
<child>
@@ -604,7 +600,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">9</property>
+ <property name="position">4</property>
</packing>
</child>
</object>
diff --git a/include/tools/gen.hxx b/include/tools/gen.hxx
index 5d6ff5ea66b8..0d9a81ebdcee 100644
--- a/include/tools/gen.hxx
+++ b/include/tools/gen.hxx
@@ -197,6 +197,12 @@ public:
void setWidth(long nWidth) { nA = nWidth; }
void setHeight(long nHeight) { nB = nHeight; }
+ void extendBy(long x, long y)
+ {
+ nA += x;
+ nB += y;
+ }
+
Pair const & toPair() const { return *this; }
Pair & toPair() { return *this; }
diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr
index efe88e89d490..59f22233ff39 100644
--- a/solenv/sanitizers/ui/cui.suppr
+++ b/solenv/sanitizers/ui/cui.suppr
@@ -208,6 +208,7 @@ cui/uiconfig/ui/fmsearchdialog.ui://GtkLabel[@id='ftRecord'] orphan-label
cui/uiconfig/ui/fmsearchdialog.ui://GtkLabel[@id='ftHint'] orphan-label
cui/uiconfig/ui/gradientpage.ui://GtkScale[@id='incrementslider'] no-labelled-by
cui/uiconfig/ui/gradientpage.ui://GtkLabel[@id='centerft'] orphan-label
+cui/uiconfig/ui/gradientpage.ui://GtkScale[@id='angleslider'] no-labelled-by
cui/uiconfig/ui/gradientpage.ui://GtkScale[@id='borderslider'] no-labelled-by
cui/uiconfig/ui/effectspage.ui://GtkLabel[@id='label1'] orphan-label
cui/uiconfig/ui/effectspage.ui://GtkLabel[@id='label2'] orphan-label
commit 5ae6a4042841a65db993d9c67aa0162b9b25be0f
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Jun 6 17:14:53 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:57 2019 +0900
tdf#124947 fix hit area of the radio buttons, size in ios theme
The hit area of the radio buttons was not calculated correctly, so
sometimes when you hit the radio button at the "wrong" place,
nothing happened. This fixes the hit area to correctly cover the
radio button and the text.
Another issue was that the ios theme size of the radio button was
not defined correctly (32px instead of 26px), which increased the
error when calculating the hit are even more. The height of the
radio button should be the same as defined in the definition.xml,
and not bigger (or smaller).
Change-Id: I4b03f36ca9d9c82bd6dc442bd6e06af938c62bdd
Reviewed-on: https://gerrit.libreoffice.org/73592
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 302a00a3190743f5e6d2b61e5b40e493c4744b7e)
diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx
index cd59ce4ba5d5..3c998f8943e3 100644
--- a/vcl/source/control/button.cxx
+++ b/vcl/source/control/button.cxx
@@ -2067,8 +2067,9 @@ void RadioButton::ImplDraw( OutputDevice* pDev, DrawFlags nDrawFlags,
ImplDrawAlignedImage( pDev, aPos, aSize, 1, nDrawFlags, nTextStyle );
- rMouseRect = tools::Rectangle( aPos, aSize );
- rMouseRect.SetLeft( rPos.X() );
+ rMouseRect = tools::Rectangle(aPos, aSize);
+ rMouseRect.SetLeft(rPos.X());
+ rMouseRect.SetTop(rPos.Y());
rStateRect.SetLeft( rPos.X() );
rStateRect.SetTop( rMouseRect.Top() );
diff --git a/vcl/uiconfig/theme_definitions/ios/definition.xml b/vcl/uiconfig/theme_definitions/ios/definition.xml
index 61d6aa21578e..b0e26f01079c 100644
--- a/vcl/uiconfig/theme_definitions/ios/definition.xml
+++ b/vcl/uiconfig/theme_definitions/ios/definition.xml
@@ -85,7 +85,7 @@
</pushbutton>
<radiobutton>
- <part value="Entire" width="32" height="32">
+ <part value="Entire" width="26" height="26">
<state enabled="true" pressed="false" button-value="true">
<image source="tick-on.svg" />
</state>
commit b622600e084650a915e3b4e58abec181820a83cb
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon May 20 21:41:03 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:57 2019 +0900
widgettheme: support multiple spinbox orientations
This adds the ability to define the spinbox orientation that has
decrease and increase buttons on the right side and can be changed
by adding "orientation="edit-decrease-increase" to the Spinbox
"Entire" part in the widget definition.
Change-Id: I3601a987a4abb8d998e9cd2d8973d794d3d66f9b
Reviewed-on: https://gerrit.libreoffice.org/72662
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 3b67ad5f11714d6bea83ec8511f7723dbd999c56)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index e5dc455fd9cc..393fab87c7b0 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -690,9 +690,11 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
return false;
Size aButtonSizeDown(pButtonDownPart->mnWidth, pButtonDownPart->mnHeight);
- OString sOrientation = "decrease-edit-increase";
+ auto const& pEntirePart
+ = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
+ OString sOrientation = pEntirePart->msOrientation;
- if (sOrientation == "decrease-edit-increase")
+ if (sOrientation.isEmpty() || sOrientation == "decrease-edit-increase")
{
if (ePart == ControlPart::ButtonUp)
{
@@ -728,7 +730,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
return true;
}
}
- else
+ else if (sOrientation == "edit-decrease-increase")
{
if (ePart == ControlPart::ButtonUp)
{
diff --git a/vcl/source/gdi/WidgetDefinitionReader.cxx b/vcl/source/gdi/WidgetDefinitionReader.cxx
index f825addd0042..dd6bf75abe32 100644
--- a/vcl/source/gdi/WidgetDefinitionReader.cxx
+++ b/vcl/source/gdi/WidgetDefinitionReader.cxx
@@ -308,6 +308,12 @@ void WidgetDefinitionReader::readDefinition(tools::XmlWalker& rWalker,
pPart->mnMarginWidth = nMarginWidth;
}
+ OString sOrientation = rWalker.attribute("orientation");
+ if (!sOrientation.isEmpty())
+ {
+ pPart->msOrientation = sOrientation;
+ }
+
rWidgetDefinition.maDefinitions.emplace(ControlTypeAndPart(eType, ePart), pPart);
readPart(rWalker, pPart);
}
commit c7d9eccda8cf5ea0603b371b5a7ff386bba97b23
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Tue May 14 16:53:57 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:57 2019 +0900
Look for "online" theme when running LOOL and "ios" only on IOS
Change-Id: I5ac2c764dd11381d6354a7727700ba1fa4b76a53
Reviewed-on: https://gerrit.libreoffice.org/72269
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 5053584e71d98ae6bfba405145c45815ba7ad898)
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 9fb71db7e51e..e5dc455fd9cc 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -90,8 +90,12 @@ FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
: m_rGraphics(rGraphics)
, m_bIsActive(false)
{
+ if (comphelper::LibreOfficeKit::isActive())
+ m_pWidgetDefinition = getWidgetDefinitionForTheme("online");
+#ifdef IOS
if (!m_pWidgetDefinition)
m_pWidgetDefinition = getWidgetDefinitionForTheme("ios");
+#endif
if (m_pWidgetDefinition)
{
commit 61dbf9e90d67c2a428adcc5786eda415b89921ce
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Tue May 14 16:51:59 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:57 2019 +0900
Gaceful fallback if the widget theme files can't be found
Change-Id: Ied3831c83ed385f5f28b82eb1ee67a2a4448cd05
Reviewed-on: https://gerrit.libreoffice.org/72268
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit c6bf2562df8ed060b0cf3da39c5641f080c01086)
diff --git a/vcl/inc/FileDefinitionWidgetDraw.hxx b/vcl/inc/FileDefinitionWidgetDraw.hxx
index 24b9e0ab8a26..a5b95c8fad6a 100644
--- a/vcl/inc/FileDefinitionWidgetDraw.hxx
+++ b/vcl/inc/FileDefinitionWidgetDraw.hxx
@@ -22,6 +22,8 @@ class FileDefinitionWidgetDraw : public vcl::WidgetDrawInterface
{
private:
SalGraphics& m_rGraphics;
+ bool m_bIsActive;
+
std::shared_ptr<WidgetDefinition> m_pWidgetDefinition;
bool resolveDefinition(ControlType eType, ControlPart ePart, ControlState eState,
@@ -31,6 +33,8 @@ private:
public:
FileDefinitionWidgetDraw(SalGraphics& rGraphics);
+ bool isActive() { return m_bIsActive; }
+
bool isNativeControlSupported(ControlType eType, ControlPart ePart) override;
bool hitTestNativeControl(ControlType eType, ControlPart ePart,
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 3373285b8a92..9fb71db7e51e 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -14,6 +14,7 @@
#include <svdata.hxx>
#include <rtl/bootstrap.hxx>
#include <config_folders.h>
+#include <osl/file.hxx>
#include <basegfx/range/b2drectangle.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
@@ -45,15 +46,40 @@ OUString lcl_getThemeDefinitionPath()
return sPath;
}
-std::shared_ptr<WidgetDefinition> setWidgetDefinition(OUString const& rDefinitionFile,
+bool lcl_directoryExists(OUString const& sDirectory)
+{
+ osl::DirectoryItem aDirectoryItem;
+ osl::FileBase::RC eRes = osl::DirectoryItem::get(sDirectory, aDirectoryItem);
+ return eRes == osl::FileBase::E_None;
+}
+
+bool lcl_fileExists(OUString const& sFilename)
+{
+ osl::File aFile(sFilename);
+ osl::FileBase::RC eRC = aFile.open(osl_File_OpenFlag_Read);
+ return osl::FileBase::E_None == eRC;
+}
+
+std::shared_ptr<WidgetDefinition> getWidgetDefinition(OUString const& rDefinitionFile,
OUString const& rDefinitionResourcesPath)
{
+ auto pWidgetDefinition = std::make_shared<WidgetDefinition>();
+ WidgetDefinitionReader aReader(rDefinitionFile, rDefinitionResourcesPath);
+ if (aReader.read(*pWidgetDefinition))
+ return pWidgetDefinition;
+ return std::shared_ptr<WidgetDefinition>();
+}
+
+std::shared_ptr<WidgetDefinition> getWidgetDefinitionForTheme(OUString const& rThemenName)
+{
static std::shared_ptr<WidgetDefinition> spDefinition;
if (!spDefinition)
{
- spDefinition = std::make_shared<WidgetDefinition>();
- WidgetDefinitionReader aReader(rDefinitionFile, rDefinitionResourcesPath);
- aReader.read(*spDefinition);
+ OUString sSharedDefinitionBasePath = lcl_getThemeDefinitionPath();
+ OUString sThemeFolder = sSharedDefinitionBasePath + rThemenName + "/";
+ OUString sThemeDefinitionFile = sThemeFolder + "definition.xml";
+ if (lcl_directoryExists(sThemeFolder) && lcl_fileExists(sThemeDefinitionFile))
+ spDefinition = getWidgetDefinition(sThemeDefinitionFile, sThemeFolder);
}
return spDefinition;
}
@@ -62,22 +88,25 @@ std::shared_ptr<WidgetDefinition> setWidgetDefinition(OUString const& rDefinitio
FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
: m_rGraphics(rGraphics)
+ , m_bIsActive(false)
{
- OUString sDefinitionBasePath = lcl_getThemeDefinitionPath();
- OUString sThemeName = "ios";
- OUString sThemeFolder = sDefinitionBasePath + sThemeName + "/";
-
- m_pWidgetDefinition = setWidgetDefinition(sThemeFolder + "definition.xml", sThemeFolder);
-
- ImplSVData* pSVData = ImplGetSVData();
- pSVData->maNWFData.mbNoFocusRects = true;
- pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true;
- pSVData->maNWFData.mbNoActiveTabTextRaise = true;
- pSVData->maNWFData.mbCenteredTabs = true;
- pSVData->maNWFData.mbProgressNeedsErase = true;
- pSVData->maNWFData.mnStatusBarLowerRightOffset = 10;
- pSVData->maNWFData.mbCanDrawWidgetAnySize = true;
- pSVData->maNWFData.mnListBoxEntryMargin = 20;
+ if (!m_pWidgetDefinition)
+ m_pWidgetDefinition = getWidgetDefinitionForTheme("ios");
+
+ if (m_pWidgetDefinition)
+ {
+ ImplSVData* pSVData = ImplGetSVData();
+ pSVData->maNWFData.mbNoFocusRects = true;
+ pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true;
+ pSVData->maNWFData.mbNoActiveTabTextRaise = true;
+ pSVData->maNWFData.mbCenteredTabs = true;
+ pSVData->maNWFData.mbProgressNeedsErase = true;
+ pSVData->maNWFData.mnStatusBarLowerRightOffset = 10;
+ pSVData->maNWFData.mbCanDrawWidgetAnySize = true;
+ pSVData->maNWFData.mnListBoxEntryMargin = 20;
+
+ m_bIsActive = true;
+ }
}
bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType eType, ControlPart ePart)
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index c8ed662620b0..35d4009ffb1f 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -70,6 +70,12 @@ bool SalGraphics::initWidgetDrawBackends(bool bForce)
if (bFileDefinitionsWidgetDraw || bForce)
{
m_pWidgetDraw.reset(new vcl::FileDefinitionWidgetDraw(*this));
+ auto pFileDefinitionWidgetDraw = static_cast<vcl::FileDefinitionWidgetDraw*>(m_pWidgetDraw.get());
+ if (!pFileDefinitionWidgetDraw->isActive())
+ {
+ m_pWidgetDraw.reset();
+ return false;
+ }
return true;
}
return false;
commit 542b9a46fc18be7e3c8580dd6f68cfddfbca8bff
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon Apr 1 13:08:02 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:57 2019 +0900
tdf#124150 increase size of color valueset widget
Size of the color value set can be set through settings, but there
was no setter. Added a setter and set it to a bigger value so it
is better suited for touch.
Change-Id: I8c9b17f7379c4702b0faf7847f1e6292cd89b0d0
Reviewed-on: https://gerrit.libreoffice.org/70031
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit c2108dd683ec7ff0bcaac8456c6cce9610a2993a)
diff --git a/include/vcl/settings.hxx b/include/vcl/settings.hxx
index c70da34cb993..94b35515149a 100644
--- a/include/vcl/settings.hxx
+++ b/include/vcl/settings.hxx
@@ -594,6 +594,7 @@ public:
// be used.
static sal_uInt16 GetColorValueSetMaximumRowCount();
+ void SetListBoxPreviewDefaultLogicSize(Size const & rSize);
const Size& GetListBoxPreviewDefaultPixelSize() const;
// the default LineWidth for ListBox UI previews (LineStyle, LineDash, LineStartEnd). Default is 1.
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 2dbc330b17fe..60c422b26619 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -1981,6 +1981,11 @@ StyleSettings::operator !=( const StyleSettings& rSet ) const
return !(*this == rSet);
}
+void StyleSettings::SetListBoxPreviewDefaultLogicSize(Size const& rSize)
+{
+ mxData->maListBoxPreviewDefaultLogicSize = rSize;
+}
+
const Size& StyleSettings::GetListBoxPreviewDefaultPixelSize() const
{
if(0 == mxData->maListBoxPreviewDefaultPixelSize.Width() || 0 == mxData->maListBoxPreviewDefaultPixelSize.Height())
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 8751e53fc940..3373285b8a92 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -931,6 +931,7 @@ bool FileDefinitionWidgetDraw::updateSettings(AllSettings& rSettings)
aStyleSet.SetTitleHeight(16);
aStyleSet.SetFloatTitleHeight(12);
+ aStyleSet.SetListBoxPreviewDefaultLogicSize(Size(16, 16));
rSettings.SetStyleSettings(aStyleSet);
commit 766017ac27ea2f1693c89ac517efe7c95a64662d
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Mar 28 17:43:29 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:56 2019 +0900
tdf#124148 add configurable margin for the listbox pop-up list
This is needed to increase the area of lisbox entries in the
pop-up list so it is easier to select with touch.
Reviewed-on: https://gerrit.libreoffice.org/69889
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit ce9dab8c161e29769131cec741a6a9cceec8552d)
Change-Id: Iedb910508de26c903dc3f50f645f567d4c988940
diff --git a/vcl/inc/listbox.hxx b/vcl/inc/listbox.hxx
index 8591d9696764..3787e01bf3a3 100644
--- a/vcl/inc/listbox.hxx
+++ b/vcl/inc/listbox.hxx
@@ -54,6 +54,8 @@ struct ImplEntryType
ListBoxEntryFlags mnFlags;
long mnHeight;
+ long getHeightWithMargin() const;
+
ImplEntryType( const OUString& rStr, const Image& rImage ) :
maStr( rStr ),
maImage( rImage ),
@@ -336,6 +338,7 @@ public:
tools::Rectangle GetBoundingRectangle( sal_Int32 nItem ) const;
long GetEntryHeight() const { return mnMaxHeight; }
+ long GetEntryHeightWithMargin() const;
long GetMaxEntryWidth() const { return mnMaxWidth; }
void SetScrollHdl( const Link<ImplListBoxWindow*,void>& rLink ) { maScrollHdl = rLink; }
@@ -473,6 +476,7 @@ public:
Size CalcSize( sal_Int32 nMaxLines ) const { return maLBWindow->CalcSize( nMaxLines ); }
long GetEntryHeight() const { return maLBWindow->GetEntryHeight(); }
+ long GetEntryHeightWithMargin() const{ return maLBWindow->GetEntryHeightWithMargin(); }
long GetMaxEntryWidth() const { return maLBWindow->GetMaxEntryWidth(); }
void SetScrollHdl( const Link<ImplListBox*,void>& rLink ) { maScrollHdl = rLink; }
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index e42c35ff9e87..fb189fea9a80 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -312,6 +312,8 @@ struct ImplSVNWFData
// floating toolbars that can be redocked because there's no way to track
// that the toolbar is over a dockable area.
bool mbCanDetermineWindowPosition = true;
+
+ int mnListBoxEntryMargin = 0;
};
struct BlendFrameCache
diff --git a/vcl/source/control/imp_listbox.cxx b/vcl/source/control/imp_listbox.cxx
index 4aa9b820ccb4..fca0e4c28205 100644
--- a/vcl/source/control/imp_listbox.cxx
+++ b/vcl/source/control/imp_listbox.cxx
@@ -310,7 +310,7 @@ long ImplEntryList::GetAddedHeight( sal_Int32 i_nEndIndex, sal_Int32 i_nBeginInd
sal_Int32 nIndex = nStart;
while( nIndex != LISTBOX_ENTRY_NOTFOUND && nIndex < nStop )
{
- long nPosHeight = GetEntryPtr( nIndex )->mnHeight;
+ long nPosHeight = GetEntryPtr( nIndex )->getHeightWithMargin();
if (nHeight > ::std::numeric_limits<long>::max() - nPosHeight)
{
SAL_WARN( "vcl", "ImplEntryList::GetAddedHeight: truncated");
@@ -328,7 +328,7 @@ long ImplEntryList::GetAddedHeight( sal_Int32 i_nEndIndex, sal_Int32 i_nBeginInd
long ImplEntryList::GetEntryHeight( sal_Int32 nPos ) const
{
ImplEntryType* pImplEntry = GetEntry( nPos );
- return pImplEntry ? pImplEntry->mnHeight : 0;
+ return pImplEntry ? pImplEntry->getHeightWithMargin() : 0;
}
OUString ImplEntryList::GetEntryText( sal_Int32 nPos ) const
@@ -561,7 +561,7 @@ void ImplListBoxWindow::ImplCalcMetrics()
if( mnCurrentPos != LISTBOX_ENTRY_NOTFOUND )
{
- Size aSz( GetOutputSizePixel().Width(), mpEntryList->GetEntryPtr( mnCurrentPos )->mnHeight );
+ Size aSz( GetOutputSizePixel().Width(), mpEntryList->GetEntryPtr( mnCurrentPos )->getHeightWithMargin() );
maFocusRect.SetSize( aSz );
}
}
@@ -604,6 +604,11 @@ struct ImplEntryMetrics
long nImgHeight;
};
+long ImplEntryType::getHeightWithMargin() const
+{
+ return mnHeight + ImplGetSVData()->maNWFData.mnListBoxEntryMargin;
+}
+
SalLayoutGlyphs* ImplEntryType::GetTextGlyphs(OutputDevice* pOutputDevice)
{
if (maStrGlyphs.IsValid())
@@ -805,9 +810,10 @@ sal_Int32 ImplListBoxWindow::GetEntryPosForPoint( const Point& rPoint ) const
sal_Int32 nSelect = mnTop;
const ImplEntryType* pEntry = mpEntryList->GetEntryPtr( nSelect );
- while( pEntry && rPoint.Y() > pEntry->mnHeight + nY )
+ long nEntryHeight = pEntry->getHeightWithMargin();
+ while( pEntry && rPoint.Y() > nEntryHeight + nY )
{
- nY += pEntry->mnHeight;
+ nY += nEntryHeight;
pEntry = mpEntryList->GetEntryPtr( ++nSelect );
}
if( pEntry == nullptr )
@@ -832,6 +838,12 @@ bool ImplListBoxWindow::IsVisible( sal_Int32 i_nEntry ) const
return bRet;
}
+long ImplListBoxWindow::GetEntryHeightWithMargin() const
+{
+ long nMargin = ImplGetSVData()->maNWFData.mnListBoxEntryMargin;
+ return mnMaxHeight + nMargin;
+}
+
sal_Int32 ImplListBoxWindow::GetLastVisibleEntry() const
{
sal_Int32 nPos = mnTop;
@@ -1714,7 +1726,7 @@ void ImplListBoxWindow::ImplPaint(vcl::RenderContext& rRenderContext, sal_Int32
long nWidth = GetOutputSizePixel().Width();
long nY = mpEntryList->GetAddedHeight(nPos, mnTop);
- tools::Rectangle aRect(Point(0, nY), Size(nWidth, pEntry->mnHeight));
+ tools::Rectangle aRect(Point(0, nY), Size(nWidth, pEntry->getHeightWithMargin()));
if (mpEntryList->IsEntryPosSelected(nPos))
{
@@ -1760,6 +1772,8 @@ void ImplListBoxWindow::DrawEntry(vcl::RenderContext& rRenderContext, sal_Int32
if (!pEntry)
return;
+ long nEntryHeight = pEntry->getHeightWithMargin();
+
// when changing this function don't forget to adjust ImplWin::DrawEntry()
if (mbInUserDraw)
@@ -1774,7 +1788,7 @@ void ImplListBoxWindow::DrawEntry(vcl::RenderContext& rRenderContext, sal_Int32
if (!!aImage)
{
aImgSz = aImage.GetSizePixel();
- Point aPtImg(gnBorder - mnLeft, nY + ((pEntry->mnHeight - aImgSz.Height()) / 2));
+ Point aPtImg(gnBorder - mnLeft, nY + ((nEntryHeight - aImgSz.Height()) / 2));
// pb: #106948# explicit mirroring for calc
if (mbMirroring)
@@ -1821,7 +1835,7 @@ void ImplListBoxWindow::DrawEntry(vcl::RenderContext& rRenderContext, sal_Int32
nMaxWidth = GetOutputSizePixel().Width() - 2 * gnBorder;
tools::Rectangle aTextRect(Point(gnBorder - mnLeft, nY),
- Size(nMaxWidth, pEntry->mnHeight));
+ Size(nMaxWidth, nEntryHeight));
if (!bDrawTextAtImagePos && (mpEntryList->HasEntryImage(nPos) || IsUserDrawEnabled()))
{
@@ -1854,7 +1868,7 @@ void ImplListBoxWindow::DrawEntry(vcl::RenderContext& rRenderContext, sal_Int32
rRenderContext.SetLineColor((GetBackground().GetColor() != COL_LIGHTGRAY) ? COL_LIGHTGRAY : COL_GRAY);
Point aStartPos(0, nY);
if (isSeparator(nPos))
- aStartPos.AdjustY(pEntry->mnHeight - 1 );
+ aStartPos.AdjustY(pEntry->getHeightWithMargin() - 1 );
Point aEndPos(aStartPos);
aEndPos.setX( GetOutputSizePixel().Width() );
rRenderContext.DrawLine(aStartPos, aEndPos);
@@ -1882,12 +1896,13 @@ void ImplListBoxWindow::ImplDoPaint(vcl::RenderContext& rRenderContext, const to
for (sal_Int32 i = mnTop; i < nCount && nY < nHeight + mnMaxHeight; i++)
{
const ImplEntryType* pEntry = mpEntryList->GetEntryPtr(i);
- if (nY + pEntry->mnHeight >= rRect.Top() &&
+ long nEntryHeight = pEntry->getHeightWithMargin();
+ if (nY + nEntryHeight >= rRect.Top() &&
nY <= rRect.Bottom() + mnMaxHeight)
{
ImplPaint(rRenderContext, i);
}
- nY += pEntry->mnHeight;
+ nY += nEntryHeight;
}
long nHeightDiff = mpEntryList->GetAddedHeight(mnCurrentPos, mnTop);
@@ -1966,7 +1981,7 @@ void ImplListBoxWindow::SetTopEntry( sal_Int32 nTop )
if( nTop > nLastEntry )
nTop = nLastEntry;
const ImplEntryType* pLast = mpEntryList->GetEntryPtr( nLastEntry );
- while( nTop > 0 && mpEntryList->GetAddedHeight( nLastEntry, nTop-1 ) + pLast->mnHeight <= nWHeight )
+ while( nTop > 0 && mpEntryList->GetAddedHeight( nLastEntry, nTop-1 ) + pLast->getHeightWithMargin() <= nWHeight )
nTop--;
if ( nTop != mnTop )
@@ -2061,7 +2076,7 @@ Size ImplListBoxWindow::CalcSize(sal_Int32 nMaxLines) const
// FIXME: ListBoxEntryFlags::MultiLine
Size aSz;
- aSz.setHeight( nMaxLines * mnMaxHeight );
+ aSz.setHeight(nMaxLines * GetEntryHeightWithMargin());
aSz.setWidth( mnMaxWidth + 2*gnBorder );
return aSz;
}
@@ -2069,8 +2084,8 @@ Size ImplListBoxWindow::CalcSize(sal_Int32 nMaxLines) const
tools::Rectangle ImplListBoxWindow::GetBoundingRectangle( sal_Int32 nItem ) const
{
const ImplEntryType* pEntry = mpEntryList->GetEntryPtr( nItem );
- Size aSz( GetSizePixel().Width(), pEntry ? pEntry->mnHeight : GetEntryHeight() );
- long nY = mpEntryList->GetAddedHeight( nItem, GetTopEntry() ) + GetEntryList()->GetMRUCount()*GetEntryHeight();
+ Size aSz( GetSizePixel().Width(), pEntry ? pEntry->getHeightWithMargin() : GetEntryHeightWithMargin() );
+ long nY = mpEntryList->GetAddedHeight( nItem, GetTopEntry() ) + GetEntryList()->GetMRUCount()*GetEntryHeightWithMargin();
tools::Rectangle aRect( Point( 0, nY ), aSz );
return aRect;
}
@@ -2283,7 +2298,7 @@ void ImplListBox::ImplCheckScrollBars()
Size aOutSz = GetOutputSizePixel();
sal_Int32 nEntries = GetEntryList()->GetEntryCount();
- sal_uInt16 nMaxVisEntries = static_cast<sal_uInt16>(aOutSz.Height() / GetEntryHeight());
+ sal_uInt16 nMaxVisEntries = static_cast<sal_uInt16>(aOutSz.Height() / GetEntryHeightWithMargin());
// vertical ScrollBar
if( nEntries > nMaxVisEntries )
@@ -2323,7 +2338,7 @@ void ImplListBox::ImplCheckScrollBars()
if ( !mbVScroll ) // maybe we do need one now
{
- nMaxVisEntries = static_cast<sal_uInt16>( ( aOutSz.Height() - mpHScrollBar->GetSizePixel().Height() ) / GetEntryHeight() );
+ nMaxVisEntries = static_cast<sal_uInt16>( ( aOutSz.Height() - mpHScrollBar->GetSizePixel().Height() ) / GetEntryHeightWithMargin() );
if( nEntries > nMaxVisEntries )
{
bArrange = true;
@@ -2365,7 +2380,7 @@ void ImplListBox::ImplInitScrollBars()
if ( mbVScroll )
{
sal_Int32 nEntries = GetEntryList()->GetEntryCount();
- sal_uInt16 nVisEntries = static_cast<sal_uInt16>(aOutSz.Height() / GetEntryHeight());
+ sal_uInt16 nVisEntries = static_cast<sal_uInt16>(aOutSz.Height() / GetEntryHeightWithMargin());
mpVScrollBar->SetRangeMax( nEntries );
mpVScrollBar->SetVisibleSize( nVisEntries );
mpVScrollBar->SetPageSize( nVisEntries - 1 );
@@ -3056,7 +3071,7 @@ Size ImplListBoxFloatingWindow::CalcFloatSize()
// align height to entries...
long nInnerHeight = aFloatSz.Height() - nTop - nBottom;
- long nEntryHeight = mpImplLB->GetEntryHeight();
+ long nEntryHeight = mpImplLB->GetEntryHeightWithMargin();
if ( nInnerHeight % nEntryHeight )
{
nInnerHeight /= nEntryHeight;
diff --git a/vcl/source/control/listbox.cxx b/vcl/source/control/listbox.cxx
index d1ee6e2a876a..e85a61c4f4a4 100644
--- a/vcl/source/control/listbox.cxx
+++ b/vcl/source/control/listbox.cxx
@@ -1224,7 +1224,7 @@ Size ListBox::CalcSubEditSize() const
aSz = mpImplLB->CalcSize (mnLineCount ? mnLineCount : mpImplLB->GetEntryList()->GetEntryCount());
else
{
- aSz.setHeight( mpImplLB->CalcSize( 1 ).Height() );
+ aSz.setHeight( mpImplLB->GetEntryHeight() );
// Size to maxmimum entry width
aSz.setWidth( mpImplLB->GetMaxEntryWidth() );
@@ -1318,7 +1318,7 @@ void ListBox::GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines
{
Size aOutSz = mpImplLB->GetMainWindow()->GetOutputSizePixel();
rnCols = static_cast<sal_uInt16>(aOutSz.Width()/nCharWidth);
- rnLines = static_cast<sal_uInt16>(aOutSz.Height()/mpImplLB->GetEntryHeight());
+ rnLines = static_cast<sal_uInt16>(aOutSz.Height()/mpImplLB->GetEntryHeightWithMargin());
}
else
{
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index c3dda066f212..8751e53fc940 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -77,6 +77,7 @@ FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
pSVData->maNWFData.mbProgressNeedsErase = true;
pSVData->maNWFData.mnStatusBarLowerRightOffset = 10;
pSVData->maNWFData.mbCanDrawWidgetAnySize = true;
+ pSVData->maNWFData.mnListBoxEntryMargin = 20;
}
bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType eType, ControlPart ePart)
commit 0d634c63482d3f40af6c756b1433b81e5cf59343
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon May 6 22:10:57 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:56 2019 +0900
WidgetDefinition: add "action" state for the PushButton
Change-Id: I0db9ec275cc95184ceb2cdbce8ae5343a10582c1
Reviewed-on: https://gerrit.libreoffice.org/71861
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 7764439f85f23efb4510b41e795abd1e4c9089e9)
diff --git a/vcl/source/gdi/WidgetDefinition.cxx b/vcl/source/gdi/WidgetDefinition.cxx
index 6eb6ae7fa3ac..2a8ae5025020 100644
--- a/vcl/source/gdi/WidgetDefinition.cxx
+++ b/vcl/source/gdi/WidgetDefinition.cxx
@@ -99,6 +99,13 @@ WidgetDefinitionPart::getStates(ControlType eType, ControlPart ePart, ControlSta
}
}
break;
+ case ControlType::Pushbutton:
+ {
+ auto const& rPushButtonValue = static_cast<PushButtonValue const&>(rValue);
+ if (rPushButtonValue.mbIsAction)
+ sExtra = "action";
+ }
+ break;
default:
break;
}
commit 2049c25c16a35562d54c8415d0a77516e4213ed8
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Fri Apr 5 12:56:04 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:56 2019 +0900
fix spinbox right press SVG - plus sign didn't define a color
Change-Id: I1db6c5e4841530be7d46e8829899bf3f8cef8a3b
Reviewed-on: https://gerrit.libreoffice.org/70293
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 95573cad5793ab6743307890b56c205e21fe9d6d)
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg
index ac476a0da90f..41482a4bc961 100644
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg
+++ b/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg
@@ -1,6 +1,6 @@
<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
<path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="none" stroke="#007aff" stroke-linecap="round"/>
- <rect x="15" y="12" width="14" height="2"/>
- <rect x="21" y="6" width="2" height="14"/>
+ <rect x="15" y="12" width="14" height="2" fill="#007aff" />
+ <rect x="21" y="6" width="2" height="14" fill="#007aff" />
<path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="#007aff" opacity=".15" stroke="#007aff" stroke-linecap="round"/>
</svg>
commit e3b02c4950aae44555f4785d06f55ac80530f2a1
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Fri Apr 5 12:52:58 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:56 2019 +0900
support opacity for widget definition draw SVGs
This opacity influences the whole shape (stroke and fill).
Change-Id: I82e10e07dbf2f321805b55a5f4831a513e52dab8
Reviewed-on: https://gerrit.libreoffice.org/70292
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit fcb00ac8ebe2acb429f09ef5b728b8c73a5bbc37)
diff --git a/include/basegfx/DrawCommands.hxx b/include/basegfx/DrawCommands.hxx
index fda21e9231bb..92747c5af4d2 100644
--- a/include/basegfx/DrawCommands.hxx
+++ b/include/basegfx/DrawCommands.hxx
@@ -62,6 +62,7 @@ public:
double mnRy;
double mnStrokeWidth;
+ double mnOpacity;
std::shared_ptr<basegfx::BColor> mpFillColor;
std::shared_ptr<basegfx::BColor> mpStrokeColor;
@@ -71,6 +72,7 @@ public:
, mnRx(1.0)
, mnRy(1.0)
, mnStrokeWidth(1.0)
+ , mnOpacity(1.0)
{
}
};
@@ -81,6 +83,7 @@ public:
basegfx::B2DPolyPolygon maPolyPolygon;
double mnStrokeWidth;
+ double mnOpacity;
std::shared_ptr<basegfx::BColor> mpFillColor;
std::shared_ptr<basegfx::BColor> mpStrokeColor;
@@ -88,6 +91,7 @@ public:
: DrawBase(DrawCommandType::Path)
, maPolyPolygon(rPolyPolygon)
, mnStrokeWidth(1.0)
+ , mnOpacity(1.0)
{
}
};
diff --git a/svgio/qa/cppunit/SvgRead.cxx b/svgio/qa/cppunit/SvgRead.cxx
index 996be9d21f08..2319ef44879d 100644
--- a/svgio/qa/cppunit/SvgRead.cxx
+++ b/svgio/qa/cppunit/SvgRead.cxx
@@ -75,7 +75,7 @@ uno::Reference<io::XInputStream> TestParsing::parseSvg(const OUString& aSource)
void TestParsing::testSimpleRectangle()
{
- OUString aSvgFile = "/svgio/qa/cppunit/data/Rect.svg";
+ OUString aSvgFile = "/svgio/qa/cppunit/data/VisiotorTest-Rect.svg";
OUString aUrl = m_directories.getURLFromSrc(aSvgFile);
OUString aPath = m_directories.getPathFromSrc(aSvgFile);
@@ -103,6 +103,7 @@ void TestParsing::testSimpleRectangle()
CPPUNIT_ASSERT_EQUAL(sal_Int32(0xff0000), sal_Int32(Color(*pDrawRect->mpStrokeColor)));
CPPUNIT_ASSERT(bool(pDrawRect->mpFillColor));
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x00cc00), sal_Int32(Color(*pDrawRect->mpFillColor)));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.1, pDrawRect->mnOpacity, 1E-12);
}
void TestParsing::testPath()
@@ -134,6 +135,7 @@ void TestParsing::testPath()
CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), sal_Int32(Color(*pDrawPath->mpStrokeColor)));
CPPUNIT_ASSERT(bool(pDrawPath->mpFillColor));
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x007aff), sal_Int32(Color(*pDrawPath->mpFillColor)));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.1, pDrawPath->mnOpacity, 1E-12);
}
CPPUNIT_TEST_SUITE_REGISTRATION(TestParsing);
diff --git a/svgio/qa/cppunit/data/VisiotorTest-Rect.svg b/svgio/qa/cppunit/data/VisiotorTest-Rect.svg
new file mode 100644
index 000000000000..4cd2d3602ea3
--- /dev/null
+++ b/svgio/qa/cppunit/data/VisiotorTest-Rect.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" stroke="#ff0000" opacity="0.1" fill="#00cc00" stroke-width="3" />
+</svg>
diff --git a/svgio/qa/cppunit/data/path.svg b/svgio/qa/cppunit/data/path.svg
index 1722181c872e..559ceec6d557 100644
--- a/svgio/qa/cppunit/data/path.svg
+++ b/svgio/qa/cppunit/data/path.svg
@@ -1,3 +1,3 @@
<svg width="44" height="26" xmlns="http://www.w3.org/2000/svg">
- <path d="M1 1 H 43 V 25 H 1 L 1 1 Z" fill="#007aff" stroke="#fff" stroke-width="0"/>
+ <path d="M1 1 H 43 V 25 H 1 L 1 1 Z" fill="#007aff" stroke="#fff" opacity="0.1" stroke-width="0"/>
</svg>
diff --git a/svgio/source/svgreader/svgvisitor.cxx b/svgio/source/svgreader/svgvisitor.cxx
index 7b92e2fd0afb..011ce5492fa3 100644
--- a/svgio/source/svgreader/svgvisitor.cxx
+++ b/svgio/source/svgreader/svgvisitor.cxx
@@ -74,6 +74,8 @@ void SvgDrawVisitor::visit(svgio::svgreader::SvgNode const& rNode)
pRectangle->mnStrokeWidth
= rRectNode.getSvgStyleAttributes()->getStrokeWidth().getNumber();
+ pRectangle->mnOpacity = rRectNode.getSvgStyleAttributes()->getOpacity().getNumber();
+
const basegfx::BColor* pFillColor = rRectNode.getSvgStyleAttributes()->getFill();
if (pFillColor)
pRectangle->mpFillColor = std::make_shared<basegfx::BColor>(*pFillColor);
@@ -97,6 +99,8 @@ void SvgDrawVisitor::visit(svgio::svgreader::SvgNode const& rNode)
pDrawPath->mnStrokeWidth
= rPathNode.getSvgStyleAttributes()->getStrokeWidth().getNumber();
+ pDrawPath->mnOpacity = rPathNode.getSvgStyleAttributes()->getOpacity().getNumber();
+
const basegfx::BColor* pFillColor = rPathNode.getSvgStyleAttributes()->getFill();
if (pFillColor)
pDrawPath->mpFillColor = std::make_shared<basegfx::BColor>(*pFillColor);
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 210e50280ca0..c3dda066f212 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -185,14 +185,15 @@ void drawFromDrawCommands(gfx::DrawRoot const& rDrawRoot, SalGraphics& rGraphics
rGraphics.SetLineColor();
rGraphics.SetFillColor(Color(*rRectangle.mpFillColor));
rGraphics.DrawPolyPolygon(basegfx::B2DHomMatrix(),
- basegfx::B2DPolyPolygon(aB2DPolygon), 0.0f, nullptr);
+ basegfx::B2DPolyPolygon(aB2DPolygon),
+ 1.0 - rRectangle.mnOpacity, nullptr);
}
if (rRectangle.mpStrokeColor)
{
rGraphics.SetLineColor(Color(*rRectangle.mpStrokeColor));
rGraphics.SetFillColor();
rGraphics.DrawPolyLine(
- basegfx::B2DHomMatrix(), aB2DPolygon, 0.0f,
+ basegfx::B2DHomMatrix(), aB2DPolygon, 1.0 - rRectangle.mnOpacity,
basegfx::B2DVector(rRectangle.mnStrokeWidth, rRectangle.mnStrokeWidth),
basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND, 0.0f, false,
nullptr);
@@ -229,7 +230,8 @@ void drawFromDrawCommands(gfx::DrawRoot const& rDrawRoot, SalGraphics& rGraphics
{
rGraphics.SetLineColor();
rGraphics.SetFillColor(Color(*rPath.mpFillColor));
- rGraphics.DrawPolyPolygon(basegfx::B2DHomMatrix(), aPolyPolygon, 0.0f, nullptr);
+ rGraphics.DrawPolyPolygon(basegfx::B2DHomMatrix(), aPolyPolygon,
+ 1.0 - rPath.mnOpacity, nullptr);
}
if (rPath.mpStrokeColor)
{
@@ -238,7 +240,7 @@ void drawFromDrawCommands(gfx::DrawRoot const& rDrawRoot, SalGraphics& rGraphics
for (auto const& rPolygon : aPolyPolygon)
{
rGraphics.DrawPolyLine(
- basegfx::B2DHomMatrix(), rPolygon, 0.0f,
+ basegfx::B2DHomMatrix(), rPolygon, 1.0 - rPath.mnOpacity,
basegfx::B2DVector(rPath.mnStrokeWidth, rPath.mnStrokeWidth),
basegfx::B2DLineJoin::Round, css::drawing::LineCap_ROUND, 0.0f, false,
nullptr);
commit 13f71c4924fc2d1050faf48c099031e79c049826
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Apr 4 21:51:22 2019 +0900
Commit: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Thu Aug 29 20:10:56 2019 +0900
ios widget defs: update combobox, checkbox, spinbox SVGs
In addition remove spinbox pressed state (it wasn't useful) and
draw white filled empty rect for spinbox as we don't draw the
background automatically.
Change-Id: I892108c5839dc463cdb9e4f4f09276fc184f4944
Reviewed-on: https://gerrit.libreoffice.org/70258
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 64ee37e4409dbde80bd98fb8d3f65b0146b9cb92)
diff --git a/vcl/Package_theme_definitions.mk b/vcl/Package_theme_definitions.mk
index dbb0a92fe268..395a90b19b6e 100644
--- a/vcl/Package_theme_definitions.mk
+++ b/vcl/Package_theme_definitions.mk
@@ -25,11 +25,9 @@ $(eval $(call gb_Package_add_files_with_dir,vcl_theme_definitions,$(LIBO_SHARE_F
ios/tick-on-disabled.svg \
ios/spinbox-left.svg \
ios/spinbox-left-pressed.svg \
- ios/spinbox-left-rollover.svg \
ios/spinbox-left-disabled.svg \
ios/spinbox-right.svg \
ios/spinbox-right-pressed.svg \
- ios/spinbox-right-rollover.svg \
ios/spinbox-right-disabled.svg \
ios/common-rect.svg \
ios/common-rect-disabled.svg \
diff --git a/vcl/uiconfig/theme_definitions/ios/definition.xml b/vcl/uiconfig/theme_definitions/ios/definition.xml
index 5b4aa12b44ea..61d6aa21578e 100644
--- a/vcl/uiconfig/theme_definitions/ios/definition.xml
+++ b/vcl/uiconfig/theme_definitions/ios/definition.xml
@@ -102,7 +102,7 @@
<image source="tick-off-pressed.svg" />
</state>
<state enabled="false" button-value="false">
- <image source="tick-on-disabled.svg" />
+ <image source="tick-off-disabled.svg" />
</state>
</part>
<part value="Focus">
@@ -113,7 +113,7 @@
</radiobutton>
<checkbox>
- <part value="Entire" width="44" height="26">
+ <part value="Entire" width="46" height="32">
<state enabled="true" pressed="false" button-value="true">
<image source="switch-on.svg" />
</state>
@@ -130,7 +130,7 @@
<image source="switch-off-pressed.svg" />
</state>
<state enabled="false" button-value="false">
- <image source="switch-on-disabled.svg" />
+ <image source="switch-off-disabled.svg" />
</state>
</part>
<part value="Focus">
@@ -192,8 +192,7 @@
</state>
</part>
<part value="SubEdit">
- <state>
- </state>
+ <state/> <!-- Intentional empty - don't draw anything -->
</part>
<part value="ButtonDown" width="35" height="36">
<state enabled="true">
@@ -212,7 +211,9 @@
<spinbox>
<part value="Entire">
- <state/> <!-- Intentional empty - don't draw anything -->
+ <state>
+ <rect stroke="#ffffff" fill="#ffffff" stroke-width="0" />
+ </state>
</part>
<part value="SubEdit">
<state/> <!-- Intentional empty - don't draw anything -->
@@ -224,9 +225,6 @@
<state enabled="true" pressed="true">
<external source="spinbox-left-pressed.svg" />
</state>
- <state enabled="true" rollover="true">
- <external source="spinbox-left-rollover.svg" />
- </state>
<state enabled="false">
<external source="spinbox-left-disabled.svg" />
</state>
@@ -238,9 +236,6 @@
<state enabled="true" pressed="true">
<external source="spinbox-right-pressed.svg" />
</state>
- <state enabled="true" rollover="true">
- <external source="spinbox-right-rollover.svg" />
- </state>
<state enabled="false">
<external source="spinbox-right-disabled.svg" />
</state>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-left-disabled.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-left-disabled.svg
index b239b8e239b9..01cac0c3e881 100644
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-left-disabled.svg
+++ b/vcl/uiconfig/theme_definitions/ios/spinbox-left-disabled.svg
@@ -1,4 +1,4 @@
<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
<path d="m4.9103 0.5h38.59v25h-38.59c-2.4433 0-4.4103-1.784-4.4103-4v-17c0-2.216 1.967-4 4.4103-4z" fill="#fff" stroke="#8e8e93" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#8e8e93"/>
+ <rect x="15" y="12" width="14" height="2" fill="#8e8e93"/>
</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-left-pressed.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-left-pressed.svg
index 1ddc6503b087..df8c90cccb89 100644
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-left-pressed.svg
+++ b/vcl/uiconfig/theme_definitions/ios/spinbox-left-pressed.svg
@@ -1,4 +1,5 @@
<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
- <path d="m4.9103 0.5h38.59v25h-38.59c-2.4433 0-4.4103-1.784-4.4103-4v-17c0-2.216 1.967-4 4.4103-4z" fill="#49a0ff" stroke="#007aff" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#fff"/>
+ <path d="m4.9103 0.5h38.59v25h-38.59c-2.4433 0-4.4103-1.784-4.4103-4v-17c0-2.216 1.967-4 4.4103-4z" fill="none" stroke="#007aff" stroke-linecap="round"/>
+ <rect x="15" y="12" width="14" height="2" fill="#007aff"/>
+ <path d="m4.9103 0.5h38.59v25h-38.59c-2.4433 0-4.4103-1.784-4.4103-4v-17c0-2.216 1.967-4 4.4103-4z" fill="#007aff" opacity=".15" stroke="#007aff" stroke-linecap="round"/>
</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-left-rollover.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-left-rollover.svg
deleted file mode 100644
index ae9634759af3..000000000000
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-left-rollover.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
- <path d="m4.9103 0.5h38.59v25h-38.59c-2.4433 0-4.4103-1.784-4.4103-4v-17c0-2.216 1.967-4 4.4103-4z" fill="#dbecff" stroke="#007aff" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#007aff"/>
-</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-left.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-left.svg
index 25296e8000ce..a300f6f3af2c 100644
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-left.svg
+++ b/vcl/uiconfig/theme_definitions/ios/spinbox-left.svg
@@ -1,4 +1,4 @@
<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
<path d="m4.9103 0.5h38.59v25h-38.59c-2.4433 0-4.4103-1.784-4.4103-4v-17c0-2.216 1.967-4 4.4103-4z" fill="#fff" stroke="#007aff" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#007aff"/>
+ <rect x="15" y="12" width="14" height="2" fill="#007aff"/>
</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-right-disabled.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-right-disabled.svg
index 5d7f8de2cff8..5eb82b2f8f72 100644
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-right-disabled.svg
+++ b/vcl/uiconfig/theme_definitions/ios/spinbox-right-disabled.svg
@@ -1,5 +1,5 @@
<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
<path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="#fff" stroke="#8e8e93" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#8e8e93"/>
- <rect x="21" y="8" width="2" height="10" fill="#8e8e93"/>
+ <rect x="15" y="12" width="14" height="2" fill="#8e8e93"/>
+ <rect x="21" y="6" width="2" height="14" fill="#8e8e93"/>
</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg
index 0c5ee41db734..ac476a0da90f 100644
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg
+++ b/vcl/uiconfig/theme_definitions/ios/spinbox-right-pressed.svg
@@ -1,5 +1,6 @@
<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
- <path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="#49a0ff" stroke="#007aff" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#fff"/>
- <rect x="21" y="8" width="2" height="10" fill="#fff"/>
+ <path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="none" stroke="#007aff" stroke-linecap="round"/>
+ <rect x="15" y="12" width="14" height="2"/>
+ <rect x="21" y="6" width="2" height="14"/>
+ <path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="#007aff" opacity=".15" stroke="#007aff" stroke-linecap="round"/>
</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-right-rollover.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-right-rollover.svg
deleted file mode 100644
index 7f07d86f3ff4..000000000000
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-right-rollover.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
- <path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="#dbecff" stroke="#007aff" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#007aff"/>
- <rect x="21" y="8" width="2" height="10" fill="#007aff"/>
-</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/spinbox-right.svg b/vcl/uiconfig/theme_definitions/ios/spinbox-right.svg
index dc27b98296a4..6e6676052be4 100644
--- a/vcl/uiconfig/theme_definitions/ios/spinbox-right.svg
+++ b/vcl/uiconfig/theme_definitions/ios/spinbox-right.svg
@@ -1,5 +1,5 @@
<svg version="1.1" viewBox="0 0 44 26" xmlns="http://www.w3.org/2000/svg">
<path d="m0.5 0.5h38.59c2.4433 0 4.4103 1.784 4.4103 4v17c0 2.216-1.967 4-4.4103 4h-38.59z" fill="#fff" stroke="#007aff" stroke-linecap="round"/>
- <rect x="17" y="12" width="10" height="2" fill="#007aff"/>
- <rect x="21" y="8" width="2" height="10" fill="#007aff"/>
+ <rect x="15" y="12" width="14" height="2" fill="#007aff"/>
+ <rect x="21" y="6" width="2" height="14" fill="#007aff"/>
</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/switch-off-disabled.svg b/vcl/uiconfig/theme_definitions/ios/switch-off-disabled.svg
index 7fb674b79c44..a24166a7679f 100644
--- a/vcl/uiconfig/theme_definitions/ios/switch-off-disabled.svg
+++ b/vcl/uiconfig/theme_definitions/ios/switch-off-disabled.svg
@@ -1,182 +1,14 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="44"
- height="26"
- viewBox="0 0 11.641666 6.8791669"
- version="1.1"
- id="svg1344"
- sodipodi:docname="switch-off-disabled-inkscape.svg"
- inkscape:version="0.92.4 5da689c313, 2019-01-14">
- <defs
- id="defs1338">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient1305-1"
- id="linearGradient90305"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(221.11606,-122.19969)"
- x1="12.628486"
- y1="74.504791"
- x2="17.991665"
- y2="74.504791" />
- <linearGradient
- id="linearGradient1305-1"
- inkscape:collect="always">
- <stop
- id="stop1301-0"
- offset="0"
- style="stop-color:#fafafa;stop-opacity:1" />
- <stop
- id="stop1303-1"
- offset="1"
- style="stop-color:#f0f0f0;stop-opacity:1" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient1982"
- id="radialGradient90307"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.8606398,0.03262669,-0.00495255,0.43422932,-444.76567,-34.699637)"
- cx="238.88559"
- cy="-48.005653"
- fx="238.88559"
- fy="-48.005653"
- r="5.8247647" />
- <linearGradient
- id="linearGradient1982"
- inkscape:collect="always">
- <stop
- id="stop1978"
- offset="0"
- style="stop-color:#e6e6e6;stop-opacity:1" />
- <stop
- id="stop1980"
- offset="1"
- style="stop-color:#e6e6e6;stop-opacity:0" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient1315-6"
- id="linearGradient90309"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.95999995,0,0,0.95999995,221.81456,-118.9557)"
- x1="24.494602"
- y1="70.76062"
- x2="17.508867"
- y2="77.49472" />
- <linearGradient
- id="linearGradient1315-6"
- inkscape:collect="always">
- <stop
- id="stop1311-0"
- offset="0"
- style="stop-color:#c8c8c8;stop-opacity:1" />
- <stop
- id="stop1313-7"
- offset="1"
- style="stop-color:#f5f5f5;stop-opacity:0" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#ff47c6"
- borderopacity="1"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.979899"
- inkscape:cx="86.037232"
- inkscape:cy="-1.1532721"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="960"
- inkscape:window-height="1016"
- inkscape:window-x="960"
- inkscape:window-y="27"
- inkscape:window-maximized="0"
- inkscape:showpageshadow="false"
- borderlayer="true"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
- <metadata
- id="metadata1341">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(245.45773,51.15387)">
- <g
- inkscape:label="Layer 1"
- id="g90303"
- transform="translate(3.6903419e-6)">
- <rect
- style="opacity:1;fill:url(#linearGradient90305);fill-opacity:1;stroke:none;stroke-width:0.34406587;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect90293"
- width="11.641666"
- height="6.8791666"
- x="233.81607"
- y="-51.15387"
- rx="3.4395833"
- ry="5.2916665"
- transform="scale(-1,1)" />
- <rect
- style="opacity:1;fill:none;fill-opacity:1;stroke:#f0f0f0;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect90295"
- width="11.384946"
- height="6.6224456"
- x="233.94443"
- y="-51.025509"
- rx="3.3637338"
- ry="5.0941887"
- transform="scale(-1,1)" />
- <rect
- transform="scale(-1,1)"
- ry="5.0941887"
- rx="3.3637338"
- y="-51.025509"
- x="233.94443"
- height="6.6224456"
- width="11.384946"
- id="rect90297"
- style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient90307);stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <circle
- r="3.175"
- cy="-47.449703"
- cx="241.75357"
- id="circle90299"
- style="opacity:1;fill:url(#linearGradient90309);fill-opacity:1;stroke:none;stroke-width:0.27212897;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <circle
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:0.27212897;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="circle90301"
- cx="242.01814"
- cy="-47.714287"
- r="3.175"
- transform="scale(-1,1)" />
- </g>
+<svg version="1.1" viewBox="0 0 46 32" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <filter id="filter864" x="-.072" y="-.072" width="1.144" height="1.144" color-interpolation-filters="sRGB">
+ <feGaussianBlur stdDeviation="0.1905"/>
+ </filter>
+ </defs>
+ <g transform="matrix(3.7783 0 0 3.8564 927.42 199.77)">
+ <g transform="translate(.5911 .076237)" opacity=".5">
+ <rect transform="scale(-1,1)" x="234.59" y="-50.912" width="10.74" height="6.3951" rx="3.175" ry="6.35" fill="none" opacity="1" stroke="#e4e4e4" stroke-width=".3788"/>
+ <circle transform="matrix(-1 0 0 1 -.39821 .23624)" cx="241.75" cy="-47.45" r="3.175" fill="#c6c6c6" filter="url(#filter864)" opacity=".75"/>
+ <circle transform="scale(-1,1)" cx="242.15" cy="-47.714" r="2.9829" fill="#fefeff" opacity="1" stroke="#ebebeb" stroke-opacity=".78431" stroke-width=".13229"/>
</g>
+ </g>
</svg>
diff --git a/vcl/uiconfig/theme_definitions/ios/switch-off-pressed.svg b/vcl/uiconfig/theme_definitions/ios/switch-off-pressed.svg
index 964f42cd7a16..f1f898096238 100644
--- a/vcl/uiconfig/theme_definitions/ios/switch-off-pressed.svg
+++ b/vcl/uiconfig/theme_definitions/ios/switch-off-pressed.svg
@@ -1,159 +1,15 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="44"
- height="26"
- viewBox="0 0 11.641666 6.8791669"
- version="1.1"
- id="svg1344"
- sodipodi:docname="switch-off-pressed-inkscape.svg"
- inkscape:version="0.92.4 5da689c313, 2019-01-14">
- <defs
- id="defs1338">
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="74.504791"
- x2="17.991665"
- y1="74.504791"
- x1="12.628486"
- id="linearGradient1307-9"
- xlink:href="#linearGradient1305-9"
- inkscape:collect="always"
- gradientTransform="translate(221.11606,-122.19969)" />
- <linearGradient
- id="linearGradient1305-9"
- inkscape:collect="always">
- <stop
- id="stop1301-4"
- offset="0"
- style="stop-color:#ebebeb;stop-opacity:1" />
- <stop
- id="stop1303-5"
- offset="1"
- style="stop-color:#ebebeb;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- gradientTransform="matrix(0.95999995,0,0,0.95999995,221.81456,-118.9557)"
- gradientUnits="userSpaceOnUse"
- y2="77.49472"
- x2="17.508867"
- y1="70.76062"
- x1="24.494602"
- id="linearGradient1317-9"
- xlink:href="#linearGradient1315-6"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient1315-6"
- inkscape:collect="always">
- <stop
- id="stop1311-0"
- offset="0"
- style="stop-color:#c8c8c8;stop-opacity:1" />
- <stop
- id="stop1313-7"
- offset="1"
- style="stop-color:#f5f5f5;stop-opacity:0" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#ff47c6"
- borderopacity="1"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="24.540385"
- inkscape:cy="11.223509"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="960"
- inkscape:window-height="1016"
- inkscape:window-x="960"
- inkscape:window-y="27"
- inkscape:window-maximized="0"
- inkscape:showpageshadow="false"
- borderlayer="true"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
- <metadata
- id="metadata1341">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(245.45773,51.15387)">
- <g
- transform="translate(3.6903419e-6)"
- id="layer1-03"
- inkscape:label="Layer 1">
- <rect
- transform="scale(-1,1)"
- ry="5.2916665"
- rx="3.4395833"
- y="-51.15387"
- x="233.81607"
- height="6.8791666"
- width="11.641666"
- id="rect1282-78"
- style="opacity:1;fill:url(#linearGradient1307-9);fill-opacity:1;stroke:none;stroke-width:0.34406587;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,1)"
- ry="5.0941887"
- rx="3.3637338"
- y="-51.025509"
- x="233.94443"
- height="6.6224456"
- width="11.384946"
- id="rect1996-8"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#f0f0f0;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:none;fill-opacity:1;stroke:#f0f0f0;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1968-6"
- width="11.384946"
- height="6.6224456"
- x="233.94443"
- y="-51.025509"
- rx="3.3637338"
- ry="5.0941887"
- transform="scale(-1,1)" />
- <circle
- transform="scale(-1,1)"
- style="opacity:1;fill:url(#linearGradient1317-9);fill-opacity:1;stroke:none;stroke-width:0.27212897;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="circle1309-0"
- cx="241.75357"
- cy="-47.449703"
- r="3.175" />
- <circle
- transform="scale(-1,1)"
- r="3.175"
- cy="-47.714287"
- cx="242.01814"
- id="path1293-4"
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list