toolkit: Use TableControl_Impl directly instead of ITableModelListener
TableControl_Impl is the only class implementing/subclassing the ITableModelListener interface/base class. Switch to using TableControl_Impl directly instead of the abstract base class. This also requires that TableControl_Impl now needs to subclass std::enable_shared_from_this instead of ITableModelListener doing so. This commmit prepares for merging TableControl and TableControl_Impl in an upcoming commit, at which point the std::shared_ptr will be replaced by a VclPtr as TableControl is a vcl::Window subclass. Change-Id: I74b9b29f03d03571709d1c8a7b416b0a6a12319a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211156 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
This commit is contained in:
@@ -73,7 +73,8 @@ class TableFunctionSet;
|
||||
|
||||
//= TableControl_Impl
|
||||
|
||||
class TableControl_Impl : public ITableModelListener
|
||||
class TableControl_Impl : public ITableModelListener,
|
||||
public std::enable_shared_from_this<TableControl_Impl>
|
||||
{
|
||||
friend class TableGeometry;
|
||||
friend class TableRowGeometry;
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace svt::table
|
||||
/** declares an interface to be implemented by components interested in
|
||||
changes in an ->ITableModel
|
||||
*/
|
||||
class SAL_NO_VTABLE ITableModelListener : public std::enable_shared_from_this< ITableModelListener >
|
||||
class SAL_NO_VTABLE ITableModelListener
|
||||
{
|
||||
public:
|
||||
/** notifies the listener that one or more rows have been inserted into
|
||||
@@ -147,7 +147,6 @@ namespace svt::table
|
||||
/// deletes the listener instance
|
||||
virtual ~ITableModelListener(){};
|
||||
};
|
||||
typedef std::shared_ptr< ITableModelListener > PTableModelListener;
|
||||
|
||||
|
||||
//= IColumnModel
|
||||
@@ -329,11 +328,13 @@ namespace svt::table
|
||||
|
||||
/** adds a listener to be notified of changes in the table model
|
||||
*/
|
||||
virtual void addTableModelListener( const PTableModelListener& i_listener ) = 0;
|
||||
virtual void addTableModelListener(const std::shared_ptr<TableControl_Impl>& i_listener)
|
||||
= 0;
|
||||
|
||||
/** remove a listener to be notified of changes in the table model
|
||||
*/
|
||||
virtual void removeTableModelListener( const PTableModelListener& i_listener ) = 0;
|
||||
virtual void removeTableModelListener(const std::shared_ptr<TableControl_Impl>& i_listener)
|
||||
= 0;
|
||||
|
||||
/** retrieves the content of the given cell
|
||||
*/
|
||||
|
||||
@@ -111,8 +111,8 @@ public:
|
||||
{
|
||||
return ScrollbarShowNever;
|
||||
}
|
||||
virtual void addTableModelListener(const PTableModelListener&) override {}
|
||||
virtual void removeTableModelListener(const PTableModelListener&) override {}
|
||||
virtual void addTableModelListener(const std::shared_ptr<TableControl_Impl>&) override {}
|
||||
virtual void removeTableModelListener(const std::shared_ptr<TableControl_Impl>&) override {}
|
||||
virtual ::std::optional<::Color> getLineColor() const override
|
||||
{
|
||||
return ::std::optional<::Color>();
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#include <controls/table/defaultinputhandler.hxx>
|
||||
#include <controls/table/gridtablerenderer.hxx>
|
||||
#include <controls/table/tablecontrol_impl.hxx>
|
||||
|
||||
#include <com/sun/star/awt/grid/XSortableGridData.hpp>
|
||||
#include <com/sun/star/util/Color.hpp>
|
||||
@@ -305,14 +306,16 @@ ScrollbarVisibility UnoControlTableModel::getHorizontalScrollbarVisibility() con
|
||||
return eHScrollMode;
|
||||
}
|
||||
|
||||
void UnoControlTableModel::addTableModelListener(const PTableModelListener& i_listener)
|
||||
void UnoControlTableModel::addTableModelListener(
|
||||
const std::shared_ptr<TableControl_Impl>& i_listener)
|
||||
{
|
||||
DBG_TESTSOLARMUTEX();
|
||||
ENSURE_OR_RETURN_VOID(!!i_listener, "illegal NULL listener");
|
||||
m_aListeners.push_back(i_listener);
|
||||
}
|
||||
|
||||
void UnoControlTableModel::removeTableModelListener(const PTableModelListener& i_listener)
|
||||
void UnoControlTableModel::removeTableModelListener(
|
||||
const std::shared_ptr<TableControl_Impl>& i_listener)
|
||||
{
|
||||
DBG_TESTSOLARMUTEX();
|
||||
auto lookup = std::find(m_aListeners.begin(), m_aListeners.end(), i_listener);
|
||||
|
||||
@@ -55,8 +55,10 @@ public:
|
||||
virtual TableMetrics getRowHeaderWidth() const override;
|
||||
virtual ScrollbarVisibility getVerticalScrollbarVisibility() const override;
|
||||
virtual ScrollbarVisibility getHorizontalScrollbarVisibility() const override;
|
||||
virtual void addTableModelListener(const PTableModelListener& i_listener) override;
|
||||
virtual void removeTableModelListener(const PTableModelListener& i_listener) override;
|
||||
virtual void
|
||||
addTableModelListener(const std::shared_ptr<TableControl_Impl>& i_listener) override;
|
||||
virtual void
|
||||
removeTableModelListener(const std::shared_ptr<TableControl_Impl>& i_listener) override;
|
||||
virtual void getCellContent(ColPos const i_col, RowPos const i_row,
|
||||
css::uno::Any& o_cellContent) override;
|
||||
virtual void getCellToolTip(ColPos const i_col, RowPos const i_row,
|
||||
@@ -141,7 +143,7 @@ public:
|
||||
private:
|
||||
void impl_notifyTableMetricsChanged() const;
|
||||
|
||||
typedef ::std::vector<PTableModelListener> ModellListeners;
|
||||
typedef ::std::vector<std::shared_ptr<TableControl_Impl>> ModellListeners;
|
||||
typedef ::std::vector<PColumnModel> ColumnModels;
|
||||
|
||||
ColumnModels aColumns;
|
||||
|
||||
Reference in New Issue
Block a user