diff -r b0ac30ba7eaf -r fd7c9a7cf882 editors/TextViewer.py --- a/editors/TextViewer.py Wed Apr 24 18:34:00 2013 +0900 +++ b/editors/TextViewer.py Wed Apr 24 17:37:46 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() @@ -764,6 +769,9 @@ self.RefreshModel() self.RefreshBuffer() + def Search(self, criteria): + return self.Controler.SearchInPou(self.TagName, criteria, self.Debug) + def Find(self, direction, search_params): if self.SearchParams != search_params: self.ClearHighlights(SEARCH_RESULT_HIGHLIGHT) @@ -779,7 +787,8 @@ self.SearchResults = [ (infos[1:], start, end, SEARCH_RESULT_HIGHLIGHT) for infos, start, end, text in - self.Controler.SearchInPou(self.TagName, criteria, self.Debug)] + self.Search(criteria)] + self.CurrentFindHighlight = None if len(self.SearchResults) > 0: if self.CurrentFindHighlight is not None: @@ -801,6 +810,8 @@ self.RemoveHighlight(*self.CurrentFindHighlight) self.CurrentFindHighlight = None + print self.CurrentFindHighlight + def RefreshModel(self): self.RefreshJumpList() self.Controler.SetEditedElementText(self.TagName, self.GetText())