oovbaapi/ooo/vba/excel/XWorksheets.idl   |    1 +
 sc/source/ui/vba/vbaworksheets.cxx       |    7 +++++++
 sc/source/ui/vba/vbaworksheets.hxx       |    1 +
 vbahelper/source/vbahelper/vbahelper.cxx |   13 ++++++++++++-
 4 files changed, 21 insertions(+), 1 deletion(-)

New commits:
commit 17c8f6745f9f98013c1b08de8ec03be66546c7fc
Author: Noel Power <noel.po...@novell.com>
Date:   Mon Apr 23 13:33:15 2012 +0100

    support Sheets.PrintPreview bnc#757844
    
    there is still a little wrinkle, the preview shell always shows what sheets 
are selected, it's currently not possible to specify the sheets to preview

diff --git a/oovbaapi/ooo/vba/excel/XWorksheets.idl 
b/oovbaapi/ooo/vba/excel/XWorksheets.idl
index 17c80ce..cca74f9 100644
--- a/oovbaapi/ooo/vba/excel/XWorksheets.idl
+++ b/oovbaapi/ooo/vba/excel/XWorksheets.idl
@@ -45,6 +45,7 @@ interface XWorksheets
     void PrintOut( [in] any From, [in] any To, [in] any Copies, [in] any 
Preview, [in] any ActivePrinter, [in] any PrintToFile, [in] any Collate, [in] 
any PrToFileName );
     void Select( [in] any Replace );
     void Copy( [in] any Before, [in] any After);
+    void PrintPreview( [in] any EnableChanges );
 };
 }; }; };
 
diff --git a/sc/source/ui/vba/vbaworksheets.cxx 
b/sc/source/ui/vba/vbaworksheets.cxx
index 89f169a..3d218fa 100644
--- a/sc/source/ui/vba/vbaworksheets.cxx
+++ b/sc/source/ui/vba/vbaworksheets.cxx
@@ -537,4 +537,11 @@ bool ScVbaWorksheets::nameExists( uno::Reference 
<sheet::XSpreadsheetDocument>&
     return false;
 }
 
+void ScVbaWorksheets::PrintPreview( const css::uno::Any& EnableChanges ) throw 
(css::uno::RuntimeException)
+{
+    // need test, print preview current active sheet
+    // !! TODO !! get view shell from controller
+    PrintPreviewHelper( EnableChanges, excel::getBestViewShell( mxModel ) );
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/vba/vbaworksheets.hxx 
b/sc/source/ui/vba/vbaworksheets.hxx
index c34ec08..b184d78 100644
--- a/sc/source/ui/vba/vbaworksheets.hxx
+++ b/sc/source/ui/vba/vbaworksheets.hxx
@@ -73,6 +73,7 @@ public:
     virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource 
);
     virtual void SAL_CALL Select( const css::uno::Any& Replace ) throw 
(css::uno::RuntimeException);
     virtual void SAL_CALL Copy ( const css::uno::Any& Before, const 
css::uno::Any& After) throw (css::uno::RuntimeException);
+    virtual void SAL_CALL PrintPreview( const css::uno::Any& EnableChanges ) 
throw (css::uno::RuntimeException);
     // ScVbaWorksheets_BASE
     virtual css::uno::Any SAL_CALL Item( const css::uno::Any& Index1, const 
css::uno::Any& Index2 ) throw
 (css::uno::RuntimeException);
diff --git a/vbahelper/source/vbahelper/vbahelper.cxx 
b/vbahelper/source/vbahelper/vbahelper.cxx
index b91ef85..0ef22fd 100644
--- a/vbahelper/source/vbahelper/vbahelper.cxx
+++ b/vbahelper/source/vbahelper/vbahelper.cxx
@@ -473,7 +473,18 @@ void PrintOutHelper( SfxViewShell* pViewShell, const 
uno::Any& From, const uno::
 
  void PrintPreviewHelper( const css::uno::Any& /*EnableChanges*/, 
SfxViewShell* pViewShell )
 {
-    dispatchExecute( pViewShell, SID_VIEWSHELL1 );
+    SfxViewFrame* pViewFrame = NULL;
+    if ( pViewShell )
+        pViewFrame = pViewShell->GetViewFrame();
+    if ( pViewFrame )
+    {
+        if ( !pViewFrame->GetFrame().IsInPlace() )
+        {
+            dispatchExecute( pViewShell, SID_VIEWSHELL1 );
+            while ( isInPrintPreview( pViewFrame ) )
+                Application::Yield();
+        }
+    }
 }
 
 bool extractBoolFromAny( const uno::Any& rAny ) throw (uno::RuntimeException)
_______________________________________________
Libreoffice-commits mailing list
Libreoffice-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to