[Libreoffice-commits] core.git: dbaccess/source include/svtools include/vcl

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Tue Jul 21 16:17:52 UTC 2020


 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 <caolanm at redhat.com>
AuthorDate: Tue Jul 21 15:35:37 2020 +0100
Commit:     Caolán McNamara <caolanm at 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 <caolanm at 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
     {


More information about the Libreoffice-commits mailing list