[Libreoffice-commits] core.git: Branch 'feature/gsoc14-draw-chained-text-boxes' - editeng/source include/editeng svx/source

matteocam matteo.campanelli at gmail.com
Thu Aug 14 06:02:09 PDT 2014


 editeng/source/editeng/editeng.cxx  |    5 +++++
 editeng/source/editeng/impedit.hxx  |    3 +++
 editeng/source/editeng/impedit3.cxx |   16 ++++++++++++++++
 editeng/source/outliner/outlin2.cxx |    5 +++++
 include/editeng/editeng.hxx         |    1 +
 include/editeng/outliner.hxx        |    1 +
 svx/source/svdraw/svdedxv.cxx       |    2 ++
 7 files changed, 33 insertions(+)

New commits:
commit 40fcecfce85b12b60518ef8258378a6f085023cb
Author: matteocam <matteo.campanelli at gmail.com>
Date:   Thu Aug 14 14:59:30 2014 +0200

    Hard coded call to onEditOutlinerStatusEvent for chaining
    
    Change-Id: I663263170a29a290cc37b89f540f9a8daa9c9f73

diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index 2709740..9e6f25d 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -1522,6 +1522,11 @@ void EditEngine::SetStatusEventHdl( const Link& rLink )
     pImpEditEngine->SetStatusEventHdl( rLink );
 }
 
+void EditEngine::SetStatusEventHdl1( const Link& rLink )
+{
+    pImpEditEngine->SetStatusEventHdlChaining( rLink );
+}
+
 Link EditEngine::GetStatusEventHdl() const
 {
     return pImpEditEngine->GetStatusEventHdl();
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index d53e5fd..ac95eaa 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -475,6 +475,7 @@ private:
     // this should not happen immediately (critical section):
     Timer               aStatusTimer;
     Link                aStatusHdlLink;
+    Link                aStatusHdlLinkChaining;
     Link                aNotifyHdl;
     Link                aImportHdl;
     Link                aBeginMovingParagraphsHdl;
@@ -839,6 +840,7 @@ public:
 
     void            SetStatusEventHdl( const Link& rLink )  { aStatusHdlLink = rLink; }
     Link            GetStatusEventHdl() const               { return aStatusHdlLink; }
+    void            SetStatusEventHdlChaining( const Link& rLink )  { aStatusHdlLinkChaining = rLink; }
 
     void            SetNotifyHdl( const Link& rLink )       { aNotifyHdl = rLink; }
     Link            GetNotifyHdl() const            { return aNotifyHdl; }
@@ -876,6 +878,7 @@ public:
 
     InternalEditStatus& GetStatus() { return aStatus; }
     void                CallStatusHdl();
+    void                CallStatusHdlChaining();
     void                DelayedCallStatusHdl()  { aStatusTimer.Start(); }
 
     void                CallNotify( EENotify& rNotify );
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 7ea5a51..8f95bce 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -504,9 +504,25 @@ void ImpEditEngine::FormatDoc()
 
     CallStatusHdl();    // If Modified...
 
+    //FIXME(matteocam)
+    CallStatusHdlChaining(); // XXX: hard coded for chaining
+
     LeaveBlockNotifications();
 }
 
+void ImpEditEngine::CallStatusHdlChaining()
+{
+    if ( aStatusHdlLinkChaining.IsSet() && aStatus.GetStatusWord() )
+    {
+        // The Status has to be reset before the Call,
+        // since other Flags might be set in the handler...
+        EditStatus aTmpStatus( aStatus );
+        aStatus.Clear(); // No need for this with chaining. It does not affect it either way.
+        //aStatusHdlLinkChaining.Call( &aTmpStatus );
+        aStatusTimer.Stop();    // If called by hand ...
+    }
+}
+
 bool ImpEditEngine::ImpCheckRefMapMode()
 {
     bool bChange = false;
diff --git a/editeng/source/outliner/outlin2.cxx b/editeng/source/outliner/outlin2.cxx
index 43ca90b..ca69fcd 100644
--- a/editeng/source/outliner/outlin2.cxx
+++ b/editeng/source/outliner/outlin2.cxx
@@ -139,6 +139,11 @@ Link Outliner::GetStatusEventHdl() const
     return pEditEngine->GetStatusEventHdl();
 }
 
+void Outliner::SetStatusEventHdl1( const Link& rLink )
+{
+    pEditEngine->SetStatusEventHdl1( rLink );
+}
+
 void Outliner::SetDefTab( sal_uInt16 nTab )
 {
     pEditEngine->SetDefTab( nTab );
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index 33dd8f0..7bd1656 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -357,6 +357,7 @@ public:
     sal_uLong       Write( SvStream& rOutput, EETextFormat );
 
     void            SetStatusEventHdl( const Link& rLink );
+    void            SetStatusEventHdl1( const Link& rLink ); // for chaining
     Link            GetStatusEventHdl() const;
 
     void            SetNotifyHdl( const Link& rLink );
diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx
index dedc476..8889adf 100644
--- a/include/editeng/outliner.hxx
+++ b/include/editeng/outliner.hxx
@@ -802,6 +802,7 @@ public:
 
     void            SetStatusEventHdl( const Link& rLink );
     Link            GetStatusEventHdl() const;
+    void            SetStatusEventHdl1( const Link& rLink );
 
     void            Draw( OutputDevice* pOutDev, const Rectangle& rOutRect );
     void            Draw( OutputDevice* pOutDev, const Point& rStartPos, short nOrientation = 0 );
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index a0bbfa1..03a00c3 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -712,6 +712,8 @@ bool SdrObjEditView::SdrBeginTextEdit(
 
             pTextEditOutlinerView->ShowCursor();
             pTextEditOutliner->SetStatusEventHdl(LINK(this,SdrObjEditView,ImpOutlinerStatusEventHdl));
+            // FIXME(matteocam) // For chaining
+            pTextEditOutliner->SetStatusEventHdl1(LINK(this,SdrObjEditView,ImpOutlinerStatusEventHdl));
 #ifdef DBG_UTIL
             if (pItemBrowser!=NULL) pItemBrowser->SetDirty();
 #endif


More information about the Libreoffice-commits mailing list