diff options
author | David Tardon <dtardon@redhat.com> | 2012-01-13 07:53:08 +0100 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2012-01-13 08:02:58 +0100 |
commit | df97997452b443f184c07c8cb1eedaaa0621f05f (patch) | |
tree | 0c53ea1c69a6a1bd43e9caae8f281a5d98587ad2 /sc/source | |
parent | bcadf38c77dd9e93fe71132260452ab0c1d4c7ab (diff) |
refactor slightly to avoid link problems with gcc 4.7
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/ui/inc/anyrefdg.hxx | 23 | ||||
-rw-r--r-- | sc/source/ui/miscdlgs/anyrefdg.cxx | 80 |
2 files changed, 49 insertions, 54 deletions
diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index 3dd531b357d1..383f6b3726a6 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 91e385813959..b0a4ad68575f 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -865,54 +865,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 ) { |