From 36747de2c73d3c11e30abd7b371cc5a5cf91a331 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Thu, 14 Mar 2019 21:43:34 +0100 Subject: Fix nested calls of setCurrentIndex which caused breakage. ProgramTableView::focus_address() calls QAbstractItemView::setCurrentIndex(). verticalScrollBar() value is updated as result of current row change. This emits signal valueChanged which is connected to ProgramTableView::adjust_scroll_pos(). It checks if the limit of range covered by actual model and row to address offset is reached. If the top or bottom 1/8 of range is reached then model needs to be adjusted to cover continuation area. Model shift requires update of the current row to stay on the same address even that row 0 address offset is changed. This model shifting is required because range of scroll is only signed integer and QTableView is even more limited in row count to work reliably. Signed-off-by: Pavel Pisa --- qtmips_gui/programmodel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'qtmips_gui/programmodel.h') diff --git a/qtmips_gui/programmodel.h b/qtmips_gui/programmodel.h index 9beecef..f5159af 100644 --- a/qtmips_gui/programmodel.h +++ b/qtmips_gui/programmodel.h @@ -53,7 +53,7 @@ public: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; Qt::ItemFlags flags(const QModelIndex &index) const; bool setData(const QModelIndex & index, const QVariant & value, int role); - bool adjustRowAndOffset(int &row, int optimal_row, std::uint32_t address); + bool adjustRowAndOffset(int &row, std::uint32_t address); void update_all(); inline const QFont *getFont() const { -- cgit v1.2.3