summaryrefslogtreecommitdiff
path: root/sc/source/ui/view
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/view')
-rw-r--r--sc/source/ui/view/dbfunc.cxx3
-rw-r--r--sc/source/ui/view/drawutil.cxx9
-rw-r--r--sc/source/ui/view/drawvie4.cxx2
-rw-r--r--sc/source/ui/view/drawview.cxx2
-rw-r--r--sc/source/ui/view/formatsh.cxx11
-rw-r--r--sc/source/ui/view/gridwin3.cxx2
-rw-r--r--sc/source/ui/view/output2.cxx67
-rw-r--r--sc/source/ui/view/pfuncache.cxx9
-rw-r--r--sc/source/ui/view/preview.cxx332
-rw-r--r--sc/source/ui/view/printfun.cxx77
-rw-r--r--sc/source/ui/view/tabvwsh4.cxx27
-rw-r--r--sc/source/ui/view/tabvwshb.cxx2
-rw-r--r--sc/source/ui/view/viewfun5.cxx23
13 files changed, 207 insertions, 359 deletions
diff --git a/sc/source/ui/view/dbfunc.cxx b/sc/source/ui/view/dbfunc.cxx
index 8db71ad9752f..4b6d14470063 100644
--- a/sc/source/ui/view/dbfunc.cxx
+++ b/sc/source/ui/view/dbfunc.cxx
@@ -504,8 +504,7 @@ sal_Bool ScDBFunc::ImportData( const ScImportParam& rParam, sal_Bool bRecord )
}
ScDBDocFunc aDBDocFunc( *GetViewData()->GetDocShell() );
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > xResultSet;
- return aDBDocFunc.DoImport( GetViewData()->GetTabNo(), rParam, xResultSet, NULL, bRecord );
+ return aDBDocFunc.DoImport( GetViewData()->GetTabNo(), rParam, NULL, bRecord );
}
diff --git a/sc/source/ui/view/drawutil.cxx b/sc/source/ui/view/drawutil.cxx
index a5a4a7ee1c1d..89287a93e14b 100644
--- a/sc/source/ui/view/drawutil.cxx
+++ b/sc/source/ui/view/drawutil.cxx
@@ -81,6 +81,15 @@ void ScDrawUtil::CalcScale( ScDocument* pDoc, SCTAB nTab,
nPixelY += ScViewData::ToPixel(nHeight, nPPTY);
}
+ // #i116848# To get a large-enough number for PixelToLogic, multiply the integer values
+ // instead of using a larger number of rows
+ long nMultiply = 2000000 / nTwipsY;
+ if ( nMultiply > 1 )
+ {
+ nTwipsY *= nMultiply;
+ nPixelY *= nMultiply;
+ }
+
MapMode aHMMMode( MAP_100TH_MM, Point(), rZoomX, rZoomY );
Point aPixelLog = pDev->PixelToLogic( Point( nPixelX,nPixelY ), aHMMMode );
diff --git a/sc/source/ui/view/drawvie4.cxx b/sc/source/ui/view/drawvie4.cxx
index 1c0d38ee18e5..76984b813063 100644
--- a/sc/source/ui/view/drawvie4.cxx
+++ b/sc/source/ui/view/drawvie4.cxx
@@ -283,7 +283,7 @@ void ScDrawView::CalcNormScale( Fraction& rFractX, Fraction& rFractY ) const
if (nEndCol<20)
nEndCol = 20;
if (nEndRow<20)
- nEndRow = 1000;
+ nEndRow = 20;
Fraction aZoom(1,1);
ScDrawUtil::CalcScale( pDoc, nTab, 0,0, nEndCol,nEndRow, pDev, aZoom,aZoom,
diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx
index cc63f9b97a62..57b365eb228b 100644
--- a/sc/source/ui/view/drawview.cxx
+++ b/sc/source/ui/view/drawview.cxx
@@ -377,7 +377,7 @@ void ScDrawView::RecalcScale()
if (nEndCol<20)
nEndCol = 20;
if (nEndRow<20)
- nEndRow = 1000;
+ nEndRow = 20; // #i116848# instead of a large row number for an empty sheet, heights are multiplied in CalcScale
ScDrawUtil::CalcScale( pDoc, nTab, 0,0, nEndCol,nEndRow, pDev,aZoomX,aZoomY,nPPTX,nPPTY,
aScaleX,aScaleY );
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index ecc6f19d43e5..c9ed04ce2db9 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -1222,13 +1222,22 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq )
if( pSet )
{
- const SvxUnderlineItem& rUnderline = (const SvxUnderlineItem&)pSet->Get( ATTR_FONT_UNDERLINE );
+ const SfxPoolItem& rUnderline = pSet->Get( ATTR_FONT_UNDERLINE );
if( rUnderline.ISA(SvxUnderlineItem) )
{
pTabViewShell->ApplyAttr( rUnderline );
pNewSet->Put( rUnderline,rUnderline.Which() );
}
+ else if ( rUnderline.ISA(SvxTextLineItem) )
+ {
+ // #i106580# also allow SvxTextLineItem (base class of SvxUnderlineItem)
+ const SvxTextLineItem& rTextLineItem = static_cast<const SvxTextLineItem&>(rUnderline);
+ SvxUnderlineItem aNewItem( rTextLineItem.GetLineStyle(), rTextLineItem.Which() );
+ aNewItem.SetColor( rTextLineItem.GetColor() );
+ pTabViewShell->ApplyAttr( aNewItem );
+ pNewSet->Put( aNewItem, aNewItem.Which() );
+ }
}
else
{
diff --git a/sc/source/ui/view/gridwin3.cxx b/sc/source/ui/view/gridwin3.cxx
index 295caae639af..e7d9e4e318b4 100644
--- a/sc/source/ui/view/gridwin3.cxx
+++ b/sc/source/ui/view/gridwin3.cxx
@@ -265,7 +265,7 @@ MapMode ScGridWindow::GetDrawMapMode( sal_Bool bForce )
SCROW nEndRow = 0;
pDoc->GetTableArea( nTab, nEndCol, nEndRow );
if (nEndCol<20) nEndCol = 20;
- if (nEndRow<20) nEndRow = 1000;
+ if (nEndRow<20) nEndRow = 20;
ScDrawUtil::CalcScale( pDoc, nTab, 0,0, nEndCol,nEndRow, this,
pViewData->GetZoomX(),pViewData->GetZoomY(),
pViewData->GetPPTX(),pViewData->GetPPTY(),
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index b1d6787d3ce6..2df47d16e195 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -532,9 +532,9 @@ void ScDrawStringsVars::SetTextToWidthOrHash( ScBaseCell* pCell, long nWidth )
if (eType == CELLTYPE_FORMULA)
{
ScFormulaCell* pFCell = static_cast<ScFormulaCell*>(pCell);
- if (pFCell->GetErrCode() != 0)
+ if (pFCell->GetErrCode() != 0 || pOutput->bShowFormulas)
{
- SetHashText(); // If the error string doesn't fit, always use "###"
+ SetHashText(); // If the error string doesn't fit, always use "###". Also for "display formulas" (#i116691#)
return;
}
// If it's formula, the result must be a value.
@@ -1905,6 +1905,26 @@ void ScOutputData::DrawStrings( sal_Bool bPixelToLogic )
// -------------------------------------------------------------------------------
+ScFieldEditEngine* ScOutputData::CreateOutputEditEngine()
+{
+ ScFieldEditEngine* pEngine = new ScFieldEditEngine( pDoc->GetEnginePool() );
+ pEngine->SetUpdateMode( sal_False );
+ // a RefDevice always has to be set, otherwise EditEngine would create a VirtualDevice
+ pEngine->SetRefDevice( pFmtDevice );
+ sal_uInt32 nCtrl = pEngine->GetControlWord();
+ if ( bShowSpellErrors )
+ nCtrl |= EE_CNTRL_ONLINESPELLING;
+ if ( eType == OUTTYPE_PRINTER )
+ nCtrl &= ~EE_CNTRL_MARKFIELDS;
+ if ( eType == OUTTYPE_WINDOW && pRefDevice == pFmtDevice )
+ nCtrl &= ~EE_CNTRL_FORMAT100; // use the actual MapMode
+ pEngine->SetControlWord( nCtrl );
+ pDoc->ApplyAsianEditSettings( *pEngine );
+ pEngine->EnableAutoColor( bUseStyleColor );
+ pEngine->SetDefaultHorizontalTextDirection( (EEHorizontalTextDirection)pDoc->GetEditTextDirection( nTab ) );
+ return pEngine;
+}
+
void lcl_ClearEdit( EditEngine& rEngine ) // Text und Attribute
{
rEngine.SetUpdateMode( sal_False );
@@ -2221,29 +2241,10 @@ void ScOutputData::DrawEdit(sal_Bool bPixelToLogic)
//
if (!pEngine)
- {
- // Ein RefDevice muss auf jeden Fall gesetzt werden,
- // sonst legt sich die EditEngine ein VirtualDevice an!
- pEngine = new ScFieldEditEngine( pDoc->GetEnginePool() );
- pEngine->SetUpdateMode( sal_False );
- pEngine->SetRefDevice( pFmtDevice ); // always set
- sal_uLong nCtrl = pEngine->GetControlWord();
- if ( bShowSpellErrors )
- nCtrl |= EE_CNTRL_ONLINESPELLING;
- if ( eType == OUTTYPE_PRINTER )
- nCtrl &= ~EE_CNTRL_MARKFIELDS;
- pEngine->SetControlWord( nCtrl );
- pEngine->SetForbiddenCharsTable( pDoc->GetForbiddenCharacters() );
- pEngine->SetAsianCompressionMode( pDoc->GetAsianCompression() );
- pEngine->SetKernAsianPunctuation( pDoc->GetAsianKerning() );
- pEngine->EnableAutoColor( bUseStyleColor );
- pEngine->SetDefaultHorizontalTextDirection(
- (EEHorizontalTextDirection)pDoc->GetEditTextDirection( nTab ) );
- }
+ pEngine = CreateOutputEditEngine();
else
lcl_ClearEdit( *pEngine ); // also calls SetUpdateMode(sal_False)
-
sal_Bool bCellIsValue = lcl_SafeIsValue(pCell);
SvxCellHorJustify eHorJust = (SvxCellHorJustify)((const SvxHorJustifyItem&)
@@ -2285,8 +2286,6 @@ void ScOutputData::DrawEdit(sal_Bool bPixelToLogic)
eHorJust = SVX_HOR_JUSTIFY_RIGHT;
}
-
-
SvxCellHorJustify eOutHorJust =
( eHorJust != SVX_HOR_JUSTIFY_STANDARD ) ? eHorJust :
( bCellIsValue ? SVX_HOR_JUSTIFY_RIGHT : SVX_HOR_JUSTIFY_LEFT );
@@ -3054,25 +3053,7 @@ void ScOutputData::DrawRotated(sal_Bool bPixelToLogic)
if (!bHidden)
{
if (!pEngine)
- {
- // Ein RefDevice muss auf jeden Fall gesetzt werden,
- // sonst legt sich die EditEngine ein VirtualDevice an!
- pEngine = new ScFieldEditEngine( pDoc->GetEnginePool() );
- pEngine->SetUpdateMode( sal_False );
- pEngine->SetRefDevice( pFmtDevice ); // always set
- sal_uLong nCtrl = pEngine->GetControlWord();
- if ( bShowSpellErrors )
- nCtrl |= EE_CNTRL_ONLINESPELLING;
- if ( eType == OUTTYPE_PRINTER )
- nCtrl &= ~EE_CNTRL_MARKFIELDS;
- pEngine->SetControlWord( nCtrl );
- pEngine->SetForbiddenCharsTable( pDoc->GetForbiddenCharacters() );
- pEngine->SetAsianCompressionMode( pDoc->GetAsianCompression() );
- pEngine->SetKernAsianPunctuation( pDoc->GetAsianKerning() );
- pEngine->EnableAutoColor( bUseStyleColor );
- pEngine->SetDefaultHorizontalTextDirection(
- (EEHorizontalTextDirection)pDoc->GetEditTextDirection( nTab ) );
- }
+ pEngine = CreateOutputEditEngine();
else
lcl_ClearEdit( *pEngine ); // also calls SetUpdateMode(sal_False)
diff --git a/sc/source/ui/view/pfuncache.cxx b/sc/source/ui/view/pfuncache.cxx
index 6bb14163b227..4105bfb98db5 100644
--- a/sc/source/ui/view/pfuncache.cxx
+++ b/sc/source/ui/view/pfuncache.cxx
@@ -64,6 +64,11 @@ ScPrintFuncCache::ScPrintFuncCache( ScDocShell* pD, const ScMarkData& rMark,
ScDocument* pDoc = pDocSh->GetDocument();
SCTAB nTabCount = pDoc->GetTableCount();
+
+ // avoid repeated progress bars if row heights for all sheets are needed
+ if ( nTabCount > 1 && rMark.GetSelectCount() == nTabCount )
+ pDocSh->UpdatePendingRowHeights( nTabCount-1, true );
+
SCTAB nTab;
for ( nTab=0; nTab<nTabCount; nTab++ )
{
@@ -72,8 +77,6 @@ ScPrintFuncCache::ScPrintFuncCache( ScDocShell* pD, const ScMarkData& rMark,
long nThisTab = 0;
if ( rMark.GetTableSelect( nTab ) )
{
- pDoc->InvalidatePageBreaks( nTab ); // user print area (selection) may be different
-
ScPrintFunc aFunc( pDocSh, pPrinter, nTab, nAttrPage, 0, pSelRange, &aSelection.GetOptions() );
nThisTab = aFunc.GetTotalPages();
nFirstAttr[nTab] = aFunc.GetFirstPageNo(); // from page style or previous sheet
@@ -125,7 +128,7 @@ void ScPrintFuncCache::InitLocations( const ScMarkData& rMark, OutputDevice* pDe
aPage.Select( aPageRange );
ScPreviewLocationData aLocData( pDoc, pDev );
- aFunc.DoPrint( aPage, nTabStart, nDisplayStart, sal_False, NULL, &aLocData );
+ aFunc.DoPrint( aPage, nTabStart, nDisplayStart, sal_False, &aLocData );
ScRange aCellRange;
Rectangle aPixRect;
diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx
index 4f3f1d753f32..8fc9c6037cbf 100644
--- a/sc/source/ui/view/preview.cxx
+++ b/sc/source/ui/view/preview.cxx
@@ -109,7 +109,8 @@ ScPreview::ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pView
bLocationValid( sal_False ),
pLocationData( NULL ),
pDrawView( NULL ),
- bInPaint( sal_False ),
+ bInPaint( false ),
+ bInSetZoom( false ),
bInGetState( sal_False ),
pDocShell( pDocSh ),
pViewShell( pViewSh ),
@@ -139,6 +140,9 @@ ScPreview::ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pView
SetUniqueId( HID_SC_WIN_PREVIEW );
SetDigitLanguage( SC_MOD()->GetOptDigitLanguage() );
+
+ for (SCCOL i=0; i<=MAXCOL; i++)
+ nRight[i] = 0; // initialized with actual positions when markers are drawn
}
@@ -367,6 +371,16 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
DrawRect(Rectangle( 0, 0, aWinSize.Width(), -aOffset.Y() ));
}
+ long nLeftMargin = 0;
+ long nRightMargin = 0;
+ long nTopMargin = 0;
+ long nBottomMargin = 0;
+ sal_Bool bHeaderOn = sal_False;
+ sal_Bool bFooterOn = sal_False;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ sal_Bool bLayoutRTL = pDoc->IsLayoutRTL( nTab );
+
Size aLocalPageSize;
if ( bValidPage )
{
@@ -392,17 +406,65 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
aPage.SetTotalRange( Range(0,RANGE_MAX) );
aPage.Select( aPageRange );
- long nPrinted = pPrintFunc->DoPrint( aPage, nTabStart, nDisplayStart, bDoPrint, NULL, pFillLocation );
+ long nPrinted = pPrintFunc->DoPrint( aPage, nTabStart, nDisplayStart, bDoPrint, pFillLocation );
DBG_ASSERT(nPrinted<=1, "was'n nu los?");
SetMapMode(aMMMode);
-// sal_uInt16 nPrintZoom = pPrintFunc->GetZoom();
+
+ //init nLeftMargin ... in the ScPrintFunc::InitParam!!!
+ nLeftMargin = pPrintFunc->GetLeftMargin();
+ nRightMargin = pPrintFunc->GetRightMargin();
+ nTopMargin = pPrintFunc->GetTopMargin();
+ nBottomMargin = pPrintFunc->GetBottomMargin();
+ nHeaderHeight = pPrintFunc->GetHeader().nHeight;
+ nFooterHeight = pPrintFunc->GetFooter().nHeight;
+ bHeaderOn = pPrintFunc->GetHeader().bEnable;
+ bFooterOn = pPrintFunc->GetFooter().bEnable;
+ mnScale = pPrintFunc->GetZoom();
+
+ if ( bDoPrint && bPageMargin && pLocationData ) // don't make use of pLocationData while filling it
+ {
+ Rectangle aPixRect;
+ Rectangle aRectCellPosition;
+ Rectangle aRectPosition;
+ pLocationData->GetMainCellRange( aPageArea, aPixRect );
+ if( !bLayoutRTL )
+ {
+ pLocationData->GetCellPosition( aPageArea.aStart, aRectPosition );
+ nLeftPosition = aRectPosition.Left();
+ for( SCCOL i = aPageArea.aStart.Col(); i <= aPageArea.aEnd.Col(); i++ )
+ {
+ pLocationData->GetCellPosition( ScAddress( i,aPageArea.aStart.Row(),aPageArea.aStart.Tab()),aRectCellPosition );
+ nRight[i] = aRectCellPosition.Right();
+ }
+ }
+ else
+ {
+ pLocationData->GetCellPosition( aPageArea.aEnd, aRectPosition );
+ nLeftPosition = aRectPosition.Right()+1;
+
+ pLocationData->GetCellPosition( aPageArea.aStart,aRectCellPosition );
+ nRight[ aPageArea.aEnd.Col() ] = aRectCellPosition.Left();
+ for( SCCOL i = aPageArea.aEnd.Col(); i > aPageArea.aStart.Col(); i-- )
+ {
+ pLocationData->GetCellPosition( ScAddress( i,aPageArea.aEnd.Row(),aPageArea.aEnd.Tab()),aRectCellPosition );
+ nRight[ i-1 ] = nRight[ i ] + aRectCellPosition.Right() - aRectCellPosition.Left() + 1;
+ }
+ }
+ }
if (nPrinted) // wenn nichts, alles grau zeichnen
{
aLocalPageSize = pPrintFunc->GetPageSize();
aLocalPageSize.Width() = (long) (aLocalPageSize.Width() * HMM_PER_TWIPS );
aLocalPageSize.Height() = (long) (aLocalPageSize.Height() * HMM_PER_TWIPS );
+
+ nLeftMargin = (long) ( nLeftMargin * HMM_PER_TWIPS );
+ nRightMargin = (long) ( nRightMargin * HMM_PER_TWIPS );
+ nTopMargin = (long) ( nTopMargin * HMM_PER_TWIPS );
+ nBottomMargin = (long) ( nBottomMargin * HMM_PER_TWIPS );
+ nHeaderHeight = (long) ( nHeaderHeight * HMM_PER_TWIPS * mnScale / 100 + nTopMargin );
+ nFooterHeight = (long) ( nFooterHeight * HMM_PER_TWIPS * mnScale / 100 + nBottomMargin );
}
if (!bStateValid)
@@ -425,8 +487,39 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
Point aWinEnd( aWinSize.Width(), aWinSize.Height() );
sal_Bool bRight = nPageEndX <= aWinEnd.X();
sal_Bool bBottom = nPageEndY <= aWinEnd.Y();
+
+ if( bPageMargin && bValidPage )
+ {
+ SetMapMode(aMMMode);
+ SetLineColor( COL_BLACK );
+ DrawInvert( (long)( nTopMargin - aOffset.Y() ), POINTER_VSIZEBAR );
+ DrawInvert( (long)(nPageEndY - nBottomMargin ), POINTER_VSIZEBAR );
+ DrawInvert( (long)( nLeftMargin - aOffset.X() ), POINTER_HSIZEBAR );
+ DrawInvert( (long)( nPageEndX - nRightMargin ) , POINTER_HSIZEBAR );
+ if( bHeaderOn )
+ {
+ DrawInvert( nHeaderHeight - aOffset.Y(), POINTER_VSIZEBAR );
+ }
+ if( bFooterOn )
+ {
+ DrawInvert( nPageEndY - nFooterHeight, POINTER_VSIZEBAR );
+ }
+
+ SetMapMode( MapMode( MAP_PIXEL ) );
+ for( int i= aPageArea.aStart.Col(); i<= aPageArea.aEnd.Col(); i++ )
+ {
+ Point aColumnTop = LogicToPixel( Point( 0, -aOffset.Y() ) ,aMMMode );
+ SetLineColor( COL_BLACK );
+ SetFillColor( COL_BLACK );
+ DrawRect( Rectangle( Point( nRight[i] - 2, aColumnTop.Y() ),Point( nRight[i] + 2 , 4 + aColumnTop.Y()) ));
+ DrawLine( Point( nRight[i], aColumnTop.Y() ), Point( nRight[i], 10 + aColumnTop.Y()) );
+ }
+ SetMapMode( aMMMode );
+ }
+
if (bRight || bBottom)
{
+ SetMapMode(aMMMode);
SetLineColor();
SetFillColor(aBackColor);
if (bRight)
@@ -482,189 +575,15 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
//Issue51656 Add resizeable margin on page preview from maoyg
void __EXPORT ScPreview::Paint( const Rectangle& /* rRect */ )
{
- if (!bValid)
- {
- CalcPages(0);
- RecalcPages();
- UpdateDrawView(); // Table possibly amended
- }
-
- Fraction aPreviewZoom( nZoom, 100 );
- Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
- MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
-
- ScModule* pScMod = SC_MOD();
- const svtools::ColorConfig& rColorCfg = pScMod->GetColorConfig();
- Color aBackColor( rColorCfg.GetColorValue(svtools::APPBACKGROUND).nColor );
-
- if ( aOffset.X() < 0 || aOffset.Y() < 0 )
- {
- SetMapMode( aMMMode );
- SetLineColor();
- SetFillColor(aBackColor);
+ bool bWasInPaint = bInPaint; // nested calls shouldn't be necessary, but allow for now
+ bInPaint = true;
- Size aWinSize = GetOutputSize();
- if ( aOffset.X() < 0 )
- DrawRect(Rectangle( 0, 0, -aOffset.X(), aWinSize.Height() ));
- if ( aOffset.Y() < 0 )
- DrawRect(Rectangle( 0, 0, aWinSize.Width(), -aOffset.Y() ));
- }
-
- long nLeftMargin = 0;
- long nRightMargin = 0;
- long nTopMargin = 0;
- long nBottomMargin = 0;
- sal_Bool bHeaderOn = sal_False;
- sal_Bool bFooterOn = sal_False;
-
- ScDocument* pDoc = pDocShell->GetDocument();
- sal_Bool bLayoutRTL = pDoc->IsLayoutRTL( nTab );
-
- Size aPaintPageSize;
- if ( nPageNo < nTotalPages )
- {
- ScPrintOptions aOptions = SC_MOD()->GetPrintOptions();
-
- ScPrintFunc* pPrintFunc;
- if ( bStateValid )
- pPrintFunc = new ScPrintFunc( pDocShell, this, aState, &aOptions );
- else
- pPrintFunc = new ScPrintFunc( pDocShell, this, nTab, nFirstAttr[nTab], nTotalPages, NULL, &aOptions );
-
- pPrintFunc->SetOffset(aOffset);
- pPrintFunc->SetManualZoom(nZoom);
- pPrintFunc->SetDateTime(aDate,aTime);
- pPrintFunc->SetClearFlag(sal_True);
- pPrintFunc->SetUseStyleColor( pScMod->GetAccessOptions().GetIsForPagePreviews() );
- pPrintFunc->SetDrawView( pDrawView );
-
- // Multi Selection for one side must be something umstaendlich generated ...
- Range aPageRange( nPageNo+1, nPageNo+1 );
- MultiSelection aPage( aPageRange );
- aPage.SetTotalRange( Range(0,RANGE_MAX) );
- aPage.Select( aPageRange );
-
- long nPrinted = pPrintFunc->DoPrint( aPage, nTabStart, nDisplayStart );
- DBG_ASSERT(nPrinted<=1, "was'n nu los?");
-
- SetMapMode(aMMMode);
-
- //init nLeftMargin ... in the ScPrintFunc::InitParam!!!
- nLeftMargin = pPrintFunc->GetLeftMargin();
- nRightMargin = pPrintFunc->GetRightMargin();
- nTopMargin = pPrintFunc->GetTopMargin();
- nBottomMargin = pPrintFunc->GetBottomMargin();
- nHeaderHeight = pPrintFunc->GetHeader().nHeight;
- nFooterHeight = pPrintFunc->GetFooter().nHeight;
- bHeaderOn = pPrintFunc->GetHeader().bEnable;
- bFooterOn = pPrintFunc->GetFooter().bEnable;
- mnScale = pPrintFunc->GetZoom();
-
- Rectangle aPixRect;
- Rectangle aRectCellPosition;
- Rectangle aRectPosition;
- GetLocationData().GetMainCellRange( aPageArea, aPixRect );
- if( !bLayoutRTL )
- {
- GetLocationData().GetCellPosition( aPageArea.aStart, aRectPosition );
- nLeftPosition = aRectPosition.Left();
- for( SCCOL i = aPageArea.aStart.Col(); i <= aPageArea.aEnd.Col(); i++ )
- {
- GetLocationData().GetCellPosition( ScAddress( i,aPageArea.aStart.Row(),aPageArea.aStart.Tab()),aRectCellPosition );
- nRight[i] = aRectCellPosition.Right();
- }
- }
- else
- {
- GetLocationData().GetCellPosition( aPageArea.aEnd, aRectPosition );
- nLeftPosition = aRectPosition.Right()+1;
-
- GetLocationData().GetCellPosition( aPageArea.aStart,aRectCellPosition );
- nRight[ aPageArea.aEnd.Col() ] = aRectCellPosition.Left();
- for( SCCOL i = aPageArea.aEnd.Col(); i > aPageArea.aStart.Col(); i-- )
- {
- GetLocationData().GetCellPosition( ScAddress( i,aPageArea.aEnd.Row(),aPageArea.aEnd.Tab()),aRectCellPosition );
- nRight[ i-1 ] = nRight[ i ] + aRectCellPosition.Right() - aRectCellPosition.Left() + 1;
- }
- }
-
- if ( nPrinted ) // If nothing, all gray draw
- {
- aPaintPageSize = pPrintFunc->GetPageSize();
- aPaintPageSize.Width() = (long) (aPaintPageSize.Width() * HMM_PER_TWIPS );
- aPaintPageSize.Height() = (long) (aPaintPageSize.Height() * HMM_PER_TWIPS );
-
- nLeftMargin = (long) ( nLeftMargin * HMM_PER_TWIPS );
- nRightMargin = (long) ( nRightMargin * HMM_PER_TWIPS );
- nTopMargin = (long) ( nTopMargin * HMM_PER_TWIPS );
- nBottomMargin = (long) ( nBottomMargin * HMM_PER_TWIPS );
- nHeaderHeight = (long) ( nHeaderHeight * HMM_PER_TWIPS * mnScale / 100 + nTopMargin );
- nFooterHeight = (long) ( nFooterHeight * HMM_PER_TWIPS * mnScale / 100 + nBottomMargin );
- }
-
- if ( !bStateValid )
- {
- pPrintFunc->GetPrintState( aState );
- aState.nDocPages = nTotalPages;
- bStateValid = sal_True;
- }
-
- delete pPrintFunc;
- }
-
-
- long nPageEndX = aPaintPageSize.Width() - aOffset.X();
- long nPageEndY = aPaintPageSize.Height() - aOffset.Y();
- Size aWinSize = GetOutputSize();
- Point aWinEnd( aWinSize.Width(), aWinSize.Height() );
- sal_Bool bRight = nPageEndX <= aWinEnd.X();
- sal_Bool bBottom = nPageEndY <= aWinEnd.Y();
-
- if( bPageMargin )
- {
- SetMapMode(aMMMode);
- SetLineColor( COL_BLACK );
- DrawInvert( (long)( nTopMargin - aOffset.Y() ), POINTER_VSIZEBAR );
- DrawInvert( (long)(nPageEndY - nBottomMargin ), POINTER_VSIZEBAR );
- DrawInvert( (long)( nLeftMargin - aOffset.X() ), POINTER_HSIZEBAR );
- DrawInvert( (long)( nPageEndX - nRightMargin ) , POINTER_HSIZEBAR );
- if( bHeaderOn )
- {
- DrawInvert( nHeaderHeight - aOffset.Y(), POINTER_VSIZEBAR );
- }
- if( bFooterOn )
- {
- DrawInvert( nPageEndY - nFooterHeight, POINTER_VSIZEBAR );
- }
-
- SetMapMode( MapMode( MAP_PIXEL ) );
- for( int i= aPageArea.aStart.Col(); i<= aPageArea.aEnd.Col(); i++ )
- {
- Point aColumnTop = LogicToPixel( Point( 0, -aOffset.Y() ) ,aMMMode );
- SetLineColor( COL_BLACK );
- SetFillColor( COL_BLACK );
- DrawRect( Rectangle( Point( nRight[i] - 2, aColumnTop.Y() ),Point( nRight[i] + 2 , 4 + aColumnTop.Y()) ));
- DrawLine( Point( nRight[i], aColumnTop.Y() ), Point( nRight[i], 10 + aColumnTop.Y()) );
- }
- SetMapMode( aMMMode );
- }
-
- if (bRight || bBottom)
- {
- SetMapMode(aMMMode);
- SetLineColor();
- SetFillColor(aBackColor);
- if (bRight)
- DrawRect(Rectangle(nPageEndX,0, aWinEnd.X(),aWinEnd.Y()));
- if (bBottom)
- {
- if (bRight)
- DrawRect(Rectangle(0,nPageEndY, nPageEndX,aWinEnd.Y())); // Ecke nicht doppelt
- else
- DrawRect(Rectangle(0,nPageEndY, aWinEnd.X(),aWinEnd.Y()));
- }
- }
+ if (bPageMargin)
+ GetLocationData(); // fill location data for column positions
+ DoPrint( NULL );
pViewShell->UpdateScrollBars();
+
+ bInPaint = bWasInPaint;
}
//Issue51656 Add resizeable margin on page preview from maoyg
@@ -783,9 +702,9 @@ void ScPreview::SetZoom(sal_uInt16 nNewZoom)
MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
SetMapMode( aMMMode );
- bInPaint = sal_True; // don't scroll during SetYOffset in UpdateScrollBars
+ bInSetZoom = true; // don't scroll during SetYOffset in UpdateScrollBars
pViewShell->UpdateScrollBars();
- bInPaint = sal_False;
+ bInSetZoom = false;
bStateValid = sal_False;
InvalidateLocationData( SC_HINT_ACC_VISAREACHANGED );
@@ -892,7 +811,7 @@ void ScPreview::SetXOffset( long nX )
{
long nDif = LogicToPixel(aOffset).X() - LogicToPixel(Point(nX,0)).X();
aOffset.X() = nX;
- if (nDif && !bInPaint)
+ if (nDif && !bInSetZoom)
{
MapMode aOldMode = GetMapMode(); SetMapMode(MAP_PIXEL);
Scroll( nDif, 0 );
@@ -902,7 +821,7 @@ void ScPreview::SetXOffset( long nX )
else
{
aOffset.X() = nX;
- if (!bInPaint)
+ if (!bInSetZoom)
Invalidate();
}
InvalidateLocationData( SC_HINT_ACC_VISAREACHANGED );
@@ -919,7 +838,7 @@ void ScPreview::SetYOffset( long nY )
{
long nDif = LogicToPixel(aOffset).Y() - LogicToPixel(Point(0,nY)).Y();
aOffset.Y() = nY;
- if (nDif && !bInPaint)
+ if (nDif && !bInSetZoom)
{
MapMode aOldMode = GetMapMode(); SetMapMode(MAP_PIXEL);
Scroll( 0, nDif );
@@ -929,7 +848,7 @@ void ScPreview::SetYOffset( long nY )
else
{
aOffset.Y() = nY;
- if (!bInPaint)
+ if (!bInSetZoom)
Invalidate();
}
InvalidateLocationData( SC_HINT_ACC_VISAREACHANGED );
@@ -993,15 +912,20 @@ void ScPreview::DataChanged( const DataChangedEvent& rDCEvt )
if ( rDCEvt.GetType() == DATACHANGED_FONTS )
pDocShell->UpdateFontList();
- if ( rDCEvt.GetType() == DATACHANGED_SETTINGS &&
- (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ // #i114518# Paint of form controls may modify the window's settings.
+ // Ignore the event if it is called from within Paint.
+ if ( !bInPaint )
{
- // scroll bar size may have changed
- pViewShell->InvalidateBorder(); // calls OuterResizePixel
- }
+ if ( rDCEvt.GetType() == DATACHANGED_SETTINGS &&
+ (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ {
+ // scroll bar size may have changed
+ pViewShell->InvalidateBorder(); // calls OuterResizePixel
+ }
- Invalidate();
- InvalidateLocationData( SC_HINT_DATACHANGED );
+ Invalidate();
+ InvalidateLocationData( SC_HINT_DATACHANGED );
+ }
}
}
@@ -1144,6 +1068,7 @@ void __EXPORT ScPreview::MouseButtonUp( const MouseEvent& rMEvt )
}
if( bMoveRulerAction )
{
+ ScDocShellModificator aModificator( *pDocShell );
if( bLeftRulerChange && bLeftRulerMove )
{
aLRItem.SetLeft( (long)( aButtonUpPt.X() / HMM_PER_TWIPS + aOffset.X() / HMM_PER_TWIPS ));
@@ -1166,12 +1091,13 @@ void __EXPORT ScPreview::MouseButtonUp( const MouseEvent& rMEvt )
if ( ValidTab( nTab ) )
{
- ScPrintFunc aPrintFunc( pDocShell, this, nTab );
+ ScPrintFunc aPrintFunc( this, pDocShell, nTab );
aPrintFunc.UpdatePages();
}
Rectangle aRect(0,0,10000,10000);
Paint( aRect );
+ aModificator.SetDocumentModified();
bLeftRulerChange = sal_False;
bRightRulerChange = sal_False;
}
@@ -1204,6 +1130,7 @@ void __EXPORT ScPreview::MouseButtonUp( const MouseEvent& rMEvt )
DBG_ASSERT( pStyleSheet, "PageStyle not found" );
if ( pStyleSheet )
{
+ ScDocShellModificator aModificator( *pDocShell );
ScStyleSaveData aOldData;
if( bUndo )
aOldData.InitFromStyle( pStyleSheet );
@@ -1262,12 +1189,13 @@ void __EXPORT ScPreview::MouseButtonUp( const MouseEvent& rMEvt )
if ( ValidTab( nTab ) )
{
- ScPrintFunc aPrintFunc( pDocShell, this, nTab );
+ ScPrintFunc aPrintFunc( this, pDocShell, nTab );
aPrintFunc.UpdatePages();
}
Rectangle aRect(0,0,10000,10000);
Paint( aRect );
+ aModificator.SetDocumentModified();
bTopRulerChange = sal_False;
bBottomRulerChange = sal_False;
bHeaderRulerChange = sal_False;
@@ -1318,7 +1246,7 @@ void __EXPORT ScPreview::MouseButtonUp( const MouseEvent& rMEvt )
}
if ( ValidTab( nTab ) )
{
- ScPrintFunc aPrintFunc( pDocShell, this, nTab );
+ ScPrintFunc aPrintFunc( this, pDocShell, nTab );
aPrintFunc.UpdatePages();
}
Rectangle nRect(0,0,10000,10000);
@@ -1352,9 +1280,9 @@ void __EXPORT ScPreview::MouseMove( const MouseEvent& rMEvt )
ScPrintFunc* pPrintFunc;
if (bStateValid)
- pPrintFunc = new ScPrintFunc( pDocShell, this, aState, &aOptions );
+ pPrintFunc = new ScPrintFunc( this, pDocShell, aState, &aOptions );
else
- pPrintFunc = new ScPrintFunc( pDocShell, this, nTab, nFirstAttr[nTab], nTotalPages, NULL, &aOptions );
+ pPrintFunc = new ScPrintFunc( this, pDocShell, nTab, nFirstAttr[nTab], nTotalPages, NULL, &aOptions );
nLeftMargin = (long)( pPrintFunc->GetLeftMargin() * HMM_PER_TWIPS - aOffset.X() );
nRightMargin = (long)( pPrintFunc->GetRightMargin() * HMM_PER_TWIPS );
diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx
index c7cc92246536..2c4a5f855112 100644
--- a/sc/source/ui/view/printfun.cxx
+++ b/sc/source/ui/view/printfun.cxx
@@ -52,7 +52,6 @@
#include <editeng/ulspitem.hxx>
#include <sfx2/app.hxx>
#include <sfx2/printer.hxx>
-#include <sfx2/progress.hxx>
#include <tools/multisel.hxx>
#include <sfx2/docfile.hxx>
#include <tools/urlobj.hxx>
@@ -304,54 +303,6 @@ ScPrintFunc::ScPrintFunc( OutputDevice* pOutDev, ScDocShell* pShell,
Construct( pOptions );
}
-ScPrintFunc::ScPrintFunc( ScDocShell* pShell, Window* pWindow, SCTAB nTab,
- long nPage, long nDocP, const ScRange* pArea,
- const ScPrintOptions* pOptions )
- : pDocShell ( pShell ),
- pPrinter ( NULL ),
- pDrawView ( NULL ),
- nPrintTab ( nTab ),
- nPageStart ( nPage ),
- nDocPages ( nDocP ),
- pUserArea ( pArea ),
- bState ( sal_False ),
- bPrintCurrentTable ( sal_False ),
- bMultiArea ( sal_False ),
- nTabPages ( 0 ),
- nTotalPages ( 0 ),
- pPageData ( NULL )
-{
- pDev = pWindow;
- Construct( pOptions );
-}
-ScPrintFunc::ScPrintFunc( ScDocShell* pShell, Window* pWindow,
- const ScPrintState& rState, const ScPrintOptions* pOptions )
- : pDocShell ( pShell ),
- pPrinter ( NULL ),
- pDrawView ( NULL ),
- pUserArea ( NULL ),
- bPrintCurrentTable ( sal_False ),
- bMultiArea ( sal_False ),
- pPageData ( NULL )
-{
- pDev = pWindow;
-
- nPrintTab = rState.nPrintTab;
- nStartCol = rState.nStartCol;
- nStartRow = rState.nStartRow;
- nEndCol = rState.nEndCol;
- nEndRow = rState.nEndRow;
- nZoom = rState.nZoom;
- nPagesX = rState.nPagesX;
- nPagesY = rState.nPagesY;
- nTabPages = rState.nTabPages;
- nTotalPages = rState.nTotalPages;
- nPageStart = rState.nPageStart;
- nDocPages = rState.nDocPages;
- bState = sal_True;
-
- Construct( pOptions );
-}
void ScPrintFunc::GetPrintState( ScPrintState& rState )
{
@@ -1768,6 +1719,7 @@ void ScPrintFunc::MakeEditEngine()
pEditEngine->SetWordDelimiters(
ScEditUtil::ModifyDelimiters( pEditEngine->GetWordDelimiters() ) );
pEditEngine->SetControlWord( pEditEngine->GetControlWord() & ~EE_CNTRL_RTFSTYLESHEETS );
+ pDoc->ApplyAsianEditSettings( *pEditEngine );
pEditEngine->EnableAutoColor( bUseStyleColor );
// Default-Set fuer Ausrichtung
@@ -2460,9 +2412,8 @@ void ScPrintFunc::SetExclusivelyDrawOleAndDrawObjects()
aTableParam.bNotes = false;
aTableParam.bGrid = false;
aTableParam.bHeaders = false;
- aTableParam.bFormulas = false;;
- aTableParam.bNullVals = false;;
- aTableParam.bNullVals = false;;
+ aTableParam.bFormulas = false;
+ aTableParam.bNullVals = false;
}
//
@@ -2715,7 +2666,7 @@ void ScPrintFunc::ApplyPrintSettings()
long ScPrintFunc::DoPrint( const MultiSelection& rPageRanges,
long nStartPage, long nDisplayStart, sal_Bool bDoPrint,
- SfxProgress* pProgress, ScPreviewLocationData* pLocationData )
+ ScPreviewLocationData* pLocationData )
{
DBG_ASSERT(pDev,"Device == NULL");
if (!pParamSet)
@@ -2735,9 +2686,6 @@ long ScPrintFunc::DoPrint( const MultiSelection& rPageRanges,
MakeTableString();
- if ( pProgress )
- pProgress->SetText( String( ScResId( SCSTR_STAT_PRINT ) ) );
-
//--------------------------------------------------------------------
long nPageNo = 0;
@@ -2778,12 +2726,6 @@ long ScPrintFunc::DoPrint( const MultiSelection& rPageRanges,
{
PrintPage( nPageNo+nDisplayStart, nX1, nY1, nX2, nY2,
bDoPrint, pLocationData );
-
- if ( pProgress )
- {
- pProgress->SetState( nPageNo+nStartPage+1, nEndPage );
- pProgress->Reschedule(); //Mag der Anwender noch oder hat er genug?
- }
++nPrinted;
}
++nPageNo;
@@ -2808,12 +2750,6 @@ long ScPrintFunc::DoPrint( const MultiSelection& rPageRanges,
{
PrintPage( nPageNo+nDisplayStart, nX1, nY1, nX2, nY2,
bDoPrint, pLocationData );
-
- if ( pProgress )
- {
- pProgress->SetState( nPageNo+nStartPage+1, nEndPage );
- pProgress->Reschedule(); //Mag der Anwender noch oder hat er genug?
- }
++nPrinted;
}
++nPageNo;
@@ -2838,11 +2774,6 @@ long ScPrintFunc::DoPrint( const MultiSelection& rPageRanges,
if ( nNoteAdd )
{
nNoteNr += nNoteAdd;
- if ( pProgress && bPageSelected )
- {
- pProgress->SetState( nPageNo+nStartPage+1, nEndPage );
- pProgress->Reschedule(); //Mag der Anwender noch oder hat er genug?
- }
if (bPageSelected)
{
++nPrinted;
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index 3710fca85e33..b93fe814a4a2 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -638,24 +638,15 @@ void ScTabViewShell::DoReadUserData( const String& rData )
//------------------------------------------------------------------
-//UNUSED2008-05 void ScTabViewShell::ExecuteShowNIY( SfxRequest& /* rReq */ )
-//UNUSED2008-05 {
-//UNUSED2008-05 ErrorMessage(STR_BOX_YNI);
-//UNUSED2008-05 }
-//UNUSED2008-05
-//UNUSED2008-05 //------------------------------------------------------------------
-//UNUSED2008-05
-//UNUSED2008-05 void ScTabViewShell::StateDisabled( SfxItemSet& rSet )
-//UNUSED2008-05 {
-//UNUSED2008-05 SfxWhichIter aIter( rSet );
-//UNUSED2008-05 sal_uInt16 nWhich = aIter.FirstWhich();
-//UNUSED2008-05
-//UNUSED2008-05 while ( nWhich )
-//UNUSED2008-05 {
-//UNUSED2008-05 rSet.DisableItem( nWhich );
-//UNUSED2008-05 nWhich = aIter.NextWhich();
-//UNUSED2008-05 }
-//UNUSED2008-05 }
+void ScTabViewShell::UpdateDrawShell()
+{
+ // Called after user interaction that may delete the selected drawing object.
+ // Remove DrawShell if nothing is selected.
+
+ SdrView* pDrView = GetSdrView();
+ if ( pDrView && !pDrView->AreObjectsMarked() && !IsDrawSelMode() )
+ SetDrawShell( sal_False );
+}
void ScTabViewShell::SetDrawShellOrSub()
{
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
index 2001ba165531..944e2b938de2 100644
--- a/sc/source/ui/view/tabvwshb.cxx
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -181,6 +181,8 @@ sal_Bool ScTabViewShell::ActivateObject( SdrOle2Obj* pObj, long nVerb )
bErrorShown = sal_True;
// SfxViewShell::DoVerb zeigt seine Fehlermeldungen selber an
+ SetNewVisArea();
+
// attach listener to selection changes in chart that affect cell
// ranges, so those can be highlighted
// note: do that after DoVerb, so that the chart controller exists
diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx
index 205a0532eb3a..fff42faecb51 100644
--- a/sc/source/ui/view/viewfun5.cxx
+++ b/sc/source/ui/view/viewfun5.cxx
@@ -374,10 +374,15 @@ sal_Bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId,
{
// import of database data into table
- String sDataDesc;
- if ( aDataHelper.GetString( nFormatId, sDataDesc ) )
+ const DataFlavorExVector& rVector = aDataHelper.GetDataFlavorExVector();
+ if ( svx::ODataAccessObjectTransferable::canExtractObjectDescriptor(rVector) )
{
- SfxStringItem aDataDesc(SID_SBA_IMPORT, sDataDesc);
+ // transport the whole ODataAccessDescriptor as slot parameter
+ svx::ODataAccessDescriptor aDesc = svx::ODataAccessObjectTransferable::extractObjectDescriptor(aDataHelper);
+ uno::Any aDescAny;
+ uno::Sequence<beans::PropertyValue> aProperties = aDesc.createPropertyValueSequence();
+ aDescAny <<= aProperties;
+ SfxUsrAnyItem aDataDesc(SID_SBA_IMPORT, aDescAny);
ScDocShell* pDocSh = GetViewData()->GetDocShell();
SCTAB nTab = GetViewData()->GetTabNo();
@@ -401,20 +406,10 @@ sal_Bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId,
sal_Bool bAreaIsNew = !pDBData;
SfxBoolItem aAreaNew(FN_PARAM_2, bAreaIsNew);
- ::svx::ODataAccessDescriptor aDesc;
- DataFlavorExVector& rVector = aDataHelper.GetDataFlavorExVector();
- ::std::auto_ptr<SfxUsrAnyItem> pCursorItem;
- if ( ::svx::ODataAccessObjectTransferable::canExtractObjectDescriptor(rVector) )
- {
- aDesc = ::svx::ODataAccessObjectTransferable::extractObjectDescriptor(aDataHelper);
- if ( aDesc.has(::svx::daCursor) )
- pCursorItem.reset(new SfxUsrAnyItem(FN_PARAM_3, aDesc[::svx::daCursor]));
- }
-
// asynchronous, to avoid doing the whole import in drop handler
SfxDispatcher& rDisp = GetViewData()->GetDispatcher();
rDisp.Execute(SID_SBA_IMPORT, SFX_CALLMODE_ASYNCHRON,
- &aDataDesc, &aTarget, &aAreaNew, pCursorItem.get(), (void*)0 );
+ &aDataDesc, &aTarget, &aAreaNew, (void*)0 );
bRet = sal_True;
}