Use a BObjectList instead of a DoublyLinkedList for the TableModelListeners.
Otherwise we can't add a listener to more than one model. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31123 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -66,25 +66,26 @@ TableModel::~TableModel()
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
bool
|
||||
TableModel::AddListener(TableModelListener* listener)
|
||||
{
|
||||
fListeners.Add(listener);
|
||||
return fListeners.AddItem(listener);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
TableModel::RemoveListener(TableModelListener* listener)
|
||||
{
|
||||
fListeners.Remove(listener);
|
||||
fListeners.RemoveItem(listener);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
TableModel::NotifyRowsAdded(int32 rowIndex, int32 count)
|
||||
{
|
||||
for (ListenerList::Iterator it = fListeners.GetIterator();
|
||||
TableModelListener* listener = it.Next();) {
|
||||
int32 listenerCount = fListeners.CountItems();
|
||||
for (int32 i = listenerCount - 1; i >= 0; i--) {
|
||||
TableModelListener* listener = fListeners.ItemAt(i);
|
||||
listener->TableRowsAdded(this, rowIndex, count);
|
||||
}
|
||||
}
|
||||
@@ -93,8 +94,9 @@ TableModel::NotifyRowsAdded(int32 rowIndex, int32 count)
|
||||
void
|
||||
TableModel::NotifyRowsRemoved(int32 rowIndex, int32 count)
|
||||
{
|
||||
for (ListenerList::Iterator it = fListeners.GetIterator();
|
||||
TableModelListener* listener = it.Next();) {
|
||||
int32 listenerCount = fListeners.CountItems();
|
||||
for (int32 i = listenerCount - 1; i >= 0; i--) {
|
||||
TableModelListener* listener = fListeners.ItemAt(i);
|
||||
listener->TableRowsRemoved(this, rowIndex, count);
|
||||
}
|
||||
}
|
||||
@@ -103,8 +105,9 @@ TableModel::NotifyRowsRemoved(int32 rowIndex, int32 count)
|
||||
void
|
||||
TableModel::NotifyRowsChanged(int32 rowIndex, int32 count)
|
||||
{
|
||||
for (ListenerList::Iterator it = fListeners.GetIterator();
|
||||
TableModelListener* listener = it.Next();) {
|
||||
int32 listenerCount = fListeners.CountItems();
|
||||
for (int32 i = listenerCount - 1; i >= 0; i--) {
|
||||
TableModelListener* listener = fListeners.ItemAt(i);
|
||||
listener->TableRowsChanged(this, rowIndex, count);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ class Table;
|
||||
class TableModel;
|
||||
|
||||
|
||||
class TableModelListener : public DoublyLinkedListLinkImpl<TableModelListener> {
|
||||
class TableModelListener {
|
||||
public:
|
||||
virtual ~TableModelListener();
|
||||
|
||||
@@ -42,11 +42,11 @@ public:
|
||||
virtual bool GetValueAt(int32 rowIndex, int32 columnIndex,
|
||||
Variant& value) = 0;
|
||||
|
||||
virtual void AddListener(TableModelListener* listener);
|
||||
virtual bool AddListener(TableModelListener* listener);
|
||||
virtual void RemoveListener(TableModelListener* listener);
|
||||
|
||||
protected:
|
||||
typedef DoublyLinkedList<TableModelListener> ListenerList;
|
||||
typedef BObjectList<TableModelListener> ListenerList;
|
||||
|
||||
protected:
|
||||
void NotifyRowsAdded(int32 rowIndex, int32 count);
|
||||
|
||||
Reference in New Issue
Block a user