Hi,

While debugging the view was not following the current
line of code, now with the following patch it's the case.

Gwen

>From b07ddbd6919511d0c094f156070e9338c248c856 Mon Sep 17 00:00:00 2001
From: Gwenael Casaccio <[email protected]>
Date: Tue, 20 Aug 2013 14:23:52 +0200
Subject: [PATCH 09/12] Center the view, highlight the current line of code and
 add a missing extension

---
 packages/visualgst/ChangeLog               |  6 ++++++
 packages/visualgst/Debugger/Extensions.st  | 10 ++++++++++
 packages/visualgst/Debugger/GtkDebugger.st |  9 +++++++--
 packages/visualgst/Text/GtkTextWidget.st   | 10 ++++++++++
 4 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/packages/visualgst/ChangeLog b/packages/visualgst/ChangeLog
index 1bc08ba..b2b8f6f 100644
--- a/packages/visualgst/ChangeLog
+++ b/packages/visualgst/ChangeLog
@@ -1,3 +1,9 @@
+2013-06-18  Gwenael Casaccio  <[email protected]>
+
+	* Debugger/Extensions.st: Add missing debugger extension.
+	* Debugger/GtkDebugger.st: Center the view and select one line.
+	* Text/GtkTextWidget.st: Center the view.
+
 2013-06-18  Gwenael Casaccio  <[email protected]>
 
 	* Debugger/GtkDebugger.st: Don't use previous debugger extensions.
diff --git a/packages/visualgst/Debugger/Extensions.st b/packages/visualgst/Debugger/Extensions.st
index 50eaa39..486707c 100644
--- a/packages/visualgst/Debugger/Extensions.st
+++ b/packages/visualgst/Debugger/Extensions.st
@@ -41,3 +41,13 @@ Behavior extend [
         ^ VisualGST.GtkDebugger
     ]
 ]
+
+Debugger extend [
+
+    receiver [
+        <category: '*VisualGST-debugger'>
+
+        ^ self suspendedContext receiver
+    ]
+]
+
diff --git a/packages/visualgst/Debugger/GtkDebugger.st b/packages/visualgst/Debugger/GtkDebugger.st
index 7a79744..48d0869 100644
--- a/packages/visualgst/Debugger/GtkDebugger.st
+++ b/packages/visualgst/Debugger/GtkDebugger.st
@@ -297,11 +297,16 @@ GtkBrowsingTool subclass: GtkDebugger [
     contextChanged [
 	<category: 'context events'>
 
-	| iter |
 	self checkCodeWidgetAndUpdate: [
+            | line |
 	    contextWidget hasSelectedContext ifFalse: [ ^ self ].
 	    codeWidget source: (BrowserMethodSource on: contextWidget selectedContext method).
-	    codeWidget applyTag: #debug forLine: contextWidget selectedContext currentLine.
+            contextWidget selectedContext currentLine ~= 0 
+                ifTrue: [ line := contextWidget selectedContext currentLine ]
+                ifFalse: [ line := 1 ].
+            codeWidget 
+                applyTag: #debug forLine: line;
+                centerViewAtLine: line.
 	    self updateInspectorWidget: contextWidget selectedContext ]
     ]
 
diff --git a/packages/visualgst/Text/GtkTextWidget.st b/packages/visualgst/Text/GtkTextWidget.st
index d1a2998..0036562 100644
--- a/packages/visualgst/Text/GtkTextWidget.st
+++ b/packages/visualgst/Text/GtkTextWidget.st
@@ -363,6 +363,16 @@ GtkConcreteWidget subclass: GtkTextWidget [
 	self buffer selectRange: start bound: end
     ]
 
+    centerViewAtLine: anInteger [
+        <category: 'view'>
+
+        | mark iter |
+        iter := self buffer getIterAtLine: anInteger.
+        mark := GTK.GtkTextMark new: nil leftGravity: false.
+        self buffer addMark: mark where: iter.
+        textWidget scrollMarkOnscreen: mark.
+    ]
+
     beforeEvaluation [
         <category: 'smalltalk event'>
     ]
-- 
1.8.1.2

_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to