sc/source/ui/inc/anyrefdg.hxx | 23 +++++++--- sc/source/ui/miscdlgs/anyrefdg.cxx | 80 ++++++++++++++----------------------- 2 files changed, 49 insertions(+), 54 deletions(-)
New commits: commit 4163074e53603f5a068b9b066cfcf840b593b236 Author: David Tardon <dtar...@redhat.com> Date: Fri Jan 13 07:53:08 2012 +0100 refactor slightly to avoid link problems with gcc 4.7 Signed-off-by: David Tardon <dtar...@redhat.com> diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index 8bca700..afd98e4 100644 --- a/sc/source/ui/inc/anyrefdg.hxx +++ b/sc/source/ui/inc/anyrefdg.hxx @@ -121,7 +121,6 @@ class SC_DLLPUBLIC ScRefHandler : //public SfxModelessDialog, public: operator Window *(){ return &m_rWindow; } Window * operator ->() { return static_cast<Window *>(*this); } - template<class,bool> friend class ScRefHdlrImplBase; friend class formula::RefButton; friend class formula::RefEdit; @@ -152,6 +151,9 @@ protected: bool ParseWithNames( ScRangeList& rRanges, const String& rStr, ScDocument* pDoc ); + void preNotify(const NotifyEvent& rEvent, const bool bBindRef); + void stateChanged(const StateChangedType nStateChange, const bool bBindRef); + public: ScRefHandler( Window &rWindow, SfxBindings* pB/*, SfxChildWindow* pCW, Window* pParent, sal_uInt16 nResId*/, bool bBindRef ); @@ -222,6 +224,20 @@ ScRefHdlrImplBase<TWindow,bBindRef>::ScRefHdlrImplBase( TParentWindow* pParent, template<class TWindow, bool bBindRef > ScRefHdlrImplBase<TWindow,bBindRef>::~ScRefHdlrImplBase(){} +template<class TWindow, bool bBindRef> +long ScRefHdlrImplBase<TWindow, bBindRef>::PreNotify( NotifyEvent& rNEvt ) +{ + ScRefHandler::preNotify( rNEvt, bBindRef ); + return TWindow::PreNotify( rNEvt ); +} + +template<class TWindow, bool bBindRef> +void ScRefHdlrImplBase<TWindow, bBindRef>::StateChanged( StateChangedType nStateChange ) +{ + TWindow::StateChanged( nStateChange ); + ScRefHandler::stateChanged( nStateChange, bBindRef ); +} + //============================================================================ template<class TDerived, class TBase, bool bBindRef = true> struct ScRefHdlrImpl: ScRefHdlrImplBase<TBase, bBindRef > @@ -257,11 +273,6 @@ inline bool ScRefHandler::CanInputDone( sal_Bool bForced ) return m_aHelper.CanInputDone( bForced ); } -template <> SC_DLLPUBLIC void ScRefHdlrImplBase<SfxModelessDialog,true>::StateChanged( StateChangedType nStateChange ); -template <> SC_DLLPUBLIC long ScRefHdlrImplBase<SfxModelessDialog,true>::PreNotify( NotifyEvent& rNEvt ); -template <> SC_DLLPUBLIC void ScRefHdlrImplBase<SfxTabDialog,false>::StateChanged( StateChangedType nStateChange ); -template <> SC_DLLPUBLIC long ScRefHdlrImplBase<SfxTabDialog,false>::PreNotify( NotifyEvent& rNEvt ); - #endif // SC_ANYREFDG_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx index 25e2f12..42942f2 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -868,54 +868,38 @@ void ScRefHandler::ToggleCollapsed( formula::RefEdit* pEdit, formula::RefButton* m_aHelper.ToggleCollapsed( pEdit, pButton ); } -#if defined( _MSC_VER ) -#define INTRODUCE_TEMPLATE -#else -#define INTRODUCE_TEMPLATE template <> -#endif - -#define IMPL_TWINDOW_PRENOTIFY( TWindow,bBindRef ) \ -INTRODUCE_TEMPLATE long ScRefHdlrImplBase<TWindow,bBindRef>::PreNotify( NotifyEvent& rNEvt )\ -{\ - if( bBindRef || m_bInRefMode )\ - {\ - sal_uInt16 nSwitch=rNEvt.GetType();\ - if(nSwitch==EVENT_GETFOCUS)\ - {\ - pActiveWin=rNEvt.GetWindow();\ - }\ - }\ - return TWindow::PreNotify(rNEvt);\ -} - -#define IMPL_TWINDOW_STATECHANGED( TWindow,bBindRef ) \ -INTRODUCE_TEMPLATE void ScRefHdlrImplBase<TWindow,bBindRef>::StateChanged( StateChangedType nStateChange )\ -{\ - TWindow::StateChanged( nStateChange );\ -\ - if( !bBindRef && !m_bInRefMode ) return;\ - \ - if(nStateChange == STATE_CHANGE_VISIBLE)\ - {\ - if(m_rWindow.IsVisible())\ - {\ - m_aHelper.enableInput( false );\ - m_aHelper.EnableSpreadsheets();\ - m_aHelper.SetDispatcherLock( sal_True );\ - aTimer.Start();\ - }\ - else\ - {\ - m_aHelper.enableInput( sal_True );\ - m_aHelper.SetDispatcherLock( false ); /*//! here and in DoClose ?*/\ - }\ - }\ -} - -IMPL_TWINDOW_PRENOTIFY( SfxModelessDialog, true ) -IMPL_TWINDOW_PRENOTIFY( SfxTabDialog, false ) -IMPL_TWINDOW_STATECHANGED( SfxModelessDialog, true ) -IMPL_TWINDOW_STATECHANGED( SfxTabDialog, false ) +void ScRefHandler::preNotify(const NotifyEvent& rNEvt, const bool bBindRef) +{ + if( bBindRef || m_bInRefMode ) + { + sal_uInt16 nSwitch=rNEvt.GetType(); + if(nSwitch==EVENT_GETFOCUS) + { + pActiveWin=rNEvt.GetWindow(); + } + } +} + +void ScRefHandler::stateChanged(const StateChangedType nStateChange, const bool bBindRef) +{ + if( !bBindRef && !m_bInRefMode ) return; + + if(nStateChange == STATE_CHANGE_VISIBLE) + { + if(m_rWindow.IsVisible()) + { + m_aHelper.enableInput( false ); + m_aHelper.EnableSpreadsheets(); + m_aHelper.SetDispatcherLock( sal_True ); + aTimer.Start(); + } + else + { + m_aHelper.enableInput( sal_True ); + m_aHelper.SetDispatcherLock( false ); /*//! here and in DoClose ?*/ + } + } +} IMPL_LINK( ScRefHandler, UpdateFocusHdl, Timer*, EMPTYARG ) { _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits