[Libreoffice-commits] .: Branch 'libreoffice-3-5' - sc/source

David Tardon dtardon at kemper.freedesktop.org
Sat Jan 14 00:16:30 PST 2012


 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 <dtardon at 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 <dtardon at 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 )
 {


More information about the Libreoffice-commits mailing list