editors/TextViewer.py
changeset 1060 ac9896336b90
parent 1057 3837e165b3f9
child 1065 36b7ce528911
--- a/editors/TextViewer.py	Wed Apr 24 09:30:10 2013 +0200
+++ b/editors/TextViewer.py	Wed Apr 24 10:03:47 2013 +0200
@@ -80,6 +80,8 @@
 }
 
 def GetCursorPos(old, new):
+    if old == "":
+        return 0
     old_length = len(old)
     new_length = len(new)
     common_length = min(old_length, new_length)
@@ -445,17 +447,20 @@
             self.ResetBuffer()
             self.DisableEvents = True
             old_cursor_pos = self.GetCurrentPos()
+            line = self.Editor.GetFirstVisibleLine()
+            column = self.Editor.GetXOffset()
             old_text = self.GetText()
             new_text = self.Controler.GetEditedElementText(self.TagName, self.Debug)
-            self.SetText(new_text)
-            new_cursor_pos = GetCursorPos(old_text, new_text)
-            if new_cursor_pos != None:
-                self.Editor.GotoPos(new_cursor_pos)
-            else:
-                self.Editor.GotoPos(old_cursor_pos)
-            self.Editor.ScrollToColumn(0)
-            self.RefreshJumpList()
-            self.Editor.EmptyUndoBuffer()
+            if old_text != new_text:
+                self.SetText(new_text)
+                new_cursor_pos = GetCursorPos(old_text, new_text)
+                self.Editor.LineScroll(column, line)
+                if new_cursor_pos != None:
+                    self.Editor.GotoPos(new_cursor_pos)
+                else:
+                    self.Editor.GotoPos(old_cursor_pos)
+                self.RefreshJumpList()
+                self.Editor.EmptyUndoBuffer()
             self.DisableEvents = False
             
             self.RefreshVariableTree()