summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svx/linectrl.hxx5
-rw-r--r--include/svx/sidebar/LinePropertyPanelBase.hxx4
-rw-r--r--svx/source/sidebar/line/LinePropertyPanelBase.cxx18
-rw-r--r--svx/source/tbxctrls/linectrl.cxx9
4 files changed, 22 insertions, 14 deletions
diff --git a/include/svx/linectrl.hxx b/include/svx/linectrl.hxx
index 62f428aa5136..7ade8dc06643 100644
--- a/include/svx/linectrl.hxx
+++ b/include/svx/linectrl.hxx
@@ -32,6 +32,7 @@ class XLineStyleItem;
class XLineDashItem;
typedef std::function<bool(const OUString&, const css::uno::Any&)> LineStyleSelectFunction;
+typedef std::function<void(bool)> LineStyleIsNoneFunction;
// SvxLineStyleController:
class SVXCORE_DLLPUBLIC SvxLineStyleToolBoxControl final : public svt::PopupWindowController
@@ -40,6 +41,7 @@ private:
std::unique_ptr<svx::ToolboxButtonLineStyleUpdater> m_xBtnUpdater;
LineStyleSelectFunction m_aLineStyleSelectFunction;
+ LineStyleIsNoneFunction m_aLineStyleIsNoneFunction;
public:
SvxLineStyleToolBoxControl( const css::uno::Reference<css::uno::XComponentContext>& rContext );
@@ -56,7 +58,10 @@ public:
virtual ~SvxLineStyleToolBoxControl() override;
+ // called when the user selects a line style
void setLineStyleSelectFunction(const LineStyleSelectFunction& aLineStyleSelectFunction);
+ // called when the line style changes, can be used to trigger disabling the arrows if the none line style is selected
+ void setLineStyleIsNoneFunction(const LineStyleIsNoneFunction& aLineStyleIsNoneFunction);
void dispatchLineStyleCommand(const OUString& rCommand, const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
private:
diff --git a/include/svx/sidebar/LinePropertyPanelBase.hxx b/include/svx/sidebar/LinePropertyPanelBase.hxx
index 1905e66d7c2c..cd924e6b8a8f 100644
--- a/include/svx/sidebar/LinePropertyPanelBase.hxx
+++ b/include/svx/sidebar/LinePropertyPanelBase.hxx
@@ -40,7 +40,7 @@ class XDashList;
namespace svx::sidebar
{
-class DisableArrowsWrapper;
+class LineStyleNoneChange;
class SVX_DLLPUBLIC LinePropertyPanelBase : public PanelLayout
{
@@ -108,7 +108,7 @@ private:
//popup windows
std::unique_ptr<LineWidthPopup> mxLineWidthPopup;
- std::unique_ptr<DisableArrowsWrapper> mxDisableArrowsWrapper;
+ std::unique_ptr<LineStyleNoneChange> mxLineStyleNoneChange;
sal_uInt16 mnTrans;
MapUnit meMapUnit;
diff --git a/svx/source/sidebar/line/LinePropertyPanelBase.cxx b/svx/source/sidebar/line/LinePropertyPanelBase.cxx
index 2c144e48ccd8..f1b49ebde5c1 100644
--- a/svx/source/sidebar/line/LinePropertyPanelBase.cxx
+++ b/svx/source/sidebar/line/LinePropertyPanelBase.cxx
@@ -36,26 +36,20 @@ const char SELECTWIDTH[] = "SelectWidth";
namespace svx::sidebar {
// trigger disabling the arrows if the none line style is selected
-class DisableArrowsWrapper
+class LineStyleNoneChange
{
private:
LinePropertyPanelBase& m_rPanel;
public:
- DisableArrowsWrapper(LinePropertyPanelBase& rPanel)
+ LineStyleNoneChange(LinePropertyPanelBase& rPanel)
: m_rPanel(rPanel)
{
}
- bool operator()(const OUString& rCommand, const css::uno::Any& rValue)
+ void operator()(bool bLineStyleNone)
{
- if (rCommand == ".uno:XLineStyle")
- {
- css::drawing::LineStyle eLineStyle(css::drawing::LineStyle_NONE);
- rValue >>= eLineStyle;
- m_rPanel.SetNoneLineStyle(eLineStyle == css::drawing::LineStyle_NONE);
- }
- return false;
+ m_rPanel.SetNoneLineStyle(bLineStyleNone);
}
};
@@ -89,7 +83,7 @@ LinePropertyPanelBase::LinePropertyPanelBase(
mxGridLineProps(m_xBuilder->weld_widget("lineproperties")),
mxBoxArrowProps(m_xBuilder->weld_widget("arrowproperties")),
mxLineWidthPopup(new LineWidthPopup(mxTBWidth.get(), *this)),
- mxDisableArrowsWrapper(new DisableArrowsWrapper(*this)),
+ mxLineStyleNoneChange(new LineStyleNoneChange(*this)),
mnTrans(0),
meMapUnit(MapUnit::MapMM),
mnWidthCoreValue(0),
@@ -150,7 +144,7 @@ void LinePropertyPanelBase::Initialize()
mxLBCapStyle->connect_changed( LINK( this, LinePropertyPanelBase, ChangeCapStyleHdl ) );
SvxLineStyleToolBoxControl* pLineStyleControl = getLineStyleToolBoxControl(*mxLineStyleDispatch);
- pLineStyleControl->setLineStyleSelectFunction(*mxDisableArrowsWrapper);
+ pLineStyleControl->setLineStyleIsNoneFunction(*mxLineStyleNoneChange);
}
void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDefault,
diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx
index 5123db3f4bf7..895558d12f20 100644
--- a/svx/source/tbxctrls/linectrl.cxx
+++ b/svx/source/tbxctrls/linectrl.cxx
@@ -96,6 +96,7 @@ void SAL_CALL SvxLineStyleToolBoxControl::statusChanged( const frame::FeatureSta
XDashListRef xList = pItem->GetDashList();
int nIndex = m_xBtnUpdater->GetStyleIndex();
+ bool bNoneLineStyle = false;
switch (nIndex)
{
case -1:
@@ -110,6 +111,7 @@ void SAL_CALL SvxLineStyleToolBoxControl::statusChanged( const frame::FeatureSta
}
else
pToolBox->SetItemImage(nId, Image(aEmpty));
+ bNoneLineStyle = true;
break;
}
case 1:
@@ -131,6 +133,8 @@ void SAL_CALL SvxLineStyleToolBoxControl::statusChanged( const frame::FeatureSta
pToolBox->SetItemImage(nId, Image(xList->GetUiBitmap(nIndex - 2)));
break;
}
+ if (m_aLineStyleIsNoneFunction)
+ m_aLineStyleIsNoneFunction(bNoneLineStyle);
}
void SAL_CALL SvxLineStyleToolBoxControl::execute(sal_Int16 /*KeyModifier*/)
@@ -173,6 +177,11 @@ void SvxLineStyleToolBoxControl::setLineStyleSelectFunction(const LineStyleSelec
m_aLineStyleSelectFunction = rLineStyleSelectFunction;
}
+void SvxLineStyleToolBoxControl::setLineStyleIsNoneFunction(const LineStyleIsNoneFunction& rLineStyleIsNoneFunction)
+{
+ m_aLineStyleIsNoneFunction = rLineStyleIsNoneFunction;
+}
+
void SvxLineStyleToolBoxControl::dispatchLineStyleCommand(const OUString& rCommand, const Sequence<PropertyValue>& rArgs)
{
if (m_aLineStyleSelectFunction && m_aLineStyleSelectFunction(rCommand, rArgs[0].Value))