diff options
Diffstat (limited to 'sc/source/ui/vba/vbaapplication.cxx')
-rw-r--r-- | sc/source/ui/vba/vbaapplication.cxx | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/sc/source/ui/vba/vbaapplication.cxx b/sc/source/ui/vba/vbaapplication.cxx index bab488c48b5d..1c915d15ae3b 100644 --- a/sc/source/ui/vba/vbaapplication.cxx +++ b/sc/source/ui/vba/vbaapplication.cxx @@ -33,6 +33,7 @@ #include <ooo/vba/excel/XlCalculation.hpp> #include <ooo/vba/excel/XlMousePointer.hpp> #include <ooo/vba/office/MsoShapeType.hpp> +#include <ooo/vba/office/MsoAutoShapeType.hpp> #include "service.hxx" #include "vbaapplication.hxx" @@ -51,6 +52,8 @@ #include "vbanames.hxx" #include <vbahelper/vbashape.hxx> #include "vbatextboxshape.hxx" +#include "vbaovalshape.hxx" +#include "vbalineshape.hxx" #include "vbaassistant.hxx" #include "sc.hrc" #include "macromgr.hxx" @@ -259,14 +262,28 @@ ScVbaApplication::getSelection() // if ScVbaShape::getType( xShape ) == office::MsoShapeType::msoAutoShape // and the uno object implements the com.sun.star.drawing.Text service // return a textboxshape object - if ( ScVbaShape::getType( xShape ) == office::MsoShapeType::msoAutoShape ) + sal_Int32 nType = ScVbaShape::getType( xShape ); + if ( nType == office::MsoShapeType::msoAutoShape ) { + // TODO Oval with text box + if( ScVbaShape::getAutoShapeType( xShape ) == office::MsoAutoShapeType::msoShapeOval ) + { + return uno::makeAny( uno::Reference< msforms::XOval >(new ScVbaOvalShape( mxContext, xShape, xShapes, xModel ) ) ); + } + + uno::Reference< lang::XServiceInfo > xShapeServiceInfo( xShape, uno::UNO_QUERY_THROW ); if ( xShapeServiceInfo->supportsService("com.sun.star.drawing.Text") ) { - return uno::makeAny( uno::Reference< msforms::XTextBoxShape >(new ScVbaTextBoxShape( mxContext, xShape, xShapes, xModel ) ) ); + return uno::makeAny( uno::Reference< msforms::XTextBoxShape >( + new ScVbaTextBoxShape( mxContext, xShape, xShapes, xModel ) ) ); } } + else if ( nType == office::MsoShapeType::msoLine ) + { + return uno::makeAny( uno::Reference< msforms::XLine >( new ScVbaLineShape( + mxContext, xShape, xShapes, xModel ) ) ); + } return uno::makeAny( uno::Reference< msforms::XShape >(new ScVbaShape( this, mxContext, xShape, xShapes, xModel, ScVbaShape::getType( xShape ) ) ) ); } else if( xServiceInfo->supportsService("com.sun.star.sheet.SheetCellRange") || |