basctl/source/dlged/dlgedobj.cxx |   19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

New commits:
commit c0d6bc75b223e9e477ef3669f7dc4abec703ecf6
Author: Caolán McNamara <caol...@redhat.com>
Date:   Fri Jun 5 14:52:44 2015 +0100

    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

diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx
index 4739bd8..b4cbb9a 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() )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to