QScintilla/Editor.py

branch
5_2_x
changeset 1997
e7627587db30
parent 1995
11f09fe72991
child 1998
7fc24c26f58f
diff -r 11f09fe72991 -r e7627587db30 QScintilla/Editor.py
--- a/QScintilla/Editor.py	Mon Jul 02 19:55:18 2012 +0200
+++ b/QScintilla/Editor.py	Sun Aug 12 13:20:29 2012 +0200
@@ -397,7 +397,7 @@
             self.__changeBreakPoints)
         self.breakpointModel.rowsInserted.connect(
             self.__addBreakPoints)
-        self.SCN_MODIFIED.connect(self.__modified)
+        self.linesChanged.connect(self.__linesChanged)
         
         # establish connection to some ViewManager action groups
         self.addActions(self.vm.editorActGrp.actions())
@@ -1802,37 +1802,26 @@
     ## Breakpoint handling methods below
     ############################################################################
 
-    def __modified(self, pos, mtype, text, length, linesAdded, line, foldNow, foldPrev,
-                     token, annotationLinesAdded):
-        """
-        Private method to handle changes of the number of lines.
-        
-        @param pos start position of change (integer)
-        @param mtype flags identifying the change (integer)
-        @param text text that is given to the Undo system (string)
-        @param length length of the change (integer)
-        @param linesAdded number of added/deleted lines (integer)
-        @param line line number of a fold level or marker change (integer)
-        @param foldNow new fold level (integer)
-        @param foldPrev previous fold level (integer)
-        @param token ???
-        @param annotationLinesAdded number of added/deleted annotation lines (integer)
-        """
-        if mtype & (self.SC_MOD_INSERTTEXT | self.SC_MOD_DELETETEXT) and \
-           linesAdded != 0:
-            if self.breaks:
-                bps = []    # list of breakpoints
-                for handle, (ln, cond, temp, enabled, ignorecount) in self.breaks.items():
-                    line = self.markerLine(handle) + 1
-                    if ln != line:
-                        bps.append((ln, line))
-                        self.breaks[handle] = (line, cond, temp, enabled, ignorecount)
-                self.inLinesChanged = True
-                for ln, line in sorted(bps, reverse=linesAdded > 0):
-                    index1 = self.breakpointModel.getBreakPointIndex(self.fileName, ln)
-                    index2 = self.breakpointModel.index(index1.row(), 1)
-                    self.breakpointModel.setData(index2, line)
-                self.inLinesChanged = False
+    def __linesChanged(self):
+        """
+        Private method to track text changes.
+        
+        This method checks, if lines have been inserted or removed in order to
+        update the breakpoints.
+        """
+        if self.breaks:
+            bps = []    # list of breakpoints
+            for handle, (ln, cond, temp, enabled, ignorecount) in self.breaks.items():
+                line = self.markerLine(handle) + 1
+                bps.append((ln, line, (cond, temp, enabled, ignorecount)))
+                self.markerDeleteHandle(handle)
+            self.breaks = {}
+            self.inLinesChanged = True
+            for bp in bps:
+                index = self.breakpointModel.getBreakPointIndex(self.fileName, bp[0])
+                self.breakpointModel.setBreakPointByIndex(index,
+                    self.fileName, bp[1], bp[2])
+            self.inLinesChanged = False
         
     def __restoreBreakpoints(self):
         """
@@ -1862,8 +1851,7 @@
         
         @param indexes indexes of changed breakpoints.
         """
-        if not self.inLinesChanged:
-            self.__addBreakPoints(QModelIndex(), startIndex.row(), endIndex.row())
+        self.__addBreakPoints(QModelIndex(), startIndex.row(), endIndex.row())
         
     def __breakPointDataAboutToBeChanged(self, startIndex, endIndex):
         """

eric ide

mercurial