diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx index 4739bd85f07e..b4cbb9a78e63 100644 --- a/basctl/source/dlged/dlgedobj.cxx +++ b/basctl/source/dlged/dlgedobj.cxx @@ -28,6 +28,7 @@ #include "dlgresid.hrc" +#include #include #include #include @@ -37,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -1690,14 +1692,27 @@ bool DlgEdObj::MakeDataAware( const Reference< frame::XModel >& xModel ) Reference< form::binding::XListEntrySink > xListEntrySink( GetUnoControlModel(), UNO_QUERY ); if ( xFac.is() ) { + css::table::CellAddress aApiAddress; + + //tdf#90361 CellValueBinding and CellRangeListSource are unusable + //without being initialized, so use createInstanceWithArguments with a + //dummy BoundCell instead of createInstance. This at least results in + //the dialog editor not falling. + css::beans::NamedValue aValue; + aValue.Name = "BoundCell"; + aValue.Value <<= aApiAddress; + + Sequence< Any > aArgs( 1 ); + aArgs[ 0 ] <<= aValue; + if ( xBindable.is() ) { - Reference< form::binding::XValueBinding > xBinding( xFac->createInstance( "com.sun.star.table.CellValueBinding" ), UNO_QUERY ); + Reference< form::binding::XValueBinding > xBinding( xFac->createInstanceWithArguments( "com.sun.star.table.CellValueBinding", aArgs ), UNO_QUERY ); xBindable->setValueBinding( xBinding ); } if ( xListEntrySink.is() ) { - Reference< form::binding::XListEntrySource > xSource( xFac->createInstance( "com.sun.star.table.CellRangeListSource" ), UNO_QUERY ); + Reference< form::binding::XListEntrySource > xSource( xFac->createInstanceWithArguments( "com.sun.star.table.CellRangeListSource", aArgs ), UNO_QUERY ); xListEntrySink->setListEntrySource( xSource ); } if ( xListEntrySink.is() || xBindable.is() )