[Libreoffice-commits] core.git: sfx2/source

Eike Rathke erack at redhat.com
Thu Oct 10 16:17:50 PDT 2013


 sfx2/source/appl/fileobj.cxx |   27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

New commits:
commit 823278dd095d754d0f673ef140c36c9fa7ebeffd
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Oct 11 01:08:01 2013 +0200

    resolved fdo#69948 honor a detected FilterName
    
    TypeDetection::queryTypeByDescriptor() adds the FilterName property to
    the MediaDescriptor, use that if present.
    
    Strangely enough the sequence returned by XNameAccess::getByName(sType)
    of the type detection contains an empty PreferredFilter value so that is
    useless in this scenario.
    
    Change-Id: I5cdc9fe71e35bdb7c511739c7f7728134941649a

diff --git a/sfx2/source/appl/fileobj.cxx b/sfx2/source/appl/fileobj.cxx
index 97e3504..e790f55 100644
--- a/sfx2/source/appl/fileobj.cxx
+++ b/sfx2/source/appl/fileobj.cxx
@@ -399,13 +399,28 @@ OUString impl_getFilter( const OUString& _rURL )
             OUString sType = xTypeDetection->queryTypeByDescriptor( aDescrList, sal_True );
             if ( !sType.isEmpty() )
             {
-                css::uno::Reference< css::container::XNameAccess > xTypeCont( xTypeDetection,
-                                                                              css::uno::UNO_QUERY );
-                if ( xTypeCont.is() )
+                // Honor a selected/detected filter.
+                for (sal_Int32 i=0; i < aDescrList.getLength(); ++i)
                 {
-                    ::comphelper::SequenceAsHashMap lTypeProps( xTypeCont->getByName( sType ) );
-                    sFilter = lTypeProps.getUnpackedValueOrDefault(
-                        OUString("PreferredFilter"), OUString() );
+                    if (aDescrList[i].Name == "FilterName")
+                    {
+                        if (aDescrList[i].Value >>= sFilter)
+                            break;
+                    }
+                }
+                if (sFilter.isEmpty())
+                {
+                    css::uno::Reference< css::container::XNameAccess > xTypeCont( xTypeDetection,
+                            css::uno::UNO_QUERY );
+                    if ( xTypeCont.is() )
+                    {
+                        /* XXX: for fdo#69948 scenario the sequence returned by
+                         * getByName() contains an empty PreferredFilter
+                         * property value (since? expected?) */
+                        ::comphelper::SequenceAsHashMap lTypeProps( xTypeCont->getByName( sType ) );
+                        sFilter = lTypeProps.getUnpackedValueOrDefault(
+                                OUString("PreferredFilter"), OUString() );
+                    }
                 }
             }
         }


More information about the Libreoffice-commits mailing list