18c025f21f
Add m_hasPendingItemUpdates to VIEW so UpdateItems() can return immediately when no item has queued update flags. The flag is set wherever m_requiredUpdate is modified and cleared at the end of UpdateItems(). In DoRePaint(), check the new flag alongside IsDirty() and cursor movement to skip both item processing and the GL draw cycle when nothing has changed. Route onPaint through Refresh() so the existing frame-rate throttle applies to native paint events as well.