summaryrefslogtreecommitdiff
path: root/sd/source/ui/slideshow
diff options
context:
space:
mode:
authorAndre Fische <andre.f.fischer Andre Fischerandre.f.fischer@oracle.com>2011-03-11 15:22:17 +0100
committerMichael Meeks <michael.meeks@suse.com>2012-11-28 12:48:33 +0000
commit22e54a9d0ee80b156ddb74a3d80330d48213ce9e (patch)
tree1296be7d0060b7203ac530299020e95daa3ee519 /sd/source/ui/slideshow
parent5c3614639cc448e5bdab6ed303de26a5ef9ce894 (diff)
impress211: #i110990# Fixed remaining problems with display ids and indices.
Conflicts: sd/source/ui/dlg/present.cxx
Diffstat (limited to 'sd/source/ui/slideshow')
-rw-r--r--sd/source/ui/slideshow/slideshow.cxx36
1 files changed, 35 insertions, 1 deletions
diff --git a/sd/source/ui/slideshow/slideshow.cxx b/sd/source/ui/slideshow/slideshow.cxx
index 3b4ca7d68d96..6c9cc7da22b0 100644
--- a/sd/source/ui/slideshow/slideshow.cxx
+++ b/sd/source/ui/slideshow/slideshow.cxx
@@ -110,6 +110,25 @@ namespace {
private:
::boost::shared_ptr<SlideShowRestarter> mpRestarter;
};
+
+ /** Return the default display id (or -1 when that can not be
+ determined.)
+ */
+ sal_Int32 GetExternalDisplay (void)
+ {
+ try
+ {
+ Reference< XMultiServiceFactory > xFactory(::comphelper::getProcessServiceFactory(), UNO_QUERY_THROW );
+ Reference< XPropertySet > xMonProps(xFactory->createInstance( "com.sun.star.awt.DisplayAccess" ), UNO_QUERY_THROW );
+ sal_Int32 nPrimaryIndex (-1);
+ if (xMonProps->getPropertyValue( "ExternalDisplay" ) >>= nPrimaryIndex)
+ return nPrimaryIndex;
+ }
+ catch( Exception& )
+ {
+ }
+ return -1;
+ }
}
@@ -561,6 +580,14 @@ void SAL_CALL SlideShow::setPropertyValue( const OUString& aPropertyName, const
sal_Int32 nDisplay = 0;
if( aValue >>= nDisplay )
{
+ // Convert value to true display id.
+ if (nDisplay == 0)
+ nDisplay = GetExternalDisplay();
+ else if (nDisplay < 0)
+ nDisplay = -1;
+ else
+ --nDisplay;
+
bIllegalArgument = false;
SdOptions* pOptions = SD_MOD()->GetSdOptions(DOCUMENT_TYPE_IMPRESS);
@@ -645,7 +672,14 @@ Any SAL_CALL SlideShow::getPropertyValue( const OUString& PropertyName ) throw(U
case ATTR_PRESENT_DISPLAY:
{
SdOptions* pOptions = SD_MOD()->GetSdOptions(DOCUMENT_TYPE_IMPRESS);
- return Any( pOptions->GetDisplay() );
+ const sal_Int32 nDisplay (pOptions->GetDisplay());
+ // Convert true display id to the previously used schema.
+ if (nDisplay == GetExternalDisplay())
+ return Any(sal_Int32(0));
+ else if (nDisplay < 0)
+ return Any(sal_Int32(-1));
+ else
+ return Any(nDisplay+1);
}
default: