From 1d897b8a54ff6be1804751a6fc1d48b124475524 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Wed, 15 May 2013 20:12:28 -0400 Subject: [PATCH] Remove NotifyNodesCleared() again. - For various reasons this one can be error prone, since it relies on the model being able to provide the correct row count, which won't be the case if the subclass calls it after having already removed all its nodes. - Optimize Table's RowsRemoved() similarly to TreeTable's for the remove all rows case. --- src/apps/debuganalyzer/gui/table/Table.cpp | 17 ++++++----------- src/apps/debuganalyzer/gui/table/Table.h | 1 - src/apps/debuganalyzer/gui/table/TreeTable.cpp | 12 ------------ src/apps/debuganalyzer/gui/table/TreeTable.h | 1 - 4 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/apps/debuganalyzer/gui/table/Table.cpp b/src/apps/debuganalyzer/gui/table/Table.cpp index 36d3122ec9..2eb7b93cc3 100644 --- a/src/apps/debuganalyzer/gui/table/Table.cpp +++ b/src/apps/debuganalyzer/gui/table/Table.cpp @@ -124,17 +124,6 @@ TableModel::NotifyRowsChanged(int32 rowIndex, int32 count) } -void -TableModel::NotifyRowsCleared() -{ - int32 listenerCount = fListeners.CountItems(); - for (int32 i = listenerCount - 1; i >= 0; i--) { - TableModelListener* listener = fListeners.ItemAt(i); - listener->TableRowsRemoved(this, 0, CountRows()); - } -} - - void TableModel::NotifyTableModelReset() { @@ -644,6 +633,12 @@ Table::TableRowsAdded(TableModel* model, int32 rowIndex, int32 count) void Table::TableRowsRemoved(TableModel* model, int32 rowIndex, int32 count) { + if (rowIndex == 0 && count == fRows.CountItems()) { + fRows.MakeEmpty(); + Clear(); + return; + } + for (int32 i = rowIndex + count - 1; i >= rowIndex; i--) { if (BRow* row = fRows.RemoveItemAt(i)) { RemoveRow(row); diff --git a/src/apps/debuganalyzer/gui/table/Table.h b/src/apps/debuganalyzer/gui/table/Table.h index da45b3f087..99abf6853e 100644 --- a/src/apps/debuganalyzer/gui/table/Table.h +++ b/src/apps/debuganalyzer/gui/table/Table.h @@ -52,7 +52,6 @@ protected: void NotifyRowsAdded(int32 rowIndex, int32 count); void NotifyRowsRemoved(int32 rowIndex, int32 count); void NotifyRowsChanged(int32 rowIndex, int32 count); - void NotifyRowsCleared(); void NotifyTableModelReset(); protected: diff --git a/src/apps/debuganalyzer/gui/table/TreeTable.cpp b/src/apps/debuganalyzer/gui/table/TreeTable.cpp index bcef139d95..c69149ed9b 100644 --- a/src/apps/debuganalyzer/gui/table/TreeTable.cpp +++ b/src/apps/debuganalyzer/gui/table/TreeTable.cpp @@ -233,18 +233,6 @@ TreeTableModel::NotifyNodesChanged(const TreeTablePath& path, int32 childIndex, } -void -TreeTableModel::NotifyNodesCleared() -{ - int32 listenerCount = fListeners.CountItems(); - for (int32 i = listenerCount - 1; i >= 0; i--) { - TreeTableModelListener* listener = fListeners.ItemAt(i); - listener->TableNodesRemoved(this, TreeTablePath(), 0, - CountChildren(Root())); - } -} - - void TreeTableModel::NotifyTableModelReset() { diff --git a/src/apps/debuganalyzer/gui/table/TreeTable.h b/src/apps/debuganalyzer/gui/table/TreeTable.h index 138d4cf84a..81d8924a7a 100644 --- a/src/apps/debuganalyzer/gui/table/TreeTable.h +++ b/src/apps/debuganalyzer/gui/table/TreeTable.h @@ -94,7 +94,6 @@ protected: int32 childIndex, int32 count); void NotifyNodesChanged(const TreeTablePath& path, int32 childIndex, int32 count); - void NotifyNodesCleared(); void NotifyTableModelReset(); protected: