summaryrefslogtreecommitdiff
path: root/sfx2/source/appl/sfxpicklist.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/appl/sfxpicklist.cxx')
-rw-r--r--sfx2/source/appl/sfxpicklist.cxx35
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();
+ }
}
}
}