summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svtools/inettbc.hxx3
-rw-r--r--include/vcl/combobox.hxx4
-rw-r--r--include/vcl/edit.hxx5
-rw-r--r--svtools/source/control/inettbc.cxx9
-rw-r--r--vcl/source/control/combobox.cxx14
-rw-r--r--vcl/source/control/edit.cxx24
6 files changed, 26 insertions, 33 deletions
diff --git a/include/svtools/inettbc.hxx b/include/svtools/inettbc.hxx
index 82e324887a68..8d073a88765a 100644
--- a/include/svtools/inettbc.hxx
+++ b/include/svtools/inettbc.hxx
@@ -48,9 +48,10 @@ friend class SvtURLBox_Impl;
SVT_DLLPRIVATE bool ProcessKey( const vcl::KeyCode& rCode );
SVT_DLLPRIVATE void TryAutoComplete();
SVT_DLLPRIVATE void UpdatePicklistForSmartProtocol_Impl();
- DECL_DLLPRIVATE_LINK( AutoCompleteHdl_Impl, void* );
SVT_DLLPRIVATE void Init(bool bSetDefaultHelpID);
+ SAL_DLLPRIVATE void AutoCompleteHandler( Edit* );
+
protected:
virtual bool Notify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
virtual void Select() SAL_OVERRIDE;
diff --git a/include/vcl/combobox.hxx b/include/vcl/combobox.hxx
index 95e35193030a..b80d088ab748 100644
--- a/include/vcl/combobox.hxx
+++ b/include/vcl/combobox.hxx
@@ -20,6 +20,7 @@
#ifndef INCLUDED_VCL_COMBOBOX_HXX
#define INCLUDED_VCL_COMBOBOX_HXX
+#include <boost/signals2/connection.hpp>
#include <vcl/dllapi.h>
#include <vcl/ctrl.hxx>
#include <vcl/combobox.h>
@@ -50,6 +51,7 @@ private:
sal_Int32 m_nMaxWidthChars;
Link maSelectHdl;
Link maDoubleClickHdl;
+ boost::signals2::scoped_connection mAutocompleteConnection;
struct ComboBoxBounds
{
@@ -71,11 +73,11 @@ private:
DECL_DLLPRIVATE_LINK( ImplDoubleClickHdl, void* );
DECL_DLLPRIVATE_LINK( ImplPopupModeEndHdl, void* );
DECL_DLLPRIVATE_LINK( ImplSelectionChangedHdl, void* );
- DECL_DLLPRIVATE_LINK( ImplAutocompleteHdl, Edit* );
DECL_DLLPRIVATE_LINK( ImplListItemSelectHdl , void* );
SAL_DLLPRIVATE void ImplClickButtonHandler( ImplBtn* );
SAL_DLLPRIVATE void ImplUserDrawHandler( UserDrawEvent* );
+ SAL_DLLPRIVATE void ImplAutocompleteHandler( Edit* );
protected:
using Window::ImplInit;
diff --git a/include/vcl/edit.hxx b/include/vcl/edit.hxx
index 391e825437c0..5d41a1bf0852 100644
--- a/include/vcl/edit.hxx
+++ b/include/vcl/edit.hxx
@@ -20,6 +20,7 @@
#ifndef INCLUDED_VCL_EDIT_HXX
#define INCLUDED_VCL_EDIT_HXX
+#include <boost/signals2/signal.hpp>
#include <tools/solar.h>
#include <vcl/dllapi.h>
#include <vcl/timer.hxx>
@@ -94,7 +95,6 @@ private:
mbActivePopup:1;
Link maModifyHdl;
Link maUpdateDataHdl;
- Link maAutocompleteHdl;
css::uno::Reference < css::i18n::XExtendedInputSequenceChecker > mxISC;
@@ -238,8 +238,7 @@ public:
void SetSubEdit( Edit* pEdit );
Edit* GetSubEdit() const { return mpSubEdit; }
- void SetAutocompleteHdl( const Link& rHdl );
- const Link& GetAutocompleteHdl() const { return maAutocompleteHdl; }
+ boost::signals2::signal< void ( Edit* ) > autocompleteSignal;
AutocompleteAction GetAutocompleteAction() const { return meAutocompleteAction; }
virtual Size CalcMinimumSize() const;
diff --git a/svtools/source/control/inettbc.cxx b/svtools/source/control/inettbc.cxx
index e8e4d1c07b74..a5850531c182 100644
--- a/svtools/source/control/inettbc.cxx
+++ b/svtools/source/control/inettbc.cxx
@@ -899,7 +899,7 @@ void SvtURLBox::Init(bool bSetDefaultHelpID)
SetText( OUString() );
- GetSubEdit()->SetAutocompleteHdl( LINK( this, SvtURLBox, AutoCompleteHdl_Impl ) );
+ GetSubEdit()->autocompleteSignal.connect( boost::bind( &SvtURLBox::AutoCompleteHandler, this, _1 ) );
UpdatePicklistForSmartProtocol_Impl();
EnableAutoSize(GetStyle() & WB_AUTOSIZE);
@@ -1127,15 +1127,10 @@ bool SvtURLBox::PreNotify( NotifyEvent& rNEvt )
}
-IMPL_LINK_NOARG(SvtURLBox, AutoCompleteHdl_Impl)
+void SvtURLBox::AutoCompleteHandler( Edit* )
{
if ( GetSubEdit()->GetAutocompleteAction() == AUTOCOMPLETE_KEYINPUT )
- {
TryAutoComplete();
- return 1L;
- }
-
- return 0L;
}
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index 700fe04f5569..93d6c295dc07 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -224,14 +224,18 @@ void ComboBox::EnableAutocomplete( bool bEnable, bool bMatchCase )
mbMatchCase = bMatchCase;
if ( bEnable )
- mpSubEdit->SetAutocompleteHdl( LINK( this, ComboBox, ImplAutocompleteHdl ) );
+ {
+ if( !mAutocompleteConnection.connected())
+ mAutocompleteConnection = mpSubEdit->autocompleteSignal.connect(
+ boost::bind( &ComboBox::ImplAutocompleteHandler, this, _1 ) );
+ }
else
- mpSubEdit->SetAutocompleteHdl( Link() );
+ mAutocompleteConnection.disconnect();
}
bool ComboBox::IsAutocompleteEnabled() const
{
- return mpSubEdit->GetAutocompleteHdl().IsSet();
+ return mAutocompleteConnection.connected();
}
void ComboBox::ImplClickButtonHandler( ImplBtn* )
@@ -275,7 +279,7 @@ IMPL_LINK_NOARG(ComboBox, ImplPopupModeEndHdl)
return 0;
}
-IMPL_LINK( ComboBox, ImplAutocompleteHdl, Edit*, pEdit )
+void ComboBox::ImplAutocompleteHandler( Edit* pEdit )
{
Selection aSel = pEdit->GetSelection();
AutocompleteAction eAction = pEdit->GetAutocompleteAction();
@@ -326,8 +330,6 @@ IMPL_LINK( ComboBox, ImplAutocompleteHdl, Edit*, pEdit )
pEdit->SetText( aText, aSelection );
}
}
-
- return 0;
}
IMPL_LINK_NOARG(ComboBox, ImplSelectHdl)
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index 287339c33b65..404a0a00d2de 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -1615,12 +1615,12 @@ bool Edit::ImplHandleKeyEvent( const KeyEvent& rKEvt )
ImplCopyToSelectionClipboard();
}
- if ( bGoEnd && maAutocompleteHdl.IsSet() && !rKEvt.GetKeyCode().GetModifier() )
+ if ( bGoEnd && !autocompleteSignal.empty() && !rKEvt.GetKeyCode().GetModifier() )
{
if ( (maSelection.Min() == maSelection.Max()) && (maSelection.Min() == maText.getLength()) )
{
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
- maAutocompleteHdl.Call( this );
+ autocompleteSignal( this );
}
}
@@ -1686,7 +1686,7 @@ bool Edit::ImplHandleKeyEvent( const KeyEvent& rKEvt )
not suddenly to cycle the autocompletion
case KEY_TAB:
{
- if ( !mbReadOnly && maAutocompleteHdl.IsSet() &&
+ if ( !mbReadOnly && !autocompleteSignal.empty() &&
maSelection.Min() && (maSelection.Min() == maText.Len()) &&
!rKEvt.GetKeyCode().IsMod1() && !rKEvt.GetKeyCode().IsMod2() )
{
@@ -1697,7 +1697,7 @@ bool Edit::ImplHandleKeyEvent( const KeyEvent& rKEvt )
else
meAutocompleteAction = AUTOCOMPLETE_TABFORWARD;
- maAutocompleteHdl.Call( this );
+ autocompleteSignal( this );
// Wurde nichts veraendert, dann TAB fuer DialogControl
if ( GetSelection().Len() )
@@ -1715,12 +1715,12 @@ bool Edit::ImplHandleKeyEvent( const KeyEvent& rKEvt )
if ( !mbReadOnly )
{
ImplInsertText(OUString(rKEvt.GetCharCode()), 0, true);
- if ( maAutocompleteHdl.IsSet() )
+ if ( !autocompleteSignal.empty() )
{
if ( (maSelection.Min() == maSelection.Max()) && (maSelection.Min() == maText.getLength()) )
{
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
- maAutocompleteHdl.Call( this );
+ autocompleteSignal( this );
}
}
}
@@ -2080,12 +2080,12 @@ void Edit::Command( const CommandEvent& rCEvt )
ImplModified();
// #i25161# call auto complete handler for ext text commit also
- if ( maAutocompleteHdl.IsSet() )
+ if ( autocompleteSignal.empty() )
{
if ( (maSelection.Min() == maSelection.Max()) && (maSelection.Min() == maText.getLength()) )
{
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
- maAutocompleteHdl.Call( this );
+ autocompleteSignal( this );
}
}
}
@@ -2446,13 +2446,6 @@ void Edit::SetReadOnly( bool bReadOnly )
}
}
-void Edit::SetAutocompleteHdl( const Link& rHdl )
-{
- maAutocompleteHdl = rHdl;
- if ( mpSubEdit )
- mpSubEdit->SetAutocompleteHdl( rHdl );
-}
-
void Edit::SetInsertMode( bool bInsert )
{
if ( bInsert != mbInsertMode )
@@ -2709,6 +2702,7 @@ void Edit::SetSubEdit( Edit* pEdit )
mpSubEdit->mbIsSubEdit = true;
mpSubEdit->SetReadOnly( mbReadOnly );
+ mpSubEdit->autocompleteSignal.connect( autocompleteSignal );
}
}