toolkit/source/controls/grid/defaultgridcolumnmodel.cxx |   37 ++++------------
 toolkit/source/controls/grid/gridcolumn.cxx             |   13 -----
 toolkit/source/controls/grid/gridcolumn.hxx             |    6 --
 3 files changed, 11 insertions(+), 45 deletions(-)

New commits:
commit 0160109aae49189f5cc9bed60db3c7084003e471
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Fri Jan 13 15:20:34 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Jan 16 06:42:12 2023 +0000

    XUnoTunnel->dynamic_cast in GridColumn
    
    And use the concrete type in DefaultGridColumnModel, which already makes
    such an assumption
    
    Change-Id: I4c91d46f1889ebe22b6c031a8aabe4e8957addec
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145531
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/toolkit/source/controls/grid/defaultgridcolumnmodel.cxx 
b/toolkit/source/controls/grid/defaultgridcolumnmodel.cxx
index 87b55be96ee2..64cf2a61b3e2 100644
--- a/toolkit/source/controls/grid/defaultgridcolumnmodel.cxx
+++ b/toolkit/source/controls/grid/defaultgridcolumnmodel.cxx
@@ -85,7 +85,7 @@ public:
     virtual void SAL_CALL disposing() override;
 
 private:
-    typedef ::std::vector< css::uno::Reference< css::awt::grid::XGridColumn > 
>   Columns;
+    typedef ::std::vector< rtl::Reference< GridColumn > >   Columns;
 
     ::comphelper::OInterfaceContainerHelper3<XContainerListener> 
m_aContainerListeners;
     Columns                             m_aColumns;
@@ -111,16 +111,9 @@ private:
                     ++col
                 )
             {
-                Reference< css::util::XCloneable > const xCloneable( *col, 
UNO_QUERY_THROW );
-                Reference< XGridColumn > const xClone( 
xCloneable->createClone(), UNO_QUERY_THROW );
+                rtl::Reference< GridColumn > const xClone( new 
GridColumn(**col) );
 
-                GridColumn* const pGridColumn = 
comphelper::getFromUnoTunnel<GridColumn>( xClone );
-                if ( pGridColumn == nullptr )
-                    throw RuntimeException( "invalid clone source 
implementation", *this );
-                    // that's indeed a RuntimeException, not an 
IllegalArgumentException or some such:
-                    // a DefaultGridColumnModel implementation whose columns 
are not GridColumn implementations
-                    // is borked.
-                pGridColumn->setIndex( col - i_copySource.m_aColumns.begin() );
+                xClone->setIndex( col - i_copySource.m_aColumns.begin() );
 
                 aColumns.push_back( xClone );
             }
@@ -150,11 +143,11 @@ private:
     {
         ::comphelper::ComponentGuard aGuard( *this, rBHelper );
 
-        GridColumn* const pGridColumn = 
comphelper::getFromUnoTunnel<GridColumn>( i_column );
+        GridColumn* const pGridColumn = dynamic_cast<GridColumn*>( 
i_column.get() );
         if ( pGridColumn == nullptr )
             throw css::lang::IllegalArgumentException( "invalid column 
implementation", *this, 1 );
 
-        m_aColumns.push_back( i_column );
+        m_aColumns.push_back( pGridColumn );
         sal_Int32 index = m_aColumns.size() - 1;
         pGridColumn->setIndex( index );
 
@@ -189,13 +182,7 @@ private:
                 ++updatePos, ++columnIndex
             )
         {
-            GridColumn* pColumnImpl = 
comphelper::getFromUnoTunnel<GridColumn>( *updatePos );
-            if ( !pColumnImpl )
-            {
-                SAL_WARN( "toolkit.controls", 
"DefaultGridColumnModel::removeColumn: invalid column implementation!" );
-                continue;
-            }
-
+            GridColumn* pColumnImpl = updatePos->get();
             pColumnImpl->setIndex( columnIndex );
         }
 
@@ -223,7 +210,7 @@ private:
     Sequence< Reference< XGridColumn > > SAL_CALL 
DefaultGridColumnModel::getColumns()
     {
         ::comphelper::ComponentGuard aGuard( *this, rBHelper );
-        return ::comphelper::containerToSequence( m_aColumns );
+        return ::comphelper::containerToSequence<Reference<XGridColumn>>( 
m_aColumns );
     }
 
 
@@ -254,7 +241,7 @@ private:
                 ContainerEvent aEvent;
                 aEvent.Source = *this;
                 aEvent.Accessor <<= sal_Int32( lastColIndex );
-                aEvent.Element <<= m_aColumns[ lastColIndex ];
+                aEvent.Element <<= Reference<XGridColumn>(m_aColumns[ 
lastColIndex ]);
                 aRemovedColumns.push_back( aEvent );
 
                 m_aColumns.erase( m_aColumns.begin() + lastColIndex );
@@ -264,7 +251,6 @@ private:
             for ( sal_Int32 i=0; i<rowElements; ++i )
             {
                 ::rtl::Reference< GridColumn > const pGridColumn = new 
GridColumn();
-                Reference< XGridColumn > const xColumn( pGridColumn );
                 OUString colTitle = "Column " + OUString::number( i + 1 );
                 pGridColumn->setTitle( colTitle );
                 pGridColumn->setColumnWidth( 80 /* APPFONT */ );
@@ -275,10 +261,10 @@ private:
                 ContainerEvent aEvent;
                 aEvent.Source = *this;
                 aEvent.Accessor <<= i;
-                aEvent.Element <<= xColumn;
+                aEvent.Element <<= Reference<XGridColumn>(pGridColumn);
                 aInsertedColumns.push_back( aEvent );
 
-                m_aColumns.push_back( xColumn );
+                m_aColumns.push_back( pGridColumn );
                 pGridColumn->setIndex( i );
             }
         }
@@ -355,8 +341,7 @@ private:
         {
             try
             {
-                const Reference< XComponent > xColComponent( m_aColumns[ 0 ], 
UNO_QUERY_THROW );
-                xColComponent->dispose();
+                m_aColumns[ 0 ]->dispose();
             }
             catch( const Exception& )
             {
diff --git a/toolkit/source/controls/grid/gridcolumn.cxx 
b/toolkit/source/controls/grid/gridcolumn.cxx
index 11a03e647236..9a0b515b6229 100644
--- a/toolkit/source/controls/grid/gridcolumn.cxx
+++ b/toolkit/source/controls/grid/gridcolumn.cxx
@@ -274,19 +274,6 @@ namespace toolkit
     {
         return new GridColumn( *this );
     }
-
-
-    sal_Int64 SAL_CALL GridColumn::getSomething( const Sequence< sal_Int8 >& 
i_identifier )
-    {
-        return comphelper::getSomethingImpl(i_identifier, this);
-    }
-
-
-    const Sequence< sal_Int8 > & GridColumn::getUnoTunnelId() noexcept
-    {
-        static const comphelper::UnoIdInit aId;
-        return aId.getSeq();
-    }
 }
 
 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
diff --git a/toolkit/source/controls/grid/gridcolumn.hxx 
b/toolkit/source/controls/grid/gridcolumn.hxx
index 8008c077d867..9d79e85f14ed 100644
--- a/toolkit/source/controls/grid/gridcolumn.hxx
+++ b/toolkit/source/controls/grid/gridcolumn.hxx
@@ -22,7 +22,6 @@
 
 #include <com/sun/star/awt/grid/XGridColumn.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
 #include <com/sun/star/style/HorizontalAlignment.hpp>
 
 #include <comphelper/compbase.hxx>
@@ -33,7 +32,6 @@ namespace toolkit
 
 typedef comphelper::WeakComponentImplHelper    <   css::awt::grid::XGridColumn
                                             ,   css::lang::XServiceInfo
-                                            ,   css::lang::XUnoTunnel
                                             >   GridColumn_Base;
 class GridColumn final : public GridColumn_Base
 {
@@ -78,10 +76,6 @@ public:
     virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) 
override;
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames(  
) override;
 
-    // XUnoTunnel and friends
-    virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< 
sal_Int8 >& i_identifier ) override;
-    static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId() noexcept;
-
     // attribute access
     void setIndex( sal_Int32 const i_index );
 

Reply via email to