Parcourir la source

fix perfomance -- Invalidate()/InvalidateRect() also fills the background, redraw the border when call InvalidateRect() is not required

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6444 8c9fc860-2736-0410-a75d-ab315db34111
eth.metacore il y a 9 ans
Parent
commit
692ecfa075
1 fichiers modifiés avec 7 ajouts et 4 suppressions
  1. 7 4
      source/WMTextView.Mod

+ 7 - 4
source/WMTextView.Mod

@@ -2642,15 +2642,18 @@ TYPE
 		VAR la, lb, i, top, t, b : LONGINT; rect, clip : WMRectangles.Rectangle; cstate : WMGraphics.CanvasState;
 		BEGIN
 			ASSERT(layout # NIL);
-			DrawBackground^(canvas);
+
 			canvas.GetClipRect(clip);
 			IF WMRectangles.RectEmpty(clip) THEN RETURN END;
 			rect := GetClientRect();
 			canvas.SaveState(cstate);
 
-			IF showBorderI THEN
-				WMGraphicUtilities.DrawBevel(canvas, rect,
-					1, TRUE, LONGINT(0808080FFH), WMGraphics.ModeCopy)
+			IF WMRectangles.Intersect(rect, clip) THEN
+				DrawBackground^(canvas);
+				IF showBorderI THEN
+					WMGraphicUtilities.DrawBevel(canvas, rect,
+						1, TRUE, LONGINT(0808080FFH), WMGraphics.ModeCopy)
+				END;
 			END;
 
 			(* allow clean clipping in at inner border *)