diff options
Diffstat (limited to 'sc/source/ui/app')
-rw-r--r-- | sc/source/ui/app/inputhdl.cxx | 5 | ||||
-rw-r--r-- | sc/source/ui/app/inputwin.cxx | 175 | ||||
-rw-r--r-- | sc/source/ui/app/scmod.cxx | 20 | ||||
-rw-r--r-- | sc/source/ui/app/transobj.cxx | 20 |
4 files changed, 129 insertions, 91 deletions
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index b1a19832233d..caf2c4a98373 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -1750,6 +1750,11 @@ void ScInputHandler::UpdateActiveView() pTopView = NULL; } +void ScInputHandler::SetInputWindow( ScInputWindow* pNew ) +{ + pInputWin = pNew; +} + void ScInputHandler::StopInputWinEngine( bool bAll ) { if (pInputWin) diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx index f5dd784bc22e..95bd92d64358 100644 --- a/sc/source/ui/app/inputwin.cxx +++ b/sc/source/ui/app/inputwin.cxx @@ -124,7 +124,7 @@ ScInputWindowWrapper::ScInputWindowWrapper( vcl::Window* pParentP, SfxChildWinInfo* /* pInfo */ ) : SfxChildWindow( pParentP, nId ) { - ScInputWindow* pWin=new ScInputWindow( pParentP, pBindings ); + VclPtr<ScInputWindow> pWin=VclPtr<ScInputWindow>::Create( pParentP, pBindings ); pWindow = pWin; pWin->Show(); @@ -154,7 +154,7 @@ static inline bool lcl_isExperimentalMode() // class ScInputWindow -static ScTextWndBase* lcl_chooseRuntimeImpl( vcl::Window* pParent, SfxBindings* pBind ) +static VclPtr<ScTextWndBase> lcl_chooseRuntimeImpl( vcl::Window* pParent, SfxBindings* pBind ) { ScTabViewShell* pViewSh = NULL; SfxDispatcher* pDisp = pBind->GetDispatcher(); @@ -166,16 +166,16 @@ static ScTextWndBase* lcl_chooseRuntimeImpl( vcl::Window* pParent, SfxBindings* } if ( !lcl_isExperimentalMode() ) - return new ScTextWnd( pParent, pViewSh ); - return new ScInputBarGroup( pParent, pViewSh ); + return VclPtr<ScTextWnd>::Create( pParent, pViewSh ); + return VclPtr<ScInputBarGroup>::Create( pParent, pViewSh ); } ScInputWindow::ScInputWindow( vcl::Window* pParent, SfxBindings* pBind ) : // With WB_CLIPCHILDREN otherwise we get flickering ToolBox ( pParent, WinBits(WB_CLIPCHILDREN) ), - aWndPos ( this ), - pRuntimeWindow ( lcl_chooseRuntimeImpl( this, pBind ) ), - aTextWindow ( *pRuntimeWindow ), + aWndPos ( VclPtr<ScPosWnd>::Create(this) ), + pRuntimeWindow ( lcl_chooseRuntimeImpl( this, pBind ) ), + aTextWindow ( *pRuntimeWindow ), pInputHdl ( NULL ), aTextOk ( ScResId( SCSTR_QHELP_BTNOK ) ), // Not always new as a Resource aTextCancel ( ScResId( SCSTR_QHELP_BTNCANCEL ) ), @@ -202,7 +202,7 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, SfxBindings* pBind ) : OSL_ENSURE( pViewSh, "no view shell for input window" ); // Position window, 3 buttons, input window - InsertWindow ( 1, &aWndPos, ToolBoxItemBits::NONE, 0 ); + InsertWindow ( 1, aWndPos.get(), ToolBoxItemBits::NONE, 0 ); InsertSeparator ( 1 ); InsertItem ( SID_INPUT_FUNCTION, IMAGE( SID_INPUT_FUNCTION ), ToolBoxItemBits::NONE, 2 ); InsertItem ( SID_INPUT_SUM, IMAGE( SID_INPUT_SUM ), ToolBoxItemBits::NONE, 3 ); @@ -210,8 +210,8 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, SfxBindings* pBind ) : InsertSeparator ( 5 ); InsertWindow ( 7, &aTextWindow, ToolBoxItemBits::NONE, 6 ); - aWndPos .SetQuickHelpText( ScResId( SCSTR_QHELP_POSWND ) ); - aWndPos .SetHelpId ( HID_INSWIN_POS ); + aWndPos ->SetQuickHelpText( ScResId( SCSTR_QHELP_POSWND ) ); + aWndPos ->SetHelpId ( HID_INSWIN_POS ); aTextWindow.SetQuickHelpText( ScResId( SCSTR_QHELP_INPUTWND ) ); aTextWindow.SetHelpId ( HID_INSWIN_INPUT ); @@ -227,7 +227,7 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, SfxBindings* pBind ) : SetHelpId( HID_SC_INPUTWIN ); // For the whole input row - aWndPos .Show(); + aWndPos ->Show(); aTextWindow.Show(); pInputHdl = SC_MOD()->GetInputHdl( pViewSh, false ); // use own handler even if ref-handler is set @@ -259,6 +259,11 @@ ScInputWindow::ScInputWindow( vcl::Window* pParent, SfxBindings* pBind ) : ScInputWindow::~ScInputWindow() { + disposeOnce(); +} + +void ScInputWindow::dispose() +{ bool bDown = ( ScGlobal::pSysLocale == NULL ); // after Clear? // if any view's input handler has a pointer to this input window, reset it @@ -282,6 +287,11 @@ ScInputWindow::~ScInputWindow() } SfxImageManager::GetImageManager( *SC_MOD() )->ReleaseToolBox( this ); + + pRuntimeWindow.disposeAndClear(); + aWndPos.disposeAndClear(); + + ToolBox::dispose(); } void ScInputWindow::SetInputHandler( ScInputHandler* pNew ) @@ -630,7 +640,7 @@ void ScInputWindow::SetFuncString( const OUString& rString, bool bDoEdit ) void ScInputWindow::SetPosString( const OUString& rStr ) { - aWndPos.SetPos( rStr ); + aWndPos->SetPos( rStr ); } void ScInputWindow::SetTextString( const OUString& rString ) @@ -690,7 +700,7 @@ void ScInputWindow::SetSumAssignMode() void ScInputWindow::SetFormulaMode( bool bSet ) { - aWndPos.SetFormulaMode(bSet); + aWndPos->SetFormulaMode(bSet); aTextWindow.SetFormulaMode(bSet); } @@ -755,7 +765,7 @@ void ScInputWindow::SwitchToTextWin() void ScInputWindow::PosGrabFocus() { - aWndPos.GrabFocus(); + aWndPos->GrabFocus(); } void ScInputWindow::EnableButtons( bool bEnable ) @@ -897,54 +907,62 @@ void ScInputWindow::MouseButtonUp( const MouseEvent& rMEvt ) ScInputBarGroup::ScInputBarGroup(vcl::Window* pParent, ScTabViewShell* pViewSh) : ScTextWndBase ( pParent, WinBits(WB_HIDE | WB_TABSTOP ) ), - aMultiTextWnd ( this, pViewSh ), - aButton ( this, WB_TABSTOP | WB_RECTSTYLE | WB_SMALLSTYLE ), - aScrollBar ( this, WB_TABSTOP | WB_VERT | WB_DRAG ), + aMultiTextWnd ( VclPtr<ScMultiTextWnd>::Create(this, pViewSh) ), + aButton ( VclPtr<ImageButton>::Create(this, WB_TABSTOP | WB_RECTSTYLE | WB_SMALLSTYLE) ), + aScrollBar ( VclPtr<ScrollBar>::Create(this, WB_TABSTOP | WB_VERT | WB_DRAG) ), nVertOffset ( 0 ) { - aMultiTextWnd.Show(); - aMultiTextWnd.SetQuickHelpText( ScResId( SCSTR_QHELP_INPUTWND ) ); - aMultiTextWnd.SetHelpId( HID_INSWIN_INPUT ); + aMultiTextWnd->Show(); + aMultiTextWnd->SetQuickHelpText( ScResId( SCSTR_QHELP_INPUTWND ) ); + aMultiTextWnd->SetHelpId( HID_INSWIN_INPUT ); - Size aSize( GetSettings().GetStyleSettings().GetScrollBarSize(), aMultiTextWnd.GetPixelHeightForLines(1) ); + Size aSize( GetSettings().GetStyleSettings().GetScrollBarSize(), aMultiTextWnd->GetPixelHeightForLines(1) ); - aButton.SetClickHdl( LINK( this, ScInputBarGroup, ClickHdl ) ); - aButton.SetSizePixel( aSize ); - aButton.Enable(); - aButton.SetSymbol( SymbolType::SPIN_DOWN ); - aButton.SetQuickHelpText( ScResId( SCSTR_QHELP_EXPAND_FORMULA ) ); - aButton.Show(); + aButton->SetClickHdl( LINK( this, ScInputBarGroup, ClickHdl ) ); + aButton->SetSizePixel( aSize ); + aButton->Enable(); + aButton->SetSymbol( SymbolType::SPIN_DOWN ); + aButton->SetQuickHelpText( ScResId( SCSTR_QHELP_EXPAND_FORMULA ) ); + aButton->Show(); - aScrollBar.SetSizePixel( aSize ); - aScrollBar.SetScrollHdl( LINK( this, ScInputBarGroup, Impl_ScrollHdl ) ); + aScrollBar->SetSizePixel( aSize ); + aScrollBar->SetScrollHdl( LINK( this, ScInputBarGroup, Impl_ScrollHdl ) ); } ScInputBarGroup::~ScInputBarGroup() { + disposeOnce(); +} +void ScInputBarGroup::dispose() +{ + aMultiTextWnd.disposeAndClear(); + aButton.disposeAndClear(); + aScrollBar.disposeAndClear(); + ScTextWndBase::dispose(); } void ScInputBarGroup::InsertAccessibleTextData( ScAccessibleEditLineTextData& rTextData ) { - aMultiTextWnd.InsertAccessibleTextData( rTextData ); + aMultiTextWnd->InsertAccessibleTextData( rTextData ); } void ScInputBarGroup::RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData ) { - aMultiTextWnd.RemoveAccessibleTextData( rTextData ); + aMultiTextWnd->RemoveAccessibleTextData( rTextData ); } const OUString& ScInputBarGroup::GetTextString() const { - return aMultiTextWnd.GetTextString(); + return aMultiTextWnd->GetTextString(); } void ScInputBarGroup::SetTextString( const OUString& rString ) { - aMultiTextWnd.SetTextString(rString); + aMultiTextWnd->SetTextString(rString); } void ScInputBarGroup::Resize() @@ -965,89 +983,89 @@ void ScInputBarGroup::Resize() Size aSize = GetSizePixel(); aSize.Width() = std::max( ((long)(nWidth - nLeft - LEFT_OFFSET)), (long)0 ); - aScrollBar.SetPosPixel(Point( aSize.Width() - aButton.GetSizePixel().Width(), aButton.GetSizePixel().Height() ) ); + aScrollBar->SetPosPixel(Point( aSize.Width() - aButton->GetSizePixel().Width(), aButton->GetSizePixel().Height() ) ); Size aTmpSize( aSize ); - aTmpSize.Width() = aTmpSize.Width() - aButton.GetSizePixel().Width() - BUTTON_OFFSET; - aMultiTextWnd.SetSizePixel(aTmpSize); + aTmpSize.Width() = aTmpSize.Width() - aButton->GetSizePixel().Width() - BUTTON_OFFSET; + aMultiTextWnd->SetSizePixel(aTmpSize); - aMultiTextWnd.Resize(); + aMultiTextWnd->Resize(); - aSize.Height() = aMultiTextWnd.GetSizePixel().Height(); + aSize.Height() = aMultiTextWnd->GetSizePixel().Height(); SetSizePixel(aSize); - if( aMultiTextWnd.GetNumLines() > 1 ) + if( aMultiTextWnd->GetNumLines() > 1 ) { - aButton.SetSymbol( SymbolType::SPIN_UP ); - aButton.SetQuickHelpText( ScResId( SCSTR_QHELP_COLLAPSE_FORMULA ) ); - Size scrollSize = aButton.GetSizePixel(); - scrollSize.Height() = aMultiTextWnd.GetSizePixel().Height() - aButton.GetSizePixel().Height(); - aScrollBar.SetSizePixel( scrollSize ); + aButton->SetSymbol( SymbolType::SPIN_UP ); + aButton->SetQuickHelpText( ScResId( SCSTR_QHELP_COLLAPSE_FORMULA ) ); + Size scrollSize = aButton->GetSizePixel(); + scrollSize.Height() = aMultiTextWnd->GetSizePixel().Height() - aButton->GetSizePixel().Height(); + aScrollBar->SetSizePixel( scrollSize ); - Size aOutSz = aMultiTextWnd.GetOutputSize(); + Size aOutSz = aMultiTextWnd->GetOutputSize(); - aScrollBar.SetVisibleSize( aOutSz.Height() ); - aScrollBar.SetPageSize( aOutSz.Height() ); - aScrollBar.SetLineSize( aMultiTextWnd.GetTextHeight() ); - aScrollBar.SetRange( Range( 0, aMultiTextWnd.GetEditEngTxtHeight() ) ); + aScrollBar->SetVisibleSize( aOutSz.Height() ); + aScrollBar->SetPageSize( aOutSz.Height() ); + aScrollBar->SetLineSize( aMultiTextWnd->GetTextHeight() ); + aScrollBar->SetRange( Range( 0, aMultiTextWnd->GetEditEngTxtHeight() ) ); - aScrollBar.Resize(); - aScrollBar.Show(); + aScrollBar->Resize(); + aScrollBar->Show(); } else { - aButton.SetSymbol( SymbolType::SPIN_DOWN ); - aButton.SetQuickHelpText( ScResId( SCSTR_QHELP_EXPAND_FORMULA ) ); - aScrollBar.Hide(); + aButton->SetSymbol( SymbolType::SPIN_DOWN ); + aButton->SetQuickHelpText( ScResId( SCSTR_QHELP_EXPAND_FORMULA ) ); + aScrollBar->Hide(); } - aButton.SetPosPixel(Point(aSize.Width() - aButton.GetSizePixel().Width(), 0)); + aButton->SetPosPixel(Point(aSize.Width() - aButton->GetSizePixel().Width(), 0)); Invalidate(); } void ScInputBarGroup::StopEditEngine( bool bAll ) { - aMultiTextWnd.StopEditEngine( bAll ); + aMultiTextWnd->StopEditEngine( bAll ); } void ScInputBarGroup::StartEditEngine() { - aMultiTextWnd.StartEditEngine(); + aMultiTextWnd->StartEditEngine(); } void ScInputBarGroup::MakeDialogEditView() { - aMultiTextWnd.MakeDialogEditView(); + aMultiTextWnd->MakeDialogEditView(); } EditView* ScInputBarGroup::GetEditView() { - return aMultiTextWnd.GetEditView(); + return aMultiTextWnd->GetEditView(); } bool ScInputBarGroup::IsInputActive() { - return aMultiTextWnd.IsInputActive(); + return aMultiTextWnd->IsInputActive(); } void ScInputBarGroup::SetFormulaMode(bool bSet) { - aMultiTextWnd.SetFormulaMode(bSet); + aMultiTextWnd->SetFormulaMode(bSet); } void ScInputBarGroup::IncrementVerticalSize() { - aMultiTextWnd.SetNumLines( aMultiTextWnd.GetNumLines() + 1 ); + aMultiTextWnd->SetNumLines( aMultiTextWnd->GetNumLines() + 1 ); TriggerToolboxLayout(); } void ScInputBarGroup::DecrementVerticalSize() { - if ( aMultiTextWnd.GetNumLines() > 1 ) + if ( aMultiTextWnd->GetNumLines() > 1 ) { - aMultiTextWnd.SetNumLines( aMultiTextWnd.GetNumLines() - 1 ); + aMultiTextWnd->SetNumLines( aMultiTextWnd->GetNumLines() - 1 ); TriggerToolboxLayout(); } } @@ -1063,19 +1081,19 @@ IMPL_LINK_NOARG(ScInputBarGroup, ClickHdl) OSL_FAIL("The parent window pointer pParent is null"); return 1; } - if( aMultiTextWnd.GetNumLines() > 1 ) + if( aMultiTextWnd->GetNumLines() > 1 ) { - aMultiTextWnd.SetNumLines( 1 ); + aMultiTextWnd->SetNumLines( 1 ); } else { - aMultiTextWnd.SetNumLines( aMultiTextWnd.GetLastNumExpandedLines() ); + aMultiTextWnd->SetNumLines( aMultiTextWnd->GetLastNumExpandedLines() ); } TriggerToolboxLayout(); // Restore focus to input line(s) if necessary if ( SC_MOD()->GetInputHdl()->IsTopMode() ) - aMultiTextWnd.GrabFocus(); + aMultiTextWnd->GrabFocus(); return 0; } @@ -1104,7 +1122,7 @@ void ScInputBarGroup::TriggerToolboxLayout() if ( xLayoutManager.is() ) { - if ( aMultiTextWnd.GetNumLines() > 1) + if ( aMultiTextWnd->GetNumLines() > 1) rParent.SetToolbarLayoutMode( TBX_LAYOUT_LOCKVERT ); else rParent.SetToolbarLayoutMode( TBX_LAYOUT_NORMAL ); @@ -1132,13 +1150,13 @@ void ScInputBarGroup::TriggerToolboxLayout() IMPL_LINK_NOARG(ScInputBarGroup, Impl_ScrollHdl) { - aMultiTextWnd.DoScroll(); + aMultiTextWnd->DoScroll(); return 0; } void ScInputBarGroup::TextGrabFocus() { - aMultiTextWnd.TextGrabFocus(); + aMultiTextWnd->TextGrabFocus(); } ScMultiTextWnd::ScMultiTextWnd( ScInputBarGroup* pParen, ScTabViewShell* pViewSh ) @@ -1480,11 +1498,20 @@ ScTextWnd::ScTextWnd( vcl::Window* pParent, ScTabViewShell* pViewSh ) ScTextWnd::~ScTextWnd() { + disposeOnce(); +} + +void ScTextWnd::dispose() +{ while (!maAccTextDatas.empty()) { maAccTextDatas.back()->Dispose(); } delete pEditView; + pEditView = NULL; delete pEditEngine; + pEditEngine = NULL; + + ScTextWndBase::dispose(); } void ScTextWnd::Paint( const Rectangle& rRect ) @@ -2068,11 +2095,17 @@ ScPosWnd::ScPosWnd( vcl::Window* pParent ) : ScPosWnd::~ScPosWnd() { + disposeOnce(); +} + +void ScPosWnd::dispose() +{ EndListening( *SfxGetpApp() ); HideTip(); delete pAccel; + ComboBox::dispose(); } void ScPosWnd::SetFormulaMode( bool bSet ) diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index 2115fec08daf..116aada89a07 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -2094,9 +2094,9 @@ void ScModule::ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet ) } } -SfxTabPage* ScModule::CreateTabPage( sal_uInt16 nId, vcl::Window* pParent, const SfxItemSet& rSet ) +VclPtr<SfxTabPage> ScModule::CreateTabPage( sal_uInt16 nId, vcl::Window* pParent, const SfxItemSet& rSet ) { - SfxTabPage* pRet = NULL; + VclPtr<SfxTabPage> pRet; ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "ScAbstractFactory create fail!"); switch(nId) @@ -2105,7 +2105,7 @@ SfxTabPage* ScModule::CreateTabPage( sal_uInt16 nId, vcl::Window* pParent, cons { ::CreateTabPage ScTpLayoutOptionsCreate = pFact->GetTabPageCreatorFunc( RID_SCPAGE_LAYOUT ); if ( ScTpLayoutOptionsCreate ) - pRet = (*ScTpLayoutOptionsCreate) (pParent, &rSet); + pRet = (*ScTpLayoutOptionsCreate) (pParent, &rSet); } break; case SID_SC_TP_CONTENT: @@ -2218,7 +2218,7 @@ IMPL_LINK( ScModule, CalcFieldValueHdl, EditFieldInfo*, pInfo ) bool ScModule::RegisterRefWindow( sal_uInt16 nSlotId, vcl::Window *pWnd ) { - std::list<vcl::Window*> & rlRefWindow = m_mapRefWindow[nSlotId]; + std::list<VclPtr<vcl::Window> > & rlRefWindow = m_mapRefWindow[nSlotId]; if( std::find( rlRefWindow.begin(), rlRefWindow.end(), pWnd ) == rlRefWindow.end() ) { @@ -2231,14 +2231,14 @@ bool ScModule::RegisterRefWindow( sal_uInt16 nSlotId, vcl::Window *pWnd ) bool ScModule::UnregisterRefWindow( sal_uInt16 nSlotId, vcl::Window *pWnd ) { - std::map<sal_uInt16, std::list<vcl::Window*> >::iterator iSlot = m_mapRefWindow.find( nSlotId ); + auto iSlot = m_mapRefWindow.find( nSlotId ); if( iSlot == m_mapRefWindow.end() ) return false; - std::list<vcl::Window*> & rlRefWindow = iSlot->second; + std::list<VclPtr<vcl::Window> > & rlRefWindow = iSlot->second; - std::list<vcl::Window*>::iterator i = std::find( rlRefWindow.begin(), rlRefWindow.end(), pWnd ); + auto i = std::find( rlRefWindow.begin(), rlRefWindow.end(), pWnd ); if( i == rlRefWindow.end() ) return false; @@ -2256,16 +2256,16 @@ vcl::Window * ScModule::Find1RefWindow( sal_uInt16 nSlotId, vcl::Window *pWndAn if (!pWndAncestor) return NULL; - std::map<sal_uInt16, std::list<vcl::Window*> >::iterator iSlot = m_mapRefWindow.find( nSlotId ); + auto iSlot = m_mapRefWindow.find( nSlotId ); if( iSlot == m_mapRefWindow.end() ) return NULL; - std::list<vcl::Window*> & rlRefWindow = iSlot->second; + std::list<VclPtr<vcl::Window> > & rlRefWindow = iSlot->second; while( vcl::Window *pParent = pWndAncestor->GetParent() ) pWndAncestor = pParent; - for( std::list<vcl::Window*>::iterator i = rlRefWindow.begin(); i!=rlRefWindow.end(); ++i ) + for( auto i = rlRefWindow.begin(); i!=rlRefWindow.end(); ++i ) if ( pWndAncestor->IsWindowOrChild( *i, (*i)->IsSystemWindow() ) ) return *i; diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx index 759b737918c7..815c10206486 100644 --- a/sc/source/ui/app/transobj.cxx +++ b/sc/source/ui/app/transobj.cxx @@ -337,13 +337,13 @@ bool ScTransferObj::GetData( const datatransfer::DataFlavor& rFlavor, const OUSt Rectangle aMMRect = pDoc->GetMMRect( aBlock.aStart.Col(), aBlock.aStart.Row(), aBlock.aEnd.Col(), aBlock.aEnd.Row(), aBlock.aStart.Tab() ); - VirtualDevice aVirtDev; - aVirtDev.SetOutputSizePixel( aVirtDev.LogicToPixel( aMMRect.GetSize(), MAP_100TH_MM ) ); + ScopedVclPtrInstance< VirtualDevice > pVirtDev; + pVirtDev->SetOutputSizePixel( pVirtDev->LogicToPixel( aMMRect.GetSize(), MAP_100TH_MM ) ); - PaintToDev( &aVirtDev, pDoc, 1.0, aBlock, false ); + PaintToDev( pVirtDev, pDoc, 1.0, aBlock, false ); - aVirtDev.SetMapMode( MapMode( MAP_PIXEL ) ); - Bitmap aBmp = aVirtDev.GetBitmap( Point(), aVirtDev.GetOutputSize() ); + pVirtDev->SetMapMode( MapMode( MAP_PIXEL ) ); + Bitmap aBmp = pVirtDev->GetBitmap( Point(), pVirtDev->GetOutputSize() ); bOK = SetBitmapEx( aBmp, rFlavor ); } else if ( nFormat == SotClipboardFormatId::GDIMETAFILE ) @@ -358,17 +358,17 @@ bool ScTransferObj::GetData( const datatransfer::DataFlavor& rFlavor, const OUSt // like SvEmbeddedTransfer::GetData: GDIMetaFile aMtf; - VirtualDevice aVDev; + ScopedVclPtrInstance< VirtualDevice > pVDev; MapMode aMapMode( pEmbObj->GetMapUnit() ); Rectangle aVisArea( pEmbObj->GetVisArea( ASPECT_CONTENT ) ); - aVDev.EnableOutput( false ); - aVDev.SetMapMode( aMapMode ); + pVDev->EnableOutput( false ); + pVDev->SetMapMode( aMapMode ); aMtf.SetPrefSize( aVisArea.GetSize() ); aMtf.SetPrefMapMode( aMapMode ); - aMtf.Record( &aVDev ); + aMtf.Record( pVDev ); - pEmbObj->DoDraw( &aVDev, Point(), aVisArea.GetSize(), JobSetup(), ASPECT_CONTENT ); + pEmbObj->DoDraw( pVDev, Point(), aVisArea.GetSize(), JobSetup(), ASPECT_CONTENT ); aMtf.Stop(); aMtf.WindStart(); |