فهرست منبع

Shader Debugger: Highlight current instruction instead of focusing

This avoid some annoying focus stealing in some situations, and looks
nicer in general.
Yuri Kunde Schlesner 11 سال پیش
والد
کامیت
2bdf9ede91
1فایلهای تغییر یافته به همراه15 افزوده شده و 4 حذف شده
  1. 15 4
      src/citra_qt/debugger/graphics_vertex_shader.cpp

+ 15 - 4
src/citra_qt/debugger/graphics_vertex_shader.cpp

@@ -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);
 }