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

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Sat Jul 11 17:55:45 UTC 2020


 include/svtools/editbrowsebox.hxx      |   41 ++++++++++++++++++---------------
 include/svtools/editimplementation.hxx |    6 ----
 svtools/source/brwbox/ebbcontrols.cxx  |    6 ++--
 svx/source/fmcomp/gridcell.cxx         |   30 +++---------------------
 svx/source/inc/gridcell.hxx            |    4 +--
 5 files changed, 32 insertions(+), 55 deletions(-)

New commits:
commit 098e26eef7dc7e792eddd05c66354616fde81c72
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Jul 10 15:53:44 2020 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Sat Jul 11 19:55:14 2020 +0200

    use an aux modify handler instead of listening for VclEventId::EditModify
    
    Change-Id: Ie35ad08a24b8b0c989806c4739bfe925fd9ab746
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98545
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx
index b32518b0c1d0..cbeb152c15d1 100644
--- a/include/svtools/editbrowsebox.hxx
+++ b/include/svtools/editbrowsebox.hxx
@@ -139,7 +139,6 @@ namespace svt
 
         virtual bool                IsValueChangedFromSaved() const = 0;
         virtual void                SaveValue() = 0;
-        virtual void                SetModifyHdl( const Link<LinkParamNone*,void>& _rLink ) = 0;
 
         virtual bool                CanUp() const = 0;
         virtual bool                CanDown() const = 0;
@@ -147,17 +146,36 @@ namespace svt
         virtual void                Cut() = 0;
         virtual void                Copy() = 0;
         virtual void                Paste() = 0;
-    };
 
+        // sets a link to call when the text is changed by the user
+        void SetModifyHdl(const Link<LinkParamNone*,void>& rLink)
+        {
+            m_aModify1Hdl = rLink;
+        }
 
-    //= GenericEditImplementation
+        // sets an additional link to call when the text is changed by the user
+        void SetAuxModifyHdl(const Link<LinkParamNone*,void>& rLink)
+        {
+            m_aModify2Hdl = rLink;
+        }
 
+    private:
+        Link<LinkParamNone*,void> m_aModify1Hdl;
+        Link<LinkParamNone*,void> m_aModify2Hdl;
+
+    protected:
+        void CallModifyHdls()
+        {
+            m_aModify1Hdl.Call(nullptr);
+            m_aModify2Hdl.Call(nullptr);
+        }
+    };
+
+    //= GenericEditImplementation
     template <class EDIT>
     class GenericEditImplementation : public IEditImplementation
     {
         EDIT&   m_rEdit;
-    protected:
-        Link<LinkParamNone*,void> m_aModifyHdl;
     public:
         GenericEditImplementation( EDIT& _rEdit );
 
@@ -182,7 +200,6 @@ namespace svt
 
         virtual bool                IsValueChangedFromSaved() const override;
         virtual void                SaveValue() override;
-        virtual void                SetModifyHdl( const Link<LinkParamNone*,void>& _rLink ) override;
 
         virtual void                Cut() override;
         virtual void                Copy() override;
@@ -250,7 +267,6 @@ namespace svt
     {
         EditControlBase& m_rEdit;
         int m_nMaxTextLen;
-        Link<LinkParamNone*,void> m_aModifyHdl;
 
         DECL_LINK(ModifyHdl, weld::Entry&, void);
     public:
@@ -336,11 +352,6 @@ namespace svt
             m_rEdit.get_widget().save_value();
         }
 
-        virtual void SetModifyHdl( const Link<LinkParamNone*,void>& rLink ) override
-        {
-            m_aModifyHdl = rLink;
-        }
-
         virtual bool CanUp() const override
         {
             return false;
@@ -422,7 +433,6 @@ namespace svt
     {
         MultiLineTextCell& m_rEdit;
         int m_nMaxTextLen;
-        Link<LinkParamNone*,void> m_aModifyHdl;
 
         DECL_LINK(ModifyHdl, weld::TextView&, void);
     public:
@@ -497,11 +507,6 @@ namespace svt
             m_rEdit.get_widget().save_value();
         }
 
-        virtual void SetModifyHdl( const Link<LinkParamNone*,void>& rLink ) override
-        {
-            m_aModifyHdl = rLink;
-        }
-
         virtual bool CanUp() const override
         {
             return m_rEdit.get_widget().can_move_cursor_with_up();
diff --git a/include/svtools/editimplementation.hxx b/include/svtools/editimplementation.hxx
index 04bc287ab06e..81728017af52 100644
--- a/include/svtools/editimplementation.hxx
+++ b/include/svtools/editimplementation.hxx
@@ -114,12 +114,6 @@ void GenericEditImplementation< EDIT >::SaveValue()
     m_rEdit.SaveValue();
 }
 
-template <class EDIT>
-void GenericEditImplementation< EDIT >::SetModifyHdl( const Link<LinkParamNone*,void>& _rLink )
-{
-    m_aModifyHdl = _rLink;
-}
-
 template <class EDIT>
 void GenericEditImplementation< EDIT >::Cut()
 {
diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx
index febac63d4eb5..f26c7e013ad0 100644
--- a/svtools/source/brwbox/ebbcontrols.cxx
+++ b/svtools/source/brwbox/ebbcontrols.cxx
@@ -318,12 +318,12 @@ namespace svt
 
     IMPL_LINK_NOARG(MultiLineEditImplementation, ModifyHdl, weld::TextView&, void)
     {
-        m_aModifyHdl.Call(nullptr);
+        CallModifyHdls();
     }
 
     IMPL_LINK_NOARG(EditImplementation, ModifyHdl, Edit&, void)
     {
-        m_aModifyHdl.Call(nullptr);
+        CallModifyHdls();
     }
 
     //= EditCellController
@@ -345,7 +345,7 @@ namespace svt
 
     IMPL_LINK_NOARG(EntryImplementation, ModifyHdl, weld::Entry&, void)
     {
-        m_aModifyHdl.Call(nullptr);
+        CallModifyHdls();
     }
 
     ControlBase::ControlBase(BrowserDataWin* pParent, const OUString& rUIXMLDescription, const OString& rID)
diff --git a/svx/source/fmcomp/gridcell.cxx b/svx/source/fmcomp/gridcell.cxx
index 6ae6bae43b93..f9e02176e525 100644
--- a/svx/source/fmcomp/gridcell.cxx
+++ b/svx/source/fmcomp/gridcell.cxx
@@ -3560,6 +3560,7 @@ FmXEditCell::FmXEditCell( DbGridColumn* pColumn, std::unique_ptr<DbCellControl>
         m_pEditImplementation = new EntryImplementation(static_cast<EditControlBase&>(m_pCellControl->GetWindow()));
         m_bOwnEditImplementation = true;
     }
+    m_pEditImplementation->SetAuxModifyHdl(LINK(this, FmXEditCell, ModifyHdl));
 }
 
 FmXEditCell::~FmXEditCell()
@@ -3581,7 +3582,6 @@ void FmXEditCell::disposing()
     m_aTextListeners.disposeAndClear(aEvt);
     m_aChangeListeners.disposeAndClear(aEvt);
 
-    m_pEditImplementation->SetModifyHdl( Link<LinkParamNone*,void>() );
     if ( m_bOwnEditImplementation )
         delete m_pEditImplementation;
     m_pEditImplementation = nullptr;
@@ -3625,7 +3625,6 @@ void SAL_CALL FmXEditCell::removeTextListener(const Reference< css::awt::XTextLi
     m_aTextListeners.removeInterface( l );
 }
 
-
 void SAL_CALL FmXEditCell::setText( const OUString& aText )
 {
     ::osl::MutexGuard aGuard( m_aMutex );
@@ -3640,7 +3639,6 @@ void SAL_CALL FmXEditCell::setText( const OUString& aText )
     }
 }
 
-
 void SAL_CALL FmXEditCell::insertText(const css::awt::Selection& rSel, const OUString& aText)
 {
     ::osl::MutexGuard aGuard( m_aMutex );
@@ -3676,7 +3674,6 @@ OUString SAL_CALL FmXEditCell::getText()
     return aText;
 }
 
-
 OUString SAL_CALL FmXEditCell::getSelectedText()
 {
     ::osl::MutexGuard aGuard( m_aMutex );
@@ -3690,7 +3687,6 @@ OUString SAL_CALL FmXEditCell::getSelectedText()
     return aText;
 }
 
-
 void SAL_CALL FmXEditCell::setSelection( const css::awt::Selection& aSelection )
 {
     ::osl::MutexGuard aGuard( m_aMutex );
@@ -3699,7 +3695,6 @@ void SAL_CALL FmXEditCell::setSelection( const css::awt::Selection& aSelection )
         m_pEditImplementation->SetSelection( Selection( aSelection.Min, aSelection.Max ) );
 }
 
-
 css::awt::Selection SAL_CALL FmXEditCell::getSelection()
 {
     ::osl::MutexGuard aGuard( m_aMutex );
@@ -3711,7 +3706,6 @@ css::awt::Selection SAL_CALL FmXEditCell::getSelection()
     return css::awt::Selection(aSel.Min(), aSel.Max());
 }
 
-
 sal_Bool SAL_CALL FmXEditCell::isEditable()
 {
     ::osl::MutexGuard aGuard( m_aMutex );
@@ -3765,14 +3759,12 @@ void FmXEditCell::onTextChanged()
     m_aTextListeners.notifyEach( &awt::XTextListener::textChanged, aEvent );
 }
 
-
 void FmXEditCell::onFocusGained( const awt::FocusEvent& _rEvent )
 {
     FmXTextCell::onFocusGained( _rEvent );
     m_sValueOnEnter = getText();
 }
 
-
 void FmXEditCell::onFocusLost( const awt::FocusEvent& _rEvent )
 {
     FmXTextCell::onFocusLost( _rEvent );
@@ -3784,21 +3776,10 @@ void FmXEditCell::onFocusLost( const awt::FocusEvent& _rEvent )
     }
 }
 
-
-void FmXEditCell::onWindowEvent( const VclEventId _nEventId, const vcl::Window& _rWindow, const void* _pEventData )
+IMPL_LINK_NOARG(FmXEditCell, ModifyHdl, LinkParamNone*, void)
 {
-    switch ( _nEventId )
-    {
-    case VclEventId::EditModify:
-    {
-        if ( m_pEditImplementation && m_aTextListeners.getLength() )
-            onTextChanged();
-        return;
-    }
-    default: break;
-    }
-
-    FmXTextCell::onWindowEvent( _nEventId, _rWindow, _pEventData );
+    if (m_aTextListeners.getLength())
+        onTextChanged();
 }
 
 FmXCheckBoxCell::FmXCheckBoxCell( DbGridColumn* pColumn, std::unique_ptr<DbCellControl> pControl )
@@ -3809,7 +3790,6 @@ FmXCheckBoxCell::FmXCheckBoxCell( DbGridColumn* pColumn, std::unique_ptr<DbCellC
 {
 }
 
-
 FmXCheckBoxCell::~FmXCheckBoxCell()
 {
     if (!OComponentHelper::rBHelper.bDisposed)
@@ -3817,11 +3797,9 @@ FmXCheckBoxCell::~FmXCheckBoxCell()
         acquire();
         dispose();
     }
-
 }
 
 // OComponentHelper
-
 void FmXCheckBoxCell::disposing()
 {
     css::lang::EventObject aEvt(*this);
diff --git a/svx/source/inc/gridcell.hxx b/svx/source/inc/gridcell.hxx
index 1b93fe550469..d4fb36b9bfb3 100644
--- a/svx/source/inc/gridcell.hxx
+++ b/svx/source/inc/gridcell.hxx
@@ -892,11 +892,11 @@ public:
 private:
     virtual ~FmXEditCell() override;
 
-    virtual void onWindowEvent( const VclEventId _nEventId, const vcl::Window& _rWindow, const void* _pEventData ) override;
-
     virtual void onFocusGained( const css::awt::FocusEvent& _rEvent ) override;
     virtual void onFocusLost( const css::awt::FocusEvent& _rEvent ) override;
 
+    DECL_LINK(ModifyHdl, LinkParamNone*, void);
+
     void onTextChanged();
 
     OUString                            m_sValueOnEnter;


More information about the Libreoffice-commits mailing list