diff options
Diffstat (limited to 'src/Editor.h')
| -rw-r--r-- | src/Editor.h | 23 | 
1 files changed, 16 insertions, 7 deletions
diff --git a/src/Editor.h b/src/Editor.h index 553cbeec0..bc7babb13 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -47,21 +47,30 @@ public:  /**   * When platform has a way to generate an event before painting, - * accumulate needed styling range in StyleNeeded to avoid unnecessary work. + * accumulate needed styling range and other work items in  + * WorkNeeded to avoid unnecessary work inside paint handler   */ -class StyleNeeded { +class WorkNeeded {  public: +	enum workItems { +		workNone=0, +		workStyle=1, +		workUpdateUI=2 +	};  	bool active; +	enum workItems items;  	Position upTo; -	StyleNeeded() : active(false), upTo(0) {} +	WorkNeeded() : active(false), items(workNone), upTo(0) {}  	void Reset() {  		active = false; +		items = workNone;  		upTo = 0;  	} -	void NeedUpTo(Position pos) { -		if (upTo < pos) +	void Need(workItems items_, Position pos) { +		if ((items_ & workStyle) && (upTo < pos))  			upTo = pos; +		items = static_cast<workItems>(items | items_);  	}  }; @@ -241,7 +250,7 @@ protected:	// ScintillaBase subclass needs access to much of Editor  	PRectangle rcPaint;  	bool paintingAllText;  	bool willRedrawAll; -	StyleNeeded styleNeeded; +	WorkNeeded workNeeded;  	int modEventMask; @@ -532,7 +541,7 @@ protected:	// ScintillaBase subclass needs access to much of Editor  	int PositionAfterArea(PRectangle rcArea);  	void StyleToPositionInView(Position pos);  	void IdleStyling(); -	virtual void QueueStyling(int upTo); +	virtual void QueueIdleWork(WorkNeeded::workItems items, int upTo=0);  	virtual bool PaintContains(PRectangle rc);  	bool PaintContainsMargin();  | 
