From 2bdf9ede9195ab99252094b6a04cab8eebdaafcc Mon Sep 17 00:00:00 2001
From: Yuri Kunde Schlesner <yuriks@yuriks.net>
Date: Tue, 25 Aug 2015 06:45:29 -0300
Subject: [PATCH] Shader Debugger: Highlight current instruction instead of
 focusing

This avoid some annoying focus stealing in some situations, and looks
nicer in general.
---
 .../debugger/graphics_vertex_shader.cpp       | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/citra_qt/debugger/graphics_vertex_shader.cpp b/src/citra_qt/debugger/graphics_vertex_shader.cpp
index 64a3569d45..f01be71ccb 100644
--- a/src/citra_qt/debugger/graphics_vertex_shader.cpp
+++ b/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);
 }