summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-07-29 15:56:37 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-07-29 21:28:01 +0200
commit28a278e8029ed5d589a948f68abc2ba29c616c1f (patch)
tree10e0cb21af96fd4edb9b48671022afc7666b1d75
parentae72d8cef6998d84471666ca3088a0f2b43946b7 (diff)
move SetReadOnly into ControlBase as SetEditableReadOnly
and cast to that instead of "Edit" and override the Editable controls impls to do something suitable when called Change-Id: I24cc02b603e9551df4e3eb39f6cb4839883db777 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99709 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--include/svtools/editbrowsebox.hxx21
-rw-r--r--svtools/source/brwbox/ebbcontrols.cxx5
-rw-r--r--svx/source/fmcomp/gridcell.cxx10
3 files changed, 29 insertions, 7 deletions
diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx
index 4e718bc708de..130dae510486 100644
--- a/include/svtools/editbrowsebox.hxx
+++ b/include/svtools/editbrowsebox.hxx
@@ -169,6 +169,8 @@ namespace svt
public:
ControlBase(BrowserDataWin* pParent, const OUString& rUIXMLDescription, const OString& rID);
+ virtual void SetEditableReadOnly(bool bReadOnly);
+
virtual bool ProcessKey(const KeyEvent& rKEvt);
protected:
DECL_LINK(KeyInputHdl, const KeyEvent&, bool);
@@ -179,6 +181,11 @@ namespace svt
public:
EditControlBase(BrowserDataWin* pParent);
+ virtual void SetEditableReadOnly(bool bReadOnly) override
+ {
+ m_pEntry->set_editable(!bReadOnly);
+ }
+
virtual void dispose() override;
weld::Entry& get_widget() { return *m_pEntry; }
@@ -245,7 +252,7 @@ namespace svt
virtual void SetReadOnly( bool bReadOnly ) override
{
- m_rEdit.get_widget().set_editable(!bReadOnly);
+ m_rEdit.SetEditableReadOnly(bReadOnly);
}
virtual sal_Int32 GetMaxTextLen() const override
@@ -332,6 +339,11 @@ namespace svt
public:
MultiLineTextCell(BrowserDataWin* pParent);
+ virtual void SetEditableReadOnly(bool bReadOnly) override
+ {
+ m_xWidget->set_editable(!bReadOnly);
+ }
+
virtual void GetFocus() override;
virtual void dispose() override;
@@ -382,7 +394,7 @@ namespace svt
virtual void SetReadOnly( bool bReadOnly ) override
{
- m_rEdit.get_widget().set_editable(!bReadOnly);
+ m_rEdit.SetEditableReadOnly(bReadOnly);
}
virtual sal_Int32 GetMaxTextLen() const override
@@ -556,6 +568,11 @@ namespace svt
public:
ComboBoxControl(BrowserDataWin* pParent);
+ virtual void SetEditableReadOnly(bool bReadOnly) override
+ {
+ m_xWidget->set_entry_editable(!bReadOnly);
+ }
+
weld::ComboBox& get_widget() { return *m_xWidget; }
virtual void dispose() override;
diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx
index 96b802bcf2e4..6958a1f63fab 100644
--- a/svtools/source/brwbox/ebbcontrols.cxx
+++ b/svtools/source/brwbox/ebbcontrols.cxx
@@ -303,6 +303,11 @@ namespace svt
{
}
+ void ControlBase::SetEditableReadOnly(bool /*bReadOnly*/)
+ {
+ // expected to be overridden for Entry, TextView or the editable entry part of a ComboBox
+ }
+
EditControlBase::EditControlBase(BrowserDataWin* pParent)
: ControlBase(pParent, "svt/ui/thineditcontrol.ui", "EditControl") // *thin*editcontrol has no frame/border
, m_pEntry(nullptr) // inheritors are expected to call InitEditControlBase
diff --git a/svx/source/fmcomp/gridcell.cxx b/svx/source/fmcomp/gridcell.cxx
index 585abcdc124d..a920477e9f49 100644
--- a/svx/source/fmcomp/gridcell.cxx
+++ b/svx/source/fmcomp/gridcell.cxx
@@ -805,7 +805,7 @@ void DbCellControl::implAdjustReadOnly( const Reference< XPropertySet >& _rxMode
DBG_ASSERT( _rxModel.is(), "DbCellControl::implAdjustReadOnly: invalid model!" );
if ( m_pWindow && _rxModel.is() )
{
- Edit* pEditWindow = dynamic_cast< Edit* >( m_pWindow.get() );
+ ControlBase* pEditWindow = dynamic_cast<ControlBase*>(m_pWindow.get());
if ( pEditWindow )
{
bool bReadOnly = m_rColumn.IsReadOnly();
@@ -813,7 +813,7 @@ void DbCellControl::implAdjustReadOnly( const Reference< XPropertySet >& _rxMode
{
_rxModel->getPropertyValue( i_bReadOnly ? OUString(FM_PROP_READONLY) : OUString(FM_PROP_ISREADONLY)) >>= bReadOnly;
}
- pEditWindow->SetReadOnly(bReadOnly);
+ pEditWindow->SetEditableReadOnly(bReadOnly);
}
}
}
@@ -2748,9 +2748,9 @@ void DbFilterField::Init(BrowserDataWin& rParent, const Reference< XRowSet >& xC
DbCellControl::Init( rParent, xCursor );
// filter cells are never readonly
- Edit* pAsEdit = dynamic_cast< Edit* >( m_pWindow.get() );
- if ( pAsEdit )
- pAsEdit->SetReadOnly( false );
+ ControlBase* pAsEdit = dynamic_cast<ControlBase*>(m_pWindow.get());
+ if (pAsEdit)
+ pAsEdit->SetEditableReadOnly(false);
}
CellControllerRef DbFilterField::CreateController() const