The problem here is in a bad interpretation by Scintilla of painting parameters. When the character is added, that line needs to be painted so is invalidated. When the marker is changed, the whole margin is invalidated leading to an update region that looks like http://scintilla.sourceforge.net/TShaped.png Inside the paint function, the lexer is called and the range with style changed is checked to see that it is all being painted. If it is not then the whole window is redrawn. However, this check looks at the rcPaint field of the paint structure which is the bounding rectangle of the whole T-shaped update region so is the whole window. Therefore the check thinks the non-blue areas are already being painted so doesn't trigger a big redraw. http://scintilla.sourceforge.net/NotAllDone.png
You should get correct drawing if you redraw the whole window after adding the marker with a call to InvalidateRect on the window with a NULL rectangle and FALSE for the bErase parameter. The bug can be hidden a bit for your issue by changing the marker setting code to only invalidate the line gaining the marker leading to a simple update region of just the line. This bug will recur in other circumstances. Its a tricky problem as not all platforms provide the same access to the update region or set of operations on regions. Neil _______________________________________________ Scintilla-interest mailing list [email protected] http://mailman.lyra.org/mailman/listinfo/scintilla-interest
