Shader Debugger: Highlight current instruction instead of focusing
This avoid some annoying focus stealing in some situations, and looks nicer in general.
This commit is contained in:
parent
2c98275b51
commit
2bdf9ede91
|
@ -292,12 +292,23 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con
|
|||
return GetMonospaceFont();
|
||||
|
||||
case Qt::BackgroundRole:
|
||||
// Highlight instructions which have no debug data associated to them
|
||||
{
|
||||
// Highlight current instruction
|
||||
int current_record_index = par->cycle_index->value();
|
||||
if (current_record_index < par->debug_data.records.size()) {
|
||||
const auto& current_record = par->debug_data.records[current_record_index];
|
||||
if (index.row() == current_record.instruction_offset) {
|
||||
return QColor(255, 255, 63);
|
||||
}
|
||||
}
|
||||
|
||||
// Use a grey background for instructions which have no debug data associated to them
|
||||
for (const auto& record : par->debug_data.records)
|
||||
if (index.row() == record.instruction_offset)
|
||||
return QVariant();
|
||||
|
||||
return QBrush(QColor(255, 255, 127));
|
||||
return QBrush(QColor(192, 192, 192));
|
||||
}
|
||||
|
||||
|
||||
// TODO: Draw arrows for each "reachable" instruction to visualize control flow
|
||||
|
@ -546,8 +557,8 @@ void GraphicsVertexShaderWidget::OnCycleIndexChanged(int index) {
|
|||
|
||||
instruction_description->setText(text);
|
||||
|
||||
// Scroll to current instruction
|
||||
// Emit model update notification and scroll to current instruction
|
||||
QModelIndex instr_index = model->index(record.instruction_offset, 0);
|
||||
binary_list->selectionModel()->select(instr_index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
|
||||
emit model->dataChanged(instr_index, model->index(record.instruction_offset, model->columnCount()));
|
||||
binary_list->scrollTo(instr_index, QAbstractItemView::EnsureVisible);
|
||||
}
|
||||
|
|
Reference in New Issue