dbaccess/source/ui/control/SqlNameEdit.cxx | 39 ++++++++++---------- dbaccess/source/ui/inc/SqlNameEdit.hxx | 24 ++++++++---- dbaccess/source/ui/tabledesign/TEditControl.cxx | 45 +++++++++++++++--------- dbaccess/source/ui/tabledesign/TEditControl.hxx | 4 +- include/svtools/editbrowsebox.hxx | 4 +- include/vcl/weld.hxx | 2 - 6 files changed, 70 insertions(+), 48 deletions(-)
New commits: commit cec40ab4562e552bcc92c33e2fc3af760881086d Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Jul 21 15:35:37 2020 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Jul 21 18:16:59 2020 +0200 weld OSQLNameEdit Change-Id: I79c79e17c28c8dd22dbb0f41ded30488c4924ce8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99153 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/dbaccess/source/ui/control/SqlNameEdit.cxx b/dbaccess/source/ui/control/SqlNameEdit.cxx index c24e9fd3cfaf..bd67d97deea6 100644 --- a/dbaccess/source/ui/control/SqlNameEdit.cxx +++ b/dbaccess/source/ui/control/SqlNameEdit.cxx @@ -51,33 +51,34 @@ namespace dbaui } return bCorrected; } - void OSQLNameEdit::Modify() + + namespace { - OUString sCorrected; - if ( checkString( GetText(),sCorrected ) ) + void checkName(OSQLNameChecker& rChecker, weld::Entry& rEntry) { - Selection aSel = GetSelection(); - aSel.setMax( aSel.getMin() ); - SetText( sCorrected, aSel ); + OUString sCorrected; + if (rChecker.checkString(rEntry.get_text(), sCorrected)) + { + int nStartPos, nEndPos; + rEntry.get_selection_bounds(nStartPos, nEndPos); + int nMin = std::min(nStartPos, nEndPos); + rEntry.set_text(sCorrected); + rEntry.select_region(nMin, nMin); - SaveValue(); + rEntry.save_value(); + } } - Edit::Modify(); } - IMPL_LINK_NOARG(OSQLNameEntry, ModifyHdl, weld::Entry&, void) + IMPL_LINK(OSQLNameEditControl, ModifyHdl, weld::Entry&, rEntry, void) { - OUString sCorrected; - if (checkString(m_xEntry->get_text(), sCorrected)) - { - int nStartPos, nEndPos; - m_xEntry->get_selection_bounds(nStartPos, nEndPos); - int nMin = std::min(nStartPos, nEndPos); - m_xEntry->set_text(sCorrected); - m_xEntry->select_region(nMin, nMin); + checkName(*this, rEntry); + m_ChainChangedHdl.Call(rEntry); + } - m_xEntry->save_value(); - } + IMPL_LINK(OSQLNameEntry, ModifyHdl, weld::Entry&, rEntry, void) + { + checkName(*this, rEntry); } } diff --git a/dbaccess/source/ui/inc/SqlNameEdit.hxx b/dbaccess/source/ui/inc/SqlNameEdit.hxx index 7a6e43c15b32..609382af40fa 100644 --- a/dbaccess/source/ui/inc/SqlNameEdit.hxx +++ b/dbaccess/source/ui/inc/SqlNameEdit.hxx @@ -19,7 +19,7 @@ #ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_SQLNAMEEDIT_HXX #define INCLUDED_DBACCESS_SOURCE_UI_INC_SQLNAMEEDIT_HXX -#include <vcl/edit.hxx> +#include <svtools/editbrowsebox.hxx> #include <vcl/weld.hxx> namespace dbaui @@ -46,18 +46,26 @@ namespace dbaui bool checkString(const OUString& _sToCheck,OUString& _rsCorrected); }; - class OSQLNameEdit : public Edit - ,public OSQLNameChecker + class OSQLNameEditControl : public svt::EditControl + , public OSQLNameChecker { public: - OSQLNameEdit(vcl::Window* _pParent,WinBits nStyle = WB_BORDER, const OUString& _rAllowedChars = OUString()) - : Edit(_pParent,nStyle) - , OSQLNameChecker(_rAllowedChars) + OSQLNameEditControl(BrowserDataWin* pParent, const OUString& rAllowedChars) + : svt::EditControl(pParent) + , OSQLNameChecker(rAllowedChars) + { + m_xWidget->connect_changed(LINK(this, OSQLNameEditControl, ModifyHdl)); + } + + virtual void connect_changed(const Link<weld::Entry&, void>& rLink) override { + m_ChainChangedHdl = rLink; } - // Edit overrides - virtual void Modify() override; + private: + DECL_LINK(ModifyHdl, weld::Entry&, void); + + Link<weld::Entry&,void> m_ChainChangedHdl; }; class OWidgetBase diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx index ee2cb2c1fdf2..5073a4667717 100644 --- a/dbaccess/source/ui/tabledesign/TEditControl.cxx +++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx @@ -183,7 +183,7 @@ void OTableEditorCtrl::SetReadOnly( bool bRead ) void OTableEditorCtrl::InitCellController() { // Cell Field name - sal_Int32 nMaxTextLen = EDIT_NOLIMIT; + sal_Int32 nMaxTextLen = 0; OUString sExtraNameChars; Reference<XConnection> xCon; try @@ -191,10 +191,9 @@ void OTableEditorCtrl::InitCellController() xCon = GetView()->getController().getConnection(); Reference< XDatabaseMetaData> xMetaData = xCon.is() ? xCon->getMetaData() : Reference< XDatabaseMetaData>(); + // length 0 is treated by Entry::set_max_length as unlimited nMaxTextLen = xMetaData.is() ? xMetaData->getMaxColumnNameLength() : 0; - if( nMaxTextLen == 0 ) - nMaxTextLen = EDIT_NOLIMIT; sExtraNameChars = xMetaData.is() ? xMetaData->getExtraNameCharacters() : OUString(); } @@ -203,8 +202,8 @@ void OTableEditorCtrl::InitCellController() OSL_FAIL("getMaxColumnNameLength"); } - pNameCell = VclPtr<OSQLNameEdit>::Create(&GetDataWindow(), WB_LEFT, sExtraNameChars); - pNameCell->SetMaxTextLen( nMaxTextLen ); + pNameCell = VclPtr<OSQLNameEditControl>::Create(&GetDataWindow(), sExtraNameChars); + pNameCell->get_widget().set_max_length(nMaxTextLen); pNameCell->setCheck( isSQL92CheckEnabled(xCon) ); // Cell type @@ -237,7 +236,7 @@ void OTableEditorCtrl::InitCellController() void OTableEditorCtrl::ClearModified() { - pNameCell->ClearModifyFlag(); + pNameCell->get_widget().save_value(); pDescrCell->get_widget().save_value(); pHelpTextCell->get_widget().save_value(); pTypeCell->get_widget().save_value(); @@ -355,11 +354,15 @@ void OTableEditorCtrl::InitController(CellControllerRef&, long nRow, sal_uInt16 switch (nColumnId) { case FIELD_NAME: + { if( pActFieldDescr ) aInitString = pActFieldDescr->GetName(); - pNameCell->SetText( aInitString ); - pNameCell->SaveValue(); + + weld::Entry& rEntry = pNameCell->get_widget(); + rEntry.set_text(aInitString); + rEntry.save_value(); break; + } case FIELD_TYPE: { if ( pActFieldDescr && pActFieldDescr->getTypeInfo() ) @@ -502,7 +505,8 @@ void OTableEditorCtrl::SaveData(long nRow, sal_uInt16 nColId) case FIELD_NAME: { // If there is no name, do nothing - const OUString aName(pNameCell->GetText()); + weld::Entry& rEntry = pNameCell->get_widget(); + const OUString aName(rEntry.get_text()); if( aName.isEmpty() ) { @@ -518,7 +522,7 @@ void OTableEditorCtrl::SaveData(long nRow, sal_uInt16 nColId) } if(pActFieldDescr) pActFieldDescr->SetName( aName ); - pNameCell->ClearModifyFlag(); + rEntry.save_value(); break; } @@ -1097,8 +1101,11 @@ bool OTableEditorCtrl::IsCutAllowed() break; } case NAME: - bIsCutAllowed = !pNameCell->GetSelected().isEmpty(); + { + weld::Entry& rEntry = pNameCell->get_widget(); + bIsCutAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); break; + } case ROW: bIsCutAllowed = IsCopyAllowed(); break; @@ -1126,7 +1133,10 @@ bool OTableEditorCtrl::IsCopyAllowed() bIsCopyAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); } else if(m_eChildFocus == NAME) - bIsCopyAllowed = !pNameCell->GetSelected().isEmpty(); + { + weld::Entry& rEntry = pNameCell->get_widget(); + bIsCopyAllowed = rEntry.get_selection_bounds(nStartPos, nEndPos); + } else if(m_eChildFocus == ROW) { Reference<XPropertySet> xTable = GetView()->getController().getTable(); @@ -1174,7 +1184,7 @@ void OTableEditorCtrl::cut() if(GetView()->getController().isAlterAllowed()) { SaveData(-1,FIELD_NAME); - pNameCell->Cut(); + pNameCell->get_widget().cut_clipboard(); CellModified(-1,FIELD_NAME); } } @@ -1206,10 +1216,13 @@ void OTableEditorCtrl::cut() void OTableEditorCtrl::copy() { - if(GetSelectRowCount()) + if (GetSelectRowCount()) OTableRowView::copy(); else if(m_eChildFocus == NAME) - pNameCell->Copy(); + { + weld::Entry& rEntry = pNameCell->get_widget(); + rEntry.copy_clipboard(); + } else if(HELPTEXT == m_eChildFocus ) { weld::Entry& rEntry = pHelpTextCell->get_widget(); @@ -1235,7 +1248,7 @@ void OTableEditorCtrl::paste() { if(GetView()->getController().isAlterAllowed()) { - pNameCell->Paste(); + pNameCell->get_widget().paste_clipboard(); CellModified(); } } diff --git a/dbaccess/source/ui/tabledesign/TEditControl.hxx b/dbaccess/source/ui/tabledesign/TEditControl.hxx index 69039f3d92f4..b216cb518d55 100644 --- a/dbaccess/source/ui/tabledesign/TEditControl.hxx +++ b/dbaccess/source/ui/tabledesign/TEditControl.hxx @@ -29,7 +29,7 @@ class Edit; class SfxUndoManager; namespace dbaui { - class OSQLNameEdit; + class OSQLNameEditControl; class OTableEditorCtrl : public OTableRowView { @@ -44,7 +44,7 @@ namespace dbaui std::vector< std::shared_ptr<OTableRow> >* m_pRowList; - VclPtr<OSQLNameEdit> pNameCell; + VclPtr<OSQLNameEditControl> pNameCell; VclPtr<::svt::ListBoxControl> pTypeCell; VclPtr<::svt::EditControl> pHelpTextCell; VclPtr<::svt::EditControl> pDescrCell; diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx index 4dc3381d5aaa..98da5046e73f 100644 --- a/include/svtools/editbrowsebox.hxx +++ b/include/svtools/editbrowsebox.hxx @@ -243,7 +243,7 @@ namespace svt weld::Entry* m_pEntry; }; - class SVT_DLLPUBLIC EditControl final : public EditControlBase + class SVT_DLLPUBLIC EditControl : public EditControlBase { public: EditControl(BrowserDataWin* pParent); @@ -255,7 +255,7 @@ namespace svt m_xWidget->connect_changed(rLink); } - private: + protected: std::unique_ptr<weld::Entry> m_xWidget; }; diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 10bbacfa8f91..1c40aea114c6 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1728,7 +1728,7 @@ public: { m_xEntry->select_region(nStartPos, nEndPos); } - //if not text was selected, both rStartPos and rEndPos will be identical + //if no text was selected, both rStartPos and rEndPos will be identical //and false will be returned virtual bool get_entry_selection_bounds(int& rStartPos, int& rEndPos) override { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits