Skip to content
Permalink
Browse files
Merge pull request #11623 from AdmiralCurtiss/watch-window-workaround
Qt/WatchWidget: Don't update if not paused.
  • Loading branch information
AdmiralCurtiss committed Mar 7, 2023
2 parents 0461fae + 6d38dd9 commit ff265b6
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 16 deletions.
@@ -85,6 +85,16 @@ void WatchWidget::CreateWidgets()
m_table->setContextMenuPolicy(Qt::CustomContextMenu);
m_table->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_table->setSelectionBehavior(QAbstractItemView::SelectRows);
m_table->setHorizontalHeaderLabels(
{tr("Label"), tr("Address"), tr("Hexadecimal"),
// i18n: The base 10 numeral system. Not related to non-integer numbers
tr("Decimal"),
// i18n: Data type used in computing
tr("String"),
// i18n: Floating-point (non-integer) number
tr("Float"), tr("Locked")});
m_table->setRowCount(1);
SetEmptyRow(0);

m_new = m_toolbar->addAction(tr("New"), this, &WatchWidget::OnNewWatch);
m_delete = m_toolbar->addAction(tr("Delete"), this, &WatchWidget::OnDelete);
@@ -146,22 +156,21 @@ void WatchWidget::Update()

m_updating = true;

m_table->clear();
if (Core::GetState() != Core::State::Paused)
{
m_table->setDisabled(true);
m_updating = false;
return;
}

int size = static_cast<int>(PowerPC::debug_interface.GetWatches().size());
m_table->setDisabled(false);
m_table->clearContents();

m_table->setRowCount(size + 1);
Core::CPUThreadGuard guard;

m_table->setHorizontalHeaderLabels(
{tr("Label"), tr("Address"), tr("Hexadecimal"),
// i18n: The base 10 numeral system. Not related to non-integer numbers
tr("Decimal"),
// i18n: Data type used in computing
tr("String"),
// i18n: Floating-point (non-integer) number
tr("Float"), tr("Locked")});
int size = static_cast<int>(PowerPC::debug_interface.GetWatches().size());

Core::CPUThreadGuard guard;
m_table->setRowCount(size + 1);

for (int i = 0; i < size; i++)
{
@@ -211,19 +220,24 @@ void WatchWidget::Update()
}
}

SetEmptyRow(size);

m_updating = false;
}

void WatchWidget::SetEmptyRow(int row)
{
auto* label = new QTableWidgetItem;
label->setData(Qt::UserRole, -1);

m_table->setItem(size, 0, label);
m_table->setItem(row, 0, label);

for (int i = 1; i < NUM_COLUMNS; i++)
{
auto* no_edit = new QTableWidgetItem;
no_edit->setFlags(Qt::ItemIsEnabled);
m_table->setItem(size, i, no_edit);
m_table->setItem(row, i, no_edit);
}

m_updating = false;
}

void WatchWidget::closeEvent(QCloseEvent*)
@@ -48,6 +48,7 @@ class WatchWidget : public QDockWidget

void UpdateButtonsEnabled();
void Update();
void SetEmptyRow(int row);

void ShowContextMenu();
void OnItemChanged(QTableWidgetItem* item);

0 comments on commit ff265b6

Please sign in to comment.