diff --git a/specter/include/Specter/Table.hpp b/specter/include/Specter/Table.hpp index 2f05cad35..afcfa88d6 100644 --- a/specter/include/Specter/Table.hpp +++ b/specter/include/Specter/Table.hpp @@ -110,6 +110,7 @@ class Table : public View } m_rowsView; bool m_headerNeedsUpdate = false; + bool m_inSelectRow = false; public: Table(ViewResources& res, View& parentView, ITableDataBinding* data, diff --git a/specter/lib/Table.cpp b/specter/lib/Table.cpp index 639a920d8..1bd099100 100644 --- a/specter/lib/Table.cpp +++ b/specter/lib/Table.cpp @@ -240,13 +240,19 @@ void Table::cycleSortColumn(size_t c) void Table::selectRow(size_t r) { + if (m_inSelectRow) + return; if (r >= m_rows && r != -1) Log.report(LogVisor::FatalError, "selectRow out of bounds (%" PRISize ", %" PRISize ")", r, m_rows); if (r == m_selectedRow) { if (m_state) + { + m_inSelectRow = true; m_state->setSelectedRow(r); + m_inSelectRow = false; + } return; } if (m_selectedRow != -1) @@ -266,7 +272,11 @@ void Table::selectRow(size_t r) } updateSize(); if (m_state) + { + m_inSelectRow = true; m_state->setSelectedRow(r); + m_inSelectRow = false; + } } void Table::setMultiplyColor(const Zeus::CColor& color)