You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
5.6 KiB
160 lines
5.6 KiB
From df97997452b443f184c07c8cb1eedaaa0621f05f Mon Sep 17 00:00:00 2001
|
|
From: David Tardon <dtardon@redhat.com>
|
|
Date: Fri, 13 Jan 2012 07:53:08 +0100
|
|
Subject: [PATCH] refactor slightly to avoid link problems with gcc 4.7
|
|
|
|
---
|
|
sc/source/ui/inc/anyrefdg.hxx | 23 ++++++++---
|
|
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 3dd531b..383f6b3 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 91e3858..b0a4ad6 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 )
|
|
{
|
|
--
|
|
1.7.7.5
|
|
|