diff options
Diffstat (limited to 'sfx2/source/appl/sfxpicklist.cxx')
-rw-r--r-- | sfx2/source/appl/sfxpicklist.cxx | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/sfx2/source/appl/sfxpicklist.cxx b/sfx2/source/appl/sfxpicklist.cxx index 0a6959f80dc9..f2d9a813b975 100644 --- a/sfx2/source/appl/sfxpicklist.cxx +++ b/sfx2/source/appl/sfxpicklist.cxx @@ -193,26 +193,33 @@ void SfxPickList::AddDocumentToPickList( SfxObjectShell* pDocSh ) aFilter = pFilter->GetFilterName(); // generate a thumbnail - OUString aThumbnail; + boost::optional<OUString> aThumbnail; // don't generate thumbnail when in headless mode, or on non-desktop (?) #if HAVE_FEATURE_DESKTOP - SFX_ITEMSET_ARG( pMed->GetItemSet(), pEncryptionDataItem, SfxUnoAnyItem, SID_ENCRYPTIONDATA, false ); - - if (!pDocSh->IsModified() && !pEncryptionDataItem && !Application::IsHeadlessModeEnabled()) + if (!pDocSh->IsModified() && !Application::IsHeadlessModeEnabled()) { // not modified => the document matches what is in the shell - boost::shared_ptr<GDIMetaFile> pMetaFile = pDocSh->GetPreviewMetaFile(); - BitmapEx aResultBitmap; - if (pMetaFile->CreateThumbnail(aResultBitmap)) + SFX_ITEMSET_ARG( pMed->GetItemSet(), pEncryptionDataItem, SfxUnoAnyItem, SID_ENCRYPTIONDATA, false ); + if ( pEncryptionDataItem ) + { + // encrypted document, will show a generic document icon instead + aThumbnail = OUString(); + } + else { - SvMemoryStream aStream(65535, 65535); - vcl::PNGWriter aWriter(aResultBitmap); - if (aWriter.Write(aStream)) + boost::shared_ptr<GDIMetaFile> pMetaFile = pDocSh->GetPreviewMetaFile(); + BitmapEx aResultBitmap; + if (pMetaFile->CreateThumbnail(aResultBitmap)) { - Sequence<sal_Int8> aSequence(static_cast<const sal_Int8*>(aStream.GetData()), aStream.Tell()); - OUStringBuffer aBuffer; - ::sax::Converter::encodeBase64(aBuffer, aSequence); - aThumbnail = aBuffer.makeStringAndClear(); + SvMemoryStream aStream(65535, 65535); + vcl::PNGWriter aWriter(aResultBitmap); + if (aWriter.Write(aStream)) + { + Sequence<sal_Int8> aSequence(static_cast<const sal_Int8*>(aStream.GetData()), aStream.Tell()); + OUStringBuffer aBuffer; + ::sax::Converter::encodeBase64(aBuffer, aSequence); + aThumbnail = aBuffer.makeStringAndClear(); + } } } } |