summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-05-07 12:06:30 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-05-17 21:13:49 +0200
commit64576639c4f2d42268692dde8edb53d6791354cd (patch)
tree98fb9683c88a5bee8920c6fc4f5a247bdb3b27b2
parentbump product version to 6.2.4.2.0+ (diff)
downloadcore-libreoffice-6-2-4.tar.gz
core-libreoffice-6-2-4.zip
Resolves: tdf#125106 fix cell protect TriState toggles libreoffice-6-2-4
and merge duplicated TriStateEnabled class Reviewed-on: https://gerrit.libreoffice.org/71905 Tested-by: Xisco Faulí <xiscofauli@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 2376db068d8194d3455681a559369e50743e29f3) Change-Id: I1f145558fe9d86682e03481fb2800386d04d2b1d Reviewed-on: https://gerrit.libreoffice.org/71994 Reviewed-by: Michael Stahl <Michael.Stahl@cib.de> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--cui/source/inc/paragrph.hxx28
-rw-r--r--cui/source/tabpages/paragrph.cxx20
-rw-r--r--include/vcl/weld.hxx12
-rw-r--r--sc/source/ui/attrdlg/tabpages.cxx51
-rw-r--r--sc/source/ui/inc/tabpages.hxx13
-rw-r--r--vcl/source/app/salvtables.cxx20
6 files changed, 89 insertions, 55 deletions
diff --git a/cui/source/inc/paragrph.hxx b/cui/source/inc/paragrph.hxx
index 183dbba699dc..b741934754ef 100644
--- a/cui/source/inc/paragrph.hxx
+++ b/cui/source/inc/paragrph.hxx
@@ -184,18 +184,6 @@ public:
virtual void PageCreated(const SfxAllItemSet& aSet) override;
};
-struct TriStateEnabled
-{
- TriState eState;
- bool bTriStateEnabled;
- TriStateEnabled()
- : eState(TRISTATE_INDET)
- , bTriStateEnabled(true)
- {
- }
- void ButtonToggled(weld::ToggleButton& rToggle);
-};
-
// class SvxExtParagraphTabPage ------------------------------------------
/*
[Description]
@@ -235,14 +223,14 @@ protected:
private:
SvxExtParagraphTabPage(TabPageParent pParent, const SfxItemSet& rSet);
- TriStateEnabled aHyphenState;
- TriStateEnabled aPageBreakState;
- TriStateEnabled aApplyCollState;
- TriStateEnabled aPageNumState;
- TriStateEnabled aKeepTogetherState;
- TriStateEnabled aKeepParaState;
- TriStateEnabled aOrphanState;
- TriStateEnabled aWidowState;
+ weld::TriStateEnabled aHyphenState;
+ weld::TriStateEnabled aPageBreakState;
+ weld::TriStateEnabled aApplyCollState;
+ weld::TriStateEnabled aPageNumState;
+ weld::TriStateEnabled aKeepTogetherState;
+ weld::TriStateEnabled aKeepParaState;
+ weld::TriStateEnabled aOrphanState;
+ weld::TriStateEnabled aWidowState;
bool bPageBreak;
bool bHtmlMode;
diff --git a/cui/source/tabpages/paragrph.cxx b/cui/source/tabpages/paragrph.cxx
index a8d9d8ab6003..35515175c760 100644
--- a/cui/source/tabpages/paragrph.cxx
+++ b/cui/source/tabpages/paragrph.cxx
@@ -2063,26 +2063,6 @@ IMPL_LINK(SvxExtParagraphTabPage, WidowHdl_Impl, weld::ToggleButton&, rToggle, v
WidowHdl();
}
-void TriStateEnabled::ButtonToggled(weld::ToggleButton& rToggle)
-{
- if (bTriStateEnabled)
- {
- switch (eState)
- {
- case TRISTATE_INDET:
- rToggle.set_state(TRISTATE_FALSE);
- break;
- case TRISTATE_TRUE:
- rToggle.set_state(TRISTATE_INDET);
- break;
- case TRISTATE_FALSE:
- rToggle.set_state(TRISTATE_TRUE);
- break;
- }
- }
- eState = rToggle.get_state();
-}
-
IMPL_LINK(SvxExtParagraphTabPage, OrphanHdl_Impl, weld::ToggleButton&, rToggle, void)
{
aOrphanState.ButtonToggled(rToggle);
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 449829015054..a124cd09786d 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -627,6 +627,18 @@ public:
virtual void connect_toggled(const Link<ToggleButton&, void>& rLink) { m_aToggleHdl = rLink; }
};
+struct VCL_DLLPUBLIC TriStateEnabled
+{
+ TriState eState;
+ bool bTriStateEnabled;
+ TriStateEnabled()
+ : eState(TRISTATE_INDET)
+ , bTriStateEnabled(true)
+ {
+ }
+ void ButtonToggled(ToggleButton& rToggle);
+};
+
class VCL_DLLPUBLIC MenuButton : virtual public ToggleButton
{
protected:
diff --git a/sc/source/ui/attrdlg/tabpages.cxx b/sc/source/ui/attrdlg/tabpages.cxx
index 4e82125791dc..8795514813aa 100644
--- a/sc/source/ui/attrdlg/tabpages.cxx
+++ b/sc/source/ui/attrdlg/tabpages.cxx
@@ -49,10 +49,10 @@ ScTabPageProtection::ScTabPageProtection(TabPageParent pParent, const SfxItemSet
// States will be set in Reset
bTriEnabled = bDontCare = bProtect = bHideForm = bHideCell = bHidePrint = false;
- m_xBtnProtect->connect_toggled(LINK(this, ScTabPageProtection, ButtonClickHdl));
- m_xBtnHideCell->connect_toggled(LINK(this, ScTabPageProtection, ButtonClickHdl));
- m_xBtnHideFormula->connect_toggled(LINK(this, ScTabPageProtection, ButtonClickHdl));
- m_xBtnHidePrint->connect_toggled(LINK(this, ScTabPageProtection, ButtonClickHdl));
+ m_xBtnProtect->connect_toggled(LINK(this, ScTabPageProtection, ProtectClickHdl));
+ m_xBtnHideCell->connect_toggled(LINK(this, ScTabPageProtection, HideCellClickHdl));
+ m_xBtnHideFormula->connect_toggled(LINK(this, ScTabPageProtection, HideFormulaClickHdl));
+ m_xBtnHidePrint->connect_toggled(LINK(this, ScTabPageProtection, HidePrintClickHdl));
}
ScTabPageProtection::~ScTabPageProtection()
@@ -98,14 +98,10 @@ void ScTabPageProtection::Reset( const SfxItemSet* rCoreAttrs )
bHidePrint = pProtAttr->GetHidePrint();
}
- // Start Controls
- if (bTriEnabled)
- {
- m_xBtnProtect->set_state(TRISTATE_INDET);
- m_xBtnHideCell->set_state(TRISTATE_INDET);
- m_xBtnHideFormula->set_state(TRISTATE_INDET);
- m_xBtnHidePrint->set_state(TRISTATE_INDET);
- }
+ aHideCellState.bTriStateEnabled = bTriEnabled;
+ aProtectState.bTriStateEnabled = bTriEnabled;
+ aHideFormulaState.bTriStateEnabled = bTriEnabled;
+ aHidePrintState.bTriStateEnabled = bTriEnabled;
UpdateButtons();
}
@@ -148,7 +144,31 @@ DeactivateRC ScTabPageProtection::DeactivatePage( SfxItemSet* pSetP )
return DeactivateRC::LeavePage;
}
-IMPL_LINK(ScTabPageProtection, ButtonClickHdl, weld::ToggleButton&, rBox, void)
+IMPL_LINK(ScTabPageProtection, ProtectClickHdl, weld::ToggleButton&, rBox, void)
+{
+ aProtectState.ButtonToggled(rBox);
+ ButtonClick(rBox);
+}
+
+IMPL_LINK(ScTabPageProtection, HideCellClickHdl, weld::ToggleButton&, rBox, void)
+{
+ aHideCellState.ButtonToggled(rBox);
+ ButtonClick(rBox);
+}
+
+IMPL_LINK(ScTabPageProtection, HideFormulaClickHdl, weld::ToggleButton&, rBox, void)
+{
+ aHideFormulaState.ButtonToggled(rBox);
+ ButtonClick(rBox);
+}
+
+IMPL_LINK(ScTabPageProtection, HidePrintClickHdl, weld::ToggleButton&, rBox, void)
+{
+ aHidePrintState.ButtonToggled(rBox);
+ ButtonClick(rBox);
+}
+
+void ScTabPageProtection::ButtonClick(weld::ToggleButton& rBox)
{
TriState eState = rBox.get_state();
if (eState == TRISTATE_INDET)
@@ -192,6 +212,11 @@ void ScTabPageProtection::UpdateButtons()
m_xBtnHidePrint->set_state(bHidePrint ? TRISTATE_TRUE : TRISTATE_FALSE);
}
+ aHideCellState.eState = m_xBtnHideCell->get_state();
+ aProtectState.eState = m_xBtnProtect->get_state();
+ aHideFormulaState.eState = m_xBtnHideFormula->get_state();
+ aHidePrintState.eState = m_xBtnHidePrint->get_state();
+
bool bEnable = (m_xBtnHideCell->get_state() != TRISTATE_TRUE);
{
m_xBtnProtect->set_sensitive(bEnable);
diff --git a/sc/source/ui/inc/tabpages.hxx b/sc/source/ui/inc/tabpages.hxx
index 8abd667ca7c7..16046ab4f6bc 100644
--- a/sc/source/ui/inc/tabpages.hxx
+++ b/sc/source/ui/inc/tabpages.hxx
@@ -50,14 +50,23 @@ private:
bool bHideCell;
bool bHidePrint;
+ weld::TriStateEnabled aHideCellState;
+ weld::TriStateEnabled aProtectState;
+ weld::TriStateEnabled aHideFormulaState;
+ weld::TriStateEnabled aHidePrintState;
+
std::unique_ptr<weld::CheckButton> m_xBtnHideCell;
std::unique_ptr<weld::CheckButton> m_xBtnProtect;
std::unique_ptr<weld::CheckButton> m_xBtnHideFormula;
std::unique_ptr<weld::CheckButton> m_xBtnHidePrint;
// Handler:
- DECL_LINK(ButtonClickHdl, weld::ToggleButton&, void);
- void UpdateButtons();
+ DECL_LINK(ProtectClickHdl, weld::ToggleButton&, void);
+ DECL_LINK(HideCellClickHdl, weld::ToggleButton&, void);
+ DECL_LINK(HideFormulaClickHdl, weld::ToggleButton&, void);
+ DECL_LINK(HidePrintClickHdl, weld::ToggleButton&, void);
+ void ButtonClick(weld::ToggleButton& rBox);
+ void UpdateButtons();
};
#endif // INCLUDED_SC_SOURCE_UI_INC_TABPAGES_HXX
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index bce3b3815f06..0f925613ac8e 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3836,6 +3836,26 @@ namespace weld
m_xContentArea->move(m_xRelocate.get(), m_xOrigParent.get());
}
}
+
+ void TriStateEnabled::ButtonToggled(weld::ToggleButton& rToggle)
+ {
+ if (bTriStateEnabled)
+ {
+ switch (eState)
+ {
+ case TRISTATE_INDET:
+ rToggle.set_state(TRISTATE_FALSE);
+ break;
+ case TRISTATE_TRUE:
+ rToggle.set_state(TRISTATE_INDET);
+ break;
+ case TRISTATE_FALSE:
+ rToggle.set_state(TRISTATE_TRUE);
+ break;
+ }
+ }
+ eState = rToggle.get_state();
+ }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */