From 551a8ab98dfffa718374fbbf2e575006df29d273 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 13 Mar 2013 09:38:48 +1100 Subject: Add different types of task to StyleNeeded mechanism, renaming to WorkNeeded. Ask to perform update UI work for some selection moves. --- src/Editor.cxx | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src/Editor.cxx') diff --git a/src/Editor.cxx b/src/Editor.cxx index 5ce531787..f2a6a1f62 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -782,6 +782,7 @@ void Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition ancho if (highlightDelimiter.NeedsDrawing(currentLine)) { RedrawSelMargin(); } + QueueIdleWork(WorkNeeded::workUpdateUI); } void Editor::SetSelection(int currentPos_, int anchor_) { @@ -808,6 +809,7 @@ void Editor::SetSelection(SelectionPosition currentPos_) { if (highlightDelimiter.NeedsDrawing(currentLine)) { RedrawSelMargin(); } + QueueIdleWork(WorkNeeded::workUpdateUI); } void Editor::SetSelection(int currentPos_) { @@ -828,6 +830,7 @@ void Editor::SetEmptySelection(SelectionPosition currentPos_) { if (highlightDelimiter.NeedsDrawing(currentLine)) { RedrawSelMargin(); } + QueueIdleWork(WorkNeeded::workUpdateUI); } void Editor::SetEmptySelection(int currentPos_) { @@ -4641,18 +4644,13 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) { } } - //Platform::DebugPrintf("** %x Doc Changed\n", this); - // TODO: could invalidate from mh.startModification to end of screen - //InvalidateRange(mh.position, mh.position + mh.length); if (paintState == notPainting && !CanDeferToLastStep(mh)) { - QueueStyling(pdoc->Length()); + QueueIdleWork(WorkNeeded::workStyle, pdoc->Length()); Redraw(); } } else { - //Platform::DebugPrintf("** %x Line Changed %d .. %d\n", this, - // mh.position, mh.position + mh.length); if (paintState == notPainting && mh.length && !CanEliminate(mh)) { - QueueStyling(mh.position + mh.length); + QueueIdleWork(WorkNeeded::workStyle, mh.position + mh.length); InvalidateRange(mh.position, mh.position + mh.length); } } @@ -6719,14 +6717,15 @@ void Editor::StyleToPositionInView(Position pos) { void Editor::IdleStyling() { // Style the line after the modification as this allows modifications that change just the // line of the modification to heal instead of propagating to the rest of the window. - StyleToPositionInView(pdoc->LineStart(pdoc->LineFromPosition(styleNeeded.upTo) + 2)); + if (workNeeded.items & WorkNeeded::workStyle) + StyleToPositionInView(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2)); NotifyUpdateUI(); - styleNeeded.Reset(); + workNeeded.Reset(); } -void Editor::QueueStyling(int upTo) { - styleNeeded.NeedUpTo(upTo); +void Editor::QueueIdleWork(WorkNeeded::workItems items, int upTo) { + workNeeded.Need(items, upTo); } bool Editor::PaintContains(PRectangle rc) { -- cgit v1.2.3