src/Tools/jEdit/src/jedit/TheoryView.scala
changeset 34515 3be515f1379d
parent 34514 2104a836b415
child 34517 163cda249619
equal deleted inserted replaced
34514:2104a836b415 34515:3be515f1379d
    76 
    76 
    77 
    77 
    78   private var col: Text.Changed = null
    78   private var col: Text.Changed = null
    79 
    79 
    80   private val col_timer = new Timer(300, new ActionListener() {
    80   private val col_timer = new Timer(300, new ActionListener() {
    81     override def actionPerformed(e: ActionEvent) = commit()
    81     override def actionPerformed(e: ActionEvent) = commit
    82   })
    82   })
    83 
    83 
    84   col_timer.stop
    84   col_timer.stop
    85   col_timer.setRepeats(true)
    85   col_timer.setRepeats(true)
    86 
    86 
   170     val start = text_area.offsetToXY(begin)
   170     val start = text_area.offsetToXY(begin)
   171     val stop =
   171     val stop =
   172       if (finish < buffer.getLength) text_area.offsetToXY(finish)
   172       if (finish < buffer.getLength) text_area.offsetToXY(finish)
   173       else {
   173       else {
   174         val p = text_area.offsetToXY(finish - 1)
   174         val p = text_area.offsetToXY(finish - 1)
   175         p.x = p.x + text_area.getPainter.getFontMetrics.charWidth(' ')
   175         val metrics = text_area.getPainter.getFontMetrics
       
   176         p.x = p.x + (metrics.charWidth(' ') max metrics.getMaxAdvance)
   176         p
   177         p
   177       }
   178       }
   178 
   179 
   179     if (start != null && stop != null) {
   180     if (start != null && stop != null) {
   180       gfx.setColor(color)
   181       gfx.setColor(color)
   223   val changes = new EventBus[Text.Changed]
   224   val changes = new EventBus[Text.Changed]
   224 
   225 
   225 
   226 
   226   /* BufferListener methods */
   227   /* BufferListener methods */
   227 
   228 
   228   private def commit() {
   229   private def commit {
   229     if (col != null)
   230     if (col != null)
   230       changes.event(col)
   231       changes.event(col)
   231     col = null
   232     col = null
   232     if (col_timer.isRunning())
   233     if (col_timer.isRunning())
   233       col_timer.stop()
   234       col_timer.stop()
   234   }
   235   }
   235 
   236 
   236   private def delay_commit() {
   237   private def delay_commit {
   237     if (col_timer.isRunning())
   238     if (col_timer.isRunning())
   238       col_timer.restart()
   239       col_timer.restart()
   239     else
   240     else
   240       col_timer.start()
   241       col_timer.start()
   241   }
   242   }
   253     if (col == null)
   254     if (col == null)
   254       col = new Text.Changed(offset, length, 0)
   255       col = new Text.Changed(offset, length, 0)
   255     else if (col.start <= offset && offset <= col.start + col.added)
   256     else if (col.start <= offset && offset <= col.start + col.added)
   256       col = new Text.Changed(col.start, col.added + length, col.removed)
   257       col = new Text.Changed(col.start, col.added + length, col.removed)
   257     else {
   258     else {
   258       commit()
   259       commit
   259       col = new Text.Changed(offset, length, 0)
   260       col = new Text.Changed(offset, length, 0)
   260     }
   261     }
   261     delay_commit()
   262     delay_commit
   262   }
   263   }
   263 
   264 
   264   override def preContentRemoved(buffer: JEditBuffer,
   265   override def preContentRemoved(buffer: JEditBuffer,
   265     start_line: Int, start: Int, num_lines: Int, removed: Int) =
   266     start_line: Int, start: Int, num_lines: Int, removed: Int) =
   266   {
   267   {
   267     if (col == null)
   268     if (col == null)
   268       col = new Text.Changed(start, 0, removed)
   269       col = new Text.Changed(start, 0, removed)
   269     else if (col.start > start + removed || start > col.start + col.added) {
   270     else if (col.start > start + removed || start > col.start + col.added) {
   270       commit()
   271       commit
   271       col = new Text.Changed(start, 0, removed)
   272       col = new Text.Changed(start, 0, removed)
   272     }
   273     }
   273     else {
   274     else {
   274       val offset = start - col.start
   275       val offset = start - col.start
   275       val diff = col.added - removed
   276       val diff = col.added - removed
   278           (offset max 0, diff - (offset max 0))
   279           (offset max 0, diff - (offset max 0))
   279         else
   280         else
   280           (diff - (offset min 0), offset min 0)
   281           (diff - (offset min 0), offset min 0)
   281       col = new Text.Changed(start min col.start, added, col.removed - add_removed)
   282       col = new Text.Changed(start min col.start, added, col.removed - add_removed)
   282     }
   283     }
   283     delay_commit()
   284     delay_commit
   284   }
   285   }
   285 
   286 
   286   override def bufferLoaded(buffer: JEditBuffer) { }
   287   override def bufferLoaded(buffer: JEditBuffer) { }
   287   override def foldHandlerChanged(buffer: JEditBuffer) { }
   288   override def foldHandlerChanged(buffer: JEditBuffer) { }
   288   override def foldLevelChanged(buffer: JEditBuffer, start_line: Int, end_line: Int) { }
   289   override def foldLevelChanged(buffer: JEditBuffer, start_line: Int, end_line: Int) { }