[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