diff --git a/uppsrc/CtrlCore/CtrlCore.h b/uppsrc/CtrlCore/CtrlCore.h index d43d6fab6..405654f9c 100644 --- a/uppsrc/CtrlCore/CtrlCore.h +++ b/uppsrc/CtrlCore/CtrlCore.h @@ -688,7 +688,6 @@ private: void CtrlPaint(SystemDraw& w, const Rect& clip); void RemoveFullRefresh(); static void FullRefreshCleanup(); - bool PaintOpaqueAreas(SystemDraw& w, const Rect& r, const Rect& clip, bool nochild = false); void GatherTransparentAreas(Vector& area, SystemDraw& w, Rect r, const Rect& clip); void ExcludeDHCtrls(SystemDraw& w, const Rect& r, const Rect& clip); void UpdateArea0(SystemDraw& draw, const Rect& clip, int backpaint); diff --git a/uppsrc/CtrlCore/CtrlDraw.cpp b/uppsrc/CtrlCore/CtrlDraw.cpp index c01136a7e..358ea4cfa 100644 --- a/uppsrc/CtrlCore/CtrlDraw.cpp +++ b/uppsrc/CtrlCore/CtrlDraw.cpp @@ -372,71 +372,11 @@ void ShowRepaintRect(SystemDraw& w, const Rect& r, Color c) } } -bool Ctrl::PaintOpaqueAreas(SystemDraw& w, const Rect& r, const Rect& clip, bool nochild) -{ - GuiLock __; - LTIMING("PaintOpaqueAreas"); - if(!IsShown() || r.IsEmpty() || !r.Intersects(clip) || !w.IsPainting(r)) - return true; - Point off = r.TopLeft(); - Point viewpos = off + GetView().TopLeft(); - if(backpaint == EXCLUDEPAINT) - return w.ExcludeClip(r); - Rect cview = clip & (GetView() + off); - for(Ctrl& q : *this) - if(!q.PaintOpaqueAreas(w, q.GetRect() + (q.InView() ? viewpos : off), - q.InView() ? cview : clip)) - return false; - if(nochild && (GetLastChild() || GetNext())) - return true; - Rect opaque = (GetOpaqueRect() + viewpos) & clip; - if(opaque.IsEmpty()) - return true; -#ifdef SYSTEMDRAW - if(backpaint == FULLBACKPAINT && !dynamic_cast(&w)) -#else - if(backpaint == FULLBACKPAINT && !w.IsBack()) -#endif - { - ShowRepaintRect(w, opaque, LtRed()); - BackDraw bw; - bw.Create(w, opaque.GetSize()); - bw.Offset(viewpos - opaque.TopLeft()); - bw.SetPaintingDraw(w, opaque.TopLeft()); - { - LEVELCHECK(bw, this); - Paint(bw); - PaintCaret(bw); - DOLEVELCHECK; - } - bw.Put(w, opaque.TopLeft()); - } - else { - w.Clip(opaque); - ShowRepaintRect(w, opaque, Green()); - w.Offset(viewpos); - { - LEVELCHECK(w, this); - Paint(w); - PaintCaret(w); - DOLEVELCHECK; - } - w.End(); - w.End(); - } - LLOG("Exclude " << opaque); - return w.ExcludeClip(opaque); -} - -inline int Area(const Rect& r) -{ - return r.GetHeight() * r.GetWidth(); -} - void CombineArea(Vector& area, const Rect& r) { LTIMING("CombineArea"); if(r.IsEmpty()) return; + auto Area = [](const Rect& r) { return r.GetHeight() * r.GetWidth(); }; int ra = Area(r); for(int i = 0; i < area.GetCount(); i++) { Rect ur = r | area[i];