summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2015-10-15 15:26:50 +0200
committerNoel Grandin <noel@peralex.com>2015-10-15 15:47:13 +0200
commit74d686bc59cd70e7ad89f7845199eb751aa7145d (patch)
tree29ce62f941b417f37802d89984fd6e570eba929c
parent6212c467156e2bd4580a9f8145124223d3135ea4 (diff)
simplify the CellController modify Link<> handling
in preparation for some more "make Link<> typed" work Change-Id: Ifdf58cc697c7172102bf9e4cc63f869c522517e6
-rw-r--r--dbaccess/source/ui/dlg/indexfieldscontrol.cxx29
-rw-r--r--include/svtools/editbrowsebox.hxx26
-rw-r--r--svtools/source/brwbox/ebbcontrols.cxx38
-rw-r--r--svtools/source/brwbox/editbrowsebox.cxx5
4 files changed, 44 insertions, 54 deletions
diff --git a/dbaccess/source/ui/dlg/indexfieldscontrol.cxx b/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
index 26004ae68ba8..b59938c439d5 100644
--- a/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
+++ b/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
@@ -40,7 +40,6 @@ namespace dbaui
class DbaMouseDownListBoxController : public ListBoxCellController
{
protected:
- Link<> m_aOriginalModifyHdl;
Link<> m_aAdditionalModifyHdl;
public:
@@ -53,38 +52,18 @@ namespace dbaui
protected:
virtual bool WantMouseEvent() const override { return true; }
- virtual void SetModifyHdl(const Link<>& _rHdl) override;
-
- private:
- void implCheckLinks();
- DECL_LINK( OnMultiplexModify, void* );
+ virtual void callModifyHdl() override;
};
void DbaMouseDownListBoxController::SetAdditionalModifyHdl(const Link<>& _rHdl)
{
m_aAdditionalModifyHdl = _rHdl;
- implCheckLinks();
}
- void DbaMouseDownListBoxController::SetModifyHdl(const Link<>& _rHdl)
+ void DbaMouseDownListBoxController::callModifyHdl()
{
- m_aOriginalModifyHdl = _rHdl;
- implCheckLinks();
- }
-
- IMPL_LINK( DbaMouseDownListBoxController, OnMultiplexModify, void*, _pArg )
- {
- m_aAdditionalModifyHdl.Call(_pArg);
- m_aOriginalModifyHdl.Call(_pArg);
- return 0L;
- }
-
- void DbaMouseDownListBoxController::implCheckLinks()
- {
- if (m_aAdditionalModifyHdl.IsSet() || m_aOriginalModifyHdl.IsSet())
- ListBoxCellController::SetModifyHdl(LINK(this, DbaMouseDownListBoxController, OnMultiplexModify));
- else
- ListBoxCellController::SetModifyHdl(Link<>());
+ m_aAdditionalModifyHdl.Call(nullptr);
+ ListBoxCellController::callModifyHdl();
}
// IndexFieldsControl
diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx
index bbabf5b4dd08..991f9b18f990 100644
--- a/include/svtools/editbrowsebox.hxx
+++ b/include/svtools/editbrowsebox.hxx
@@ -83,10 +83,11 @@ namespace svt
class SVT_DLLPUBLIC CellController : public SvRefBase
{
friend class EditBrowseBox;
+ Link<LinkParamNone*, void> maModifyHdl;
protected:
- VclPtr<Control> pWindow;
- bool bSuspended; // <true> if the window is hidden and disabled
+ VclPtr<Control> pWindow;
+ bool bSuspended; // <true> if the window is hidden and disabled
public:
TYPEINFO();
@@ -111,8 +112,9 @@ namespace svt
protected:
virtual bool MoveAllowed(const KeyEvent& rEvt) const;
- virtual void SetModifyHdl(const Link<>& rLink) = 0;
+ void SetModifyHdl(const Link<LinkParamNone*,void>& rLink) { maModifyHdl = rLink; }
virtual bool WantMouseEvent() const;
+ virtual void callModifyHdl() { maModifyHdl.Call(nullptr); }
};
typedef tools::SvRef<CellController> CellControllerRef;
@@ -249,7 +251,8 @@ namespace svt
protected:
virtual bool MoveAllowed(const KeyEvent& rEvt) const override;
- virtual void SetModifyHdl(const Link<>& rLink) override;
+ private:
+ DECL_LINK(ModifyHdl, void*);
};
@@ -269,7 +272,8 @@ namespace svt
protected:
virtual bool MoveAllowed(const KeyEvent& rEvt) const override;
- virtual void SetModifyHdl(const Link<>& rLink) override;
+ private:
+ DECL_LINK(ModifyHdl, void*);
};
@@ -313,15 +317,16 @@ namespace svt
public:
TYPEINFO_OVERRIDE();
- CheckBoxCellController(CheckBoxControl* pWin):CellController(pWin){}
+ CheckBoxCellController(CheckBoxControl* pWin);
CheckBox& GetCheckBox() const;
virtual bool IsModified() const override;
virtual void ClearModified() override;
protected:
- virtual void SetModifyHdl(const Link<>& rLink) override;
virtual bool WantMouseEvent() const override;
+ private:
+ DECL_LINK(ModifyHdl, void*);
};
@@ -354,7 +359,8 @@ namespace svt
protected:
virtual bool MoveAllowed(const KeyEvent& rEvt) const override;
- virtual void SetModifyHdl(const Link<>& rLink) override;
+ private:
+ DECL_LINK(ModifyHdl, void*);
};
@@ -388,9 +394,7 @@ namespace svt
protected:
virtual bool MoveAllowed(const KeyEvent& rEvt) const override;
- virtual void SetModifyHdl(const Link<>& rLink) override;
private:
- Link<> maModifyHdl;
DECL_LINK_TYPED(ListBoxSelectHdl, ListBox&, void);
};
@@ -669,7 +673,7 @@ namespace svt
SVT_DLLPRIVATE void implActivateCellOnMouseEvent(const BrowserMouseEvent& _rEvt, bool _bUp);
SVT_DLLPRIVATE void impl_construct();
- DECL_DLLPRIVATE_LINK(ModifyHdl, void* );
+ DECL_DLLPRIVATE_LINK_TYPED(ModifyHdl, LinkParamNone*, void );
DECL_DLLPRIVATE_LINK_TYPED(StartEditHdl, void*, void );
DECL_DLLPRIVATE_LINK_TYPED(EndEditHdl, void*, void );
DECL_DLLPRIVATE_LINK_TYPED(CellModifiedHdl, void*, void );
diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx
index 491f02be8f89..d31eb22cdc34 100644
--- a/svtools/source/brwbox/ebbcontrols.cxx
+++ b/svtools/source/brwbox/ebbcontrols.cxx
@@ -77,6 +77,7 @@ namespace svt
ComboBoxCellController::ComboBoxCellController(ComboBoxControl* pWin)
:CellController(pWin)
{
+ GetComboBox().SetModifyHdl( LINK(this, ComboBoxCellController, ModifyHdl) );
}
@@ -129,9 +130,10 @@ namespace svt
GetComboBox().SaveValue();
}
- void ComboBoxCellController::SetModifyHdl(const Link<>& rLink)
+ IMPL_LINK_NOARG(ComboBoxCellController, ModifyHdl)
{
- GetComboBox().SetModifyHdl(rLink);
+ callModifyHdl();
+ return 0;
}
//= ListBoxControl
@@ -215,14 +217,9 @@ namespace svt
}
- void ListBoxCellController::SetModifyHdl(const Link<>& rLink)
+ IMPL_LINK_NOARG_TYPED(ListBoxCellController, ListBoxSelectHdl, ListBox&, void)
{
- maModifyHdl = rLink;
- }
-
- IMPL_LINK_TYPED(ListBoxCellController, ListBoxSelectHdl, ListBox&, rListBox, void)
- {
- maModifyHdl.Call(&rListBox);
+ callModifyHdl();
}
@@ -333,6 +330,11 @@ namespace svt
//= CheckBoxCellController
+ CheckBoxCellController::CheckBoxCellController(CheckBoxControl* pWin):CellController(pWin)
+ {
+ static_cast<CheckBoxControl &>(GetWindow()).SetModifyHdl( LINK(this, CheckBoxCellController, ModifyHdl) );
+ }
+
bool CheckBoxCellController::WantMouseEvent() const
{
return true;
@@ -357,9 +359,10 @@ namespace svt
}
- void CheckBoxCellController::SetModifyHdl(const Link<>& rLink)
+ IMPL_LINK_NOARG(CheckBoxCellController, ModifyHdl)
{
- static_cast<CheckBoxControl &>(GetWindow()).SetModifyHdl(rLink);
+ callModifyHdl();
+ return 0;
}
@@ -386,6 +389,7 @@ namespace svt
,m_pEditImplementation( new EditImplementation( *_pEdit ) )
,m_bOwnImplementation( true )
{
+ m_pEditImplementation->SetModifyHdl( LINK(this, EditCellController, ModifyHdl) );
}
@@ -394,6 +398,7 @@ namespace svt
,m_pEditImplementation( _pImplementation )
,m_bOwnImplementation( false )
{
+ m_pEditImplementation->SetModifyHdl( LINK(this, EditCellController, ModifyHdl) );
}
@@ -446,9 +451,10 @@ namespace svt
}
- void EditCellController::SetModifyHdl(const Link<>& rLink)
+ IMPL_LINK_NOARG(EditCellController, ModifyHdl)
{
- m_pEditImplementation->SetModifyHdl(rLink);
+ callModifyHdl();
+ return 0;
}
@@ -458,6 +464,7 @@ namespace svt
SpinCellController::SpinCellController(SpinField* pWin)
:CellController(pWin)
{
+ GetSpinWindow().SetModifyHdl( LINK(this, SpinCellController, ModifyHdl) );
}
@@ -503,9 +510,10 @@ namespace svt
}
- void SpinCellController::SetModifyHdl(const Link<>& rLink)
+ IMPL_LINK_NOARG(SpinCellController, ModifyHdl)
{
- GetSpinWindow().SetModifyHdl(rLink);
+ callModifyHdl();
+ return 0;
}
diff --git a/svtools/source/brwbox/editbrowsebox.cxx b/svtools/source/brwbox/editbrowsebox.cxx
index d64b3b850394..b5ad2ce63224 100644
--- a/svtools/source/brwbox/editbrowsebox.cxx
+++ b/svtools/source/brwbox/editbrowsebox.cxx
@@ -1044,7 +1044,7 @@ namespace svt
aController.Clear();
// reset the modify handler
- aOldController->SetModifyHdl(Link<>());
+ aOldController->SetModifyHdl(Link<LinkParamNone*,void>());
if (bHasFocus)
GrabFocus(); // ensure that we have (and keep) the focus
@@ -1088,12 +1088,11 @@ namespace svt
}
- IMPL_LINK_NOARG(EditBrowseBox, ModifyHdl)
+ IMPL_LINK_NOARG_TYPED(EditBrowseBox, ModifyHdl, LinkParamNone*, void)
{
if (nCellModifiedEvent)
Application::RemoveUserEvent(nCellModifiedEvent);
nCellModifiedEvent = Application::PostUserEvent(LINK(this,EditBrowseBox,CellModifiedHdl), NULL, true);
- return 0;
}