Simplify a bit

The creation of own TransferableDataHelper was needed when the code
was introduced initially, taking a reference to XTransferable; now,
when it already takes a helper, it's no more needed.

Change-Id: I4c42327ab9b964c61572be13a4a89b44efc8d343
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177466
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
Mike Kaganski
2024-11-28 13:07:54 +05:00
parent c8fb044028
commit 7ccde3fecf

View File

@@ -80,7 +80,7 @@ using namespace ::com::sun::star::datatransfer;
namespace sd { namespace sd {
#define CHECK_FORMAT_TRANS( _def_Type ) ( ( nFormat == (_def_Type) || nFormat == SotClipboardFormatId::NONE ) && aDataHelper.HasFormat( _def_Type ) ) #define CHECK_FORMAT_TRANS( _def_Type ) ( ( nFormat == (_def_Type) || nFormat == SotClipboardFormatId::NONE ) && rDataHelper.HasFormat( _def_Type ) )
/************************************************************************* /*************************************************************************
|* |*
@@ -259,10 +259,6 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
mnAction = rDnDAction; mnAction = rDnDAction;
mbIsDropAllowed = false; mbIsDropAllowed = false;
TransferableDataHelper aDataHelper( rDataHelper );
SdPage* pPage = nullptr;
std::unique_ptr<ImageMap> pImageMap;
bool bReturn = false;
bool bLink = ( ( mnAction & DND_ACTION_LINK ) != 0 ); bool bLink = ( ( mnAction & DND_ACTION_LINK ) != 0 );
bool bCopy = ( ( ( mnAction & DND_ACTION_COPY ) != 0 ) || bLink ); bool bCopy = ( ( ( mnAction & DND_ACTION_COPY ) != 0 ) || bLink );
SdrInsertFlags nPasteOptions = SdrInsertFlags::SETDEFLAYER; SdrInsertFlags nPasteOptions = SdrInsertFlags::SETDEFLAYER;
@@ -283,11 +279,12 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
pPickObj = PickObj(rPos, getHitTolLog(), pPV); pPickObj = PickObj(rPos, getHitTolLog(), pPV);
} }
SdPage* pPage = nullptr;
if( nPage != SDRPAGE_NOTFOUND ) if( nPage != SDRPAGE_NOTFOUND )
pPage = static_cast<SdPage*>( mrDoc.GetPage( nPage ) ); pPage = static_cast<SdPage*>( mrDoc.GetPage( nPage ) );
SdTransferable* pOwnData = nullptr; SdTransferable* pOwnData = nullptr;
SdTransferable* pImplementation = SdTransferable::getImplementation( aDataHelper.GetTransferable() ); SdTransferable* pImplementation = SdTransferable::getImplementation( rDataHelper.GetTransferable() );
if(pImplementation && (rDnDAction & DND_ACTION_LINK)) if(pImplementation && (rDnDAction & DND_ACTION_LINK))
{ {
@@ -320,9 +317,10 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
} }
// ImageMap? // ImageMap?
if( !pOwnData && aDataHelper.HasFormat( SotClipboardFormatId::SVIM ) ) std::unique_ptr<ImageMap> pImageMap;
if (!pOwnData && rDataHelper.HasFormat(SotClipboardFormatId::SVIM))
{ {
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( SotClipboardFormatId::SVIM ) ) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream( SotClipboardFormatId::SVIM ) )
{ {
pImageMap.reset(new ImageMap); pImageMap.reset(new ImageMap);
// mba: clipboard always must contain absolute URLs (could be from alien source) // mba: clipboard always must contain absolute URLs (could be from alien source)
@@ -335,12 +333,12 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if( !bLink && (nFormat == SotClipboardFormatId::NONE || (nFormat == SotClipboardFormatId::RTF) || (nFormat == SotClipboardFormatId::RICHTEXT)) ) if( !bLink && (nFormat == SotClipboardFormatId::NONE || (nFormat == SotClipboardFormatId::RTF) || (nFormat == SotClipboardFormatId::RICHTEXT)) )
{ {
// if the object supports rtf and there is a table involved, default is to create a table // if the object supports rtf and there is a table involved, default is to create a table
bool bIsRTF = aDataHelper.HasFormat( SotClipboardFormatId::RTF ); bool bIsRTF = rDataHelper.HasFormat(SotClipboardFormatId::RTF);
if( ( bIsRTF || aDataHelper.HasFormat( SotClipboardFormatId::RICHTEXT ) ) if( ( bIsRTF || rDataHelper.HasFormat( SotClipboardFormatId::RICHTEXT ) )
&& ! aDataHelper.HasFormat( SotClipboardFormatId::DRAWING ) ) && ! rDataHelper.HasFormat( SotClipboardFormatId::DRAWING ) )
{ {
auto nFormatId = bIsRTF ? SotClipboardFormatId::RTF : SotClipboardFormatId::RICHTEXT; auto nFormatId = bIsRTF ? SotClipboardFormatId::RTF : SotClipboardFormatId::RICHTEXT;
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( nFormatId )) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream(nFormatId))
{ {
xStm->Seek( 0 ); xStm->Seek( 0 );
@@ -364,6 +362,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
// when a CHECK_FORMAT_TRANS(*format*) detected format does not work. This is // when a CHECK_FORMAT_TRANS(*format*) detected format does not work. This is
// e.g. necessary for SotClipboardFormatId::BITMAP // e.g. necessary for SotClipboardFormatId::BITMAP
bool bReturn = false;
if (pOwnData) if (pOwnData)
{ {
// Paste only if SfxClassificationHelper recommends so. // Paste only if SfxClassificationHelper recommends so.
@@ -683,7 +682,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && CHECK_FORMAT_TRANS( SotClipboardFormatId::PDF )) if(!bReturn && CHECK_FORMAT_TRANS( SotClipboardFormatId::PDF ))
{ {
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( SotClipboardFormatId::PDF )) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream( SotClipboardFormatId::PDF ))
{ {
Point aInsertPos(rPos); Point aInsertPos(rPos);
Graphic aGraphic; Graphic aGraphic;
@@ -702,7 +701,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && CHECK_FORMAT_TRANS( SotClipboardFormatId::DRAWING )) if(!bReturn && CHECK_FORMAT_TRANS( SotClipboardFormatId::DRAWING ))
{ {
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( SotClipboardFormatId::DRAWING )) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream( SotClipboardFormatId::DRAWING ))
{ {
DrawDocShellRef xShell = new DrawDocShell(SfxObjectCreateMode::INTERNAL, false, DocumentType::Impress); DrawDocShellRef xShell = new DrawDocShell(SfxObjectCreateMode::INTERNAL, false, DocumentType::Impress);
xShell->DoInitNew(); xShell->DoInitNew();
@@ -858,7 +857,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
{ {
OUString aOUString; OUString aOUString;
if( aDataHelper.GetString( SotClipboardFormatId::SBA_FIELDDATAEXCHANGE, aOUString ) ) if (rDataHelper.GetString(SotClipboardFormatId::SBA_FIELDDATAEXCHANGE, aOUString))
{ {
rtl::Reference<SdrObject> pObj = CreateFieldControl( aOUString ); rtl::Reference<SdrObject> pObj = CreateFieldControl( aOUString );
@@ -881,18 +880,18 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && if(!bReturn &&
!bLink && !bLink &&
(CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBED_SOURCE) || CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBEDDED_OBJ)) && (CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBED_SOURCE) || CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBEDDED_OBJ)) &&
aDataHelper.HasFormat(SotClipboardFormatId::OBJECTDESCRIPTOR)) rDataHelper.HasFormat(SotClipboardFormatId::OBJECTDESCRIPTOR))
{ {
//TODO/LATER: is it possible that this format is binary?! (from old versions of SO) //TODO/LATER: is it possible that this format is binary?! (from old versions of SO)
uno::Reference < io::XInputStream > xStm; uno::Reference < io::XInputStream > xStm;
TransferableObjectDescriptor aObjDesc; TransferableObjectDescriptor aObjDesc;
if (aDataHelper.GetTransferableObjectDescriptor(SotClipboardFormatId::OBJECTDESCRIPTOR, aObjDesc)) if (rDataHelper.GetTransferableObjectDescriptor(SotClipboardFormatId::OBJECTDESCRIPTOR, aObjDesc))
{ {
OUString aDocShellID = SfxObjectShell::CreateShellID(mrDoc.GetDocSh()); OUString aDocShellID = SfxObjectShell::CreateShellID(mrDoc.GetDocSh());
xStm = aDataHelper.GetInputStream(nFormat != SotClipboardFormatId::NONE ? nFormat : SotClipboardFormatId::EMBED_SOURCE, aDocShellID); xStm = rDataHelper.GetInputStream(nFormat != SotClipboardFormatId::NONE ? nFormat : SotClipboardFormatId::EMBED_SOURCE, aDocShellID);
if (!xStm.is()) if (!xStm.is())
xStm = aDataHelper.GetInputStream(SotClipboardFormatId::EMBEDDED_OBJ, aDocShellID); xStm = rDataHelper.GetInputStream(SotClipboardFormatId::EMBEDDED_OBJ, aDocShellID);
} }
if (xStm.is()) if (xStm.is())
@@ -1057,22 +1056,22 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && if(!bReturn &&
!bLink && !bLink &&
(CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBEDDED_OBJ_OLE) || CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBED_SOURCE_OLE)) && (CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBEDDED_OBJ_OLE) || CHECK_FORMAT_TRANS(SotClipboardFormatId::EMBED_SOURCE_OLE)) &&
aDataHelper.HasFormat(SotClipboardFormatId::OBJECTDESCRIPTOR_OLE)) rDataHelper.HasFormat(SotClipboardFormatId::OBJECTDESCRIPTOR_OLE))
{ {
// online insert ole if format is forced or no gdi metafile is available // online insert ole if format is forced or no gdi metafile is available
if( (nFormat != SotClipboardFormatId::NONE) || !aDataHelper.HasFormat( SotClipboardFormatId::GDIMETAFILE ) ) if( (nFormat != SotClipboardFormatId::NONE) || !rDataHelper.HasFormat( SotClipboardFormatId::GDIMETAFILE ) )
{ {
uno::Reference < io::XInputStream > xStm; uno::Reference < io::XInputStream > xStm;
TransferableObjectDescriptor aObjDesc; TransferableObjectDescriptor aObjDesc;
if ( aDataHelper.GetTransferableObjectDescriptor( SotClipboardFormatId::OBJECTDESCRIPTOR_OLE, aObjDesc ) ) if ( rDataHelper.GetTransferableObjectDescriptor( SotClipboardFormatId::OBJECTDESCRIPTOR_OLE, aObjDesc ) )
{ {
uno::Reference < embed::XEmbeddedObject > xObj; uno::Reference < embed::XEmbeddedObject > xObj;
OUString aName; OUString aName;
xStm = aDataHelper.GetInputStream(nFormat != SotClipboardFormatId::NONE ? nFormat : SotClipboardFormatId::EMBED_SOURCE_OLE, OUString()); xStm = rDataHelper.GetInputStream(nFormat != SotClipboardFormatId::NONE ? nFormat : SotClipboardFormatId::EMBED_SOURCE_OLE, OUString());
if (!xStm.is()) if (!xStm.is())
xStm = aDataHelper.GetInputStream(SotClipboardFormatId::EMBEDDED_OBJ_OLE, OUString()); xStm = rDataHelper.GetInputStream(SotClipboardFormatId::EMBEDDED_OBJ_OLE, OUString());
if (xStm.is()) if (xStm.is())
{ {
@@ -1111,11 +1110,11 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
// (for Selection Manager in Trusted Solaris) // (for Selection Manager in Trusted Solaris)
#ifndef __sun #ifndef __sun
if( aDataHelper.GetGraphic( SotClipboardFormatId::SVXB, aGraphic ) ) if (rDataHelper.GetGraphic(SotClipboardFormatId::SVXB, aGraphic))
nGrFormat = SotClipboardFormatId::SVXB; nGrFormat = SotClipboardFormatId::SVXB;
else if( aDataHelper.GetGraphic( SotClipboardFormatId::GDIMETAFILE, aGraphic ) ) else if (rDataHelper.GetGraphic(SotClipboardFormatId::GDIMETAFILE, aGraphic))
nGrFormat = SotClipboardFormatId::GDIMETAFILE; nGrFormat = SotClipboardFormatId::GDIMETAFILE;
else if( aDataHelper.GetGraphic( SotClipboardFormatId::BITMAP, aGraphic ) ) else if (rDataHelper.GetGraphic(SotClipboardFormatId::BITMAP, aGraphic))
nGrFormat = SotClipboardFormatId::BITMAP; nGrFormat = SotClipboardFormatId::BITMAP;
#endif #endif
@@ -1212,17 +1211,17 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
} }
} }
if( !bReturn && aDataHelper.HasFormat( SotClipboardFormatId::GDIMETAFILE ) ) if (!bReturn && rDataHelper.HasFormat(SotClipboardFormatId::GDIMETAFILE))
{ {
// if no object was inserted, insert a picture // if no object was inserted, insert a picture
InsertMetaFile( aDataHelper, rPos, pImageMap.get(), true ); InsertMetaFile(rDataHelper, rPos, pImageMap.get(), true);
bReturn = true; bReturn = true;
} }
} }
if(!bReturn && (!bLink || pPickObj) && CHECK_FORMAT_TRANS(SotClipboardFormatId::SVXB)) if(!bReturn && (!bLink || pPickObj) && CHECK_FORMAT_TRANS(SotClipboardFormatId::SVXB))
{ {
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( SotClipboardFormatId::SVXB )) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream( SotClipboardFormatId::SVXB ))
{ {
Point aInsertPos( rPos ); Point aInsertPos( rPos );
Graphic aGraphic; Graphic aGraphic;
@@ -1278,7 +1277,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
aInsertPos.setY( pOwnData->GetStartPos().Y() + ( aSize.Height() >> 1 ) ); aInsertPos.setY( pOwnData->GetStartPos().Y() + ( aSize.Height() >> 1 ) );
} }
bReturn = InsertMetaFile( aDataHelper, aInsertPos, pImageMap.get(), nFormat == SotClipboardFormatId::NONE ); bReturn = InsertMetaFile( rDataHelper, aInsertPos, pImageMap.get(), nFormat == SotClipboardFormatId::NONE );
} }
if(!bReturn && (!bLink || pPickObj) && CHECK_FORMAT_TRANS(SotClipboardFormatId::BITMAP)) if(!bReturn && (!bLink || pPickObj) && CHECK_FORMAT_TRANS(SotClipboardFormatId::BITMAP))
@@ -1286,22 +1285,22 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
BitmapEx aBmpEx; BitmapEx aBmpEx;
// get basic Bitmap data // get basic Bitmap data
aDataHelper.GetBitmapEx(SotClipboardFormatId::BITMAP, aBmpEx); rDataHelper.GetBitmapEx(SotClipboardFormatId::BITMAP, aBmpEx);
if(aBmpEx.IsEmpty()) if(aBmpEx.IsEmpty())
{ {
// if this did not work, try to get graphic formats and convert these to bitmap // if this did not work, try to get graphic formats and convert these to bitmap
Graphic aGraphic; Graphic aGraphic;
if(aDataHelper.GetGraphic(SotClipboardFormatId::GDIMETAFILE, aGraphic)) if (rDataHelper.GetGraphic(SotClipboardFormatId::GDIMETAFILE, aGraphic))
{ {
aBmpEx = aGraphic.GetBitmapEx(); aBmpEx = aGraphic.GetBitmapEx();
} }
else if(aDataHelper.GetGraphic(SotClipboardFormatId::SVXB, aGraphic)) else if (rDataHelper.GetGraphic(SotClipboardFormatId::SVXB, aGraphic))
{ {
aBmpEx = aGraphic.GetBitmapEx(); aBmpEx = aGraphic.GetBitmapEx();
} }
else if(aDataHelper.GetGraphic(SotClipboardFormatId::BITMAP, aGraphic)) else if (rDataHelper.GetGraphic(SotClipboardFormatId::BITMAP, aGraphic))
{ {
aBmpEx = aGraphic.GetBitmapEx(); aBmpEx = aGraphic.GetBitmapEx();
} }
@@ -1338,7 +1337,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && pPickObj && CHECK_FORMAT_TRANS( SotClipboardFormatId::XFA ) ) if(!bReturn && pPickObj && CHECK_FORMAT_TRANS( SotClipboardFormatId::XFA ) )
{ {
uno::Any const data(aDataHelper.GetAny(SotClipboardFormatId::XFA, u""_ustr)); uno::Any const data(rDataHelper.GetAny(SotClipboardFormatId::XFA, u""_ustr));
uno::Sequence<beans::NamedValue> props; uno::Sequence<beans::NamedValue> props;
if (data >>= props) if (data >>= props)
{ {
@@ -1409,7 +1408,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SotClipboardFormatId::HTML)) if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SotClipboardFormatId::HTML))
{ {
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( SotClipboardFormatId::HTML )) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream( SotClipboardFormatId::HTML ))
{ {
xStm->Seek( 0 ); xStm->Seek( 0 );
@@ -1439,7 +1438,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SotClipboardFormatId::EDITENGINE_ODF_TEXT_FLAT)) if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SotClipboardFormatId::EDITENGINE_ODF_TEXT_FLAT))
{ {
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( SotClipboardFormatId::EDITENGINE_ODF_TEXT_FLAT )) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream( SotClipboardFormatId::EDITENGINE_ODF_TEXT_FLAT ))
{ {
OutlinerView* pOLV = GetTextEditOutlinerView(); OutlinerView* pOLV = GetTextEditOutlinerView();
@@ -1469,7 +1468,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
bool bIsHtmlSimple = CHECK_FORMAT_TRANS(SotClipboardFormatId::HTML_SIMPLE); bool bIsHtmlSimple = CHECK_FORMAT_TRANS(SotClipboardFormatId::HTML_SIMPLE);
if (bIsHtmlSimple) if (bIsHtmlSimple)
{ {
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream(SotClipboardFormatId::HTML_SIMPLE)) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream(SotClipboardFormatId::HTML_SIMPLE))
{ {
xStm->Seek(0); xStm->Seek(0);
@@ -1500,7 +1499,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if (!bReturn && (bIsRTF || CHECK_FORMAT_TRANS(SotClipboardFormatId::RICHTEXT))) if (!bReturn && (bIsRTF || CHECK_FORMAT_TRANS(SotClipboardFormatId::RICHTEXT)))
{ {
auto nFormatId = bIsRTF ? SotClipboardFormatId::RTF : SotClipboardFormatId::RICHTEXT; auto nFormatId = bIsRTF ? SotClipboardFormatId::RTF : SotClipboardFormatId::RICHTEXT;
if (std::unique_ptr<SvStream> xStm = aDataHelper.GetSotStorageStream( nFormatId )) if (std::unique_ptr<SvStream> xStm = rDataHelper.GetSotStorageStream(nFormatId))
{ {
xStm->Seek( 0 ); xStm->Seek( 0 );
@@ -1538,7 +1537,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
{ {
FileList aDropFileList; FileList aDropFileList;
if( aDataHelper.GetFileList( SotClipboardFormatId::FILE_LIST, aDropFileList ) ) if (rDataHelper.GetFileList(SotClipboardFormatId::FILE_LIST, aDropFileList))
{ {
maDropFileVector.clear(); maDropFileVector.clear();
@@ -1555,7 +1554,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
{ {
OUString aDropFile; OUString aDropFile;
if( aDataHelper.GetString( SotClipboardFormatId::SIMPLE_FILE, aDropFile ) ) if (rDataHelper.GetString(SotClipboardFormatId::SIMPLE_FILE, aDropFile))
{ {
maDropFileVector.clear(); maDropFileVector.clear();
maDropFileVector.push_back( aDropFile ); maDropFileVector.push_back( aDropFile );
@@ -1568,13 +1567,13 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SotClipboardFormatId::STRING)) if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SotClipboardFormatId::STRING))
{ {
if( ( SotClipboardFormatId::STRING == nFormat ) || if( ( SotClipboardFormatId::STRING == nFormat ) ||
( !aDataHelper.HasFormat( SotClipboardFormatId::SOLK ) && ( !rDataHelper.HasFormat( SotClipboardFormatId::SOLK ) &&
!aDataHelper.HasFormat( SotClipboardFormatId::NETSCAPE_BOOKMARK ) && !rDataHelper.HasFormat( SotClipboardFormatId::NETSCAPE_BOOKMARK ) &&
!aDataHelper.HasFormat( SotClipboardFormatId::FILENAME ) ) ) !rDataHelper.HasFormat( SotClipboardFormatId::FILENAME ) ) )
{ {
OUString aOUString; OUString aOUString;
if( aDataHelper.GetString( SotClipboardFormatId::STRING, aOUString ) ) if (rDataHelper.GetString(SotClipboardFormatId::STRING, aOUString))
{ {
OutlinerView* pOLV = GetTextEditOutlinerView(); OutlinerView* pOLV = GetTextEditOutlinerView();