summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-06-05 14:52:44 +0100
committerCaolán McNamara <caolanm@redhat.com>2015-06-05 14:53:24 +0100
commitc0d6bc75b223e9e477ef3669f7dc4abec703ecf6 (patch)
tree221b0855ab2e9e87f3089c5749b4ba8d06ce1fc9
parenta44b770b59d322083cac6ac22cef20ce17a89e6d (diff)
Resolves: tdf#90361 CellValueBinding/CellRangeListSource need WithArguments
otherwise they are not initialized and every call on them throws. This at least results in the dialog editor not falling over immediately on inserting anything in calc. Change-Id: Ie1668ef440937c75dd08671c669c021c2efecd2a
-rw-r--r--basctl/source/dlged/dlgedobj.cxx19
1 files changed, 17 insertions, 2 deletions
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 <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/form/binding/XBindableValue.hpp>
#include <com/sun/star/form/binding/XValueBinding.hpp>
#include <com/sun/star/form/binding/XListEntrySink.hpp>
@@ -37,6 +38,7 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
#include <com/sun/star/script/XScriptEventsSupplier.hpp>
+#include <com/sun/star/table/CellAddress.hpp>
#include <o3tl/compat_functional.hxx>
#include <unotools/sharedunocomponent.hxx>
#include <vcl/svapp.hxx>
@@ -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() )