Hi, Iâve been playing a bit today with something that is puzzling me and I need some more eyes in what Iâm doing, because it might be that Iâm understanding everything wrong⦠but if not, then, huston, we have a bug. So, play with me⦠you need to create this: SystemWindow subclass: #XSystemWindow instanceVariableNames: 'iteration' classVariableNames: '' package: âXXX' XSystemWindow>>initialize super initialize. iteration := 0. XSystemWindow>>drawOn: aCanvas âDo not use transcript because it does even more crazy stuff" Stdio stdout << (iteration := iteration + 1) asString; cr; lf. super drawOn: aCanvas Then execute this in a playground: XSystemWindow new addMorph: (RubScrolledTextModel new newScrolledText) fullFrame: LayoutFrame identity; openInWorld. and then you can watch in your stdout how full window redraws with cursor blinking (it stops when window loses focus). This happens because cursor is displayed with lapsus of 700ms and is just a draw of a line with a color who is set to itâs opposite each time. Then it does "color: shownColorâ and #color: sends #changed who finalise in #invalidRect. I always thought that this invalidation mechanism works by recording âdamaged areasâ, then collecting morphs with that area and triggering the redraw of that morph. With this in mind, cursor should trigger an invalidation of itâs own area (a small portion of the screen, as you can see). I could understand that a cursor triggers the text area redraw (but that would be a âdesign flawâ, IMO)⦠now, what I cannot understand is why blink a cursor triggers the redraw of a FULL WINDOW. When in Nautilus, that means each cursor blink triggers the redraw of one tree, four lists, some buttons and finally, the text area. IMO, this is not acceptable. What do you think? Esteban