Viewer.py
changeset 634 cc3335911c01
parent 633 3536f4469cde
child 641 e9295622ce9b
--- a/Viewer.py	Mon Jan 30 16:12:19 2012 +0100
+++ b/Viewer.py	Tue Jan 31 13:38:06 2012 +0100
@@ -499,8 +499,8 @@
         if not self.Debug:
             self.Editor.SetDropTarget(ViewerDropTarget(self))
         
-        self.NewDataRefreshRect = None
-        self.NewDataRefreshRect_lock = Lock()
+        self.ElementRefreshList = []
+        self.ElementRefreshList_lock = Lock()
         
         dc = wx.ClientDC(self.Editor)
         font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"])
@@ -885,19 +885,23 @@
 #                          Refresh functions
 #-------------------------------------------------------------------------------
 
-    def UpdateRefreshRect(self, refresh_rect):
-        self.NewDataRefreshRect_lock.acquire()
-        if self.NewDataRefreshRect is None:
-            self.NewDataRefreshRect = refresh_rect
-        else:
-            self.NewDataRefreshRect.Union(refresh_rect)
-        self.NewDataRefreshRect_lock.release()
+    def ElementNeedRefresh(self, element):
+        self.ElementRefreshList_lock.acquire()
+        self.ElementRefreshList.append(element)
+        self.ElementRefreshList_lock.release()
         
     def RefreshNewData(self):
-        if self.NewDataRefreshRect is not None:
-            self.NewDataRefreshRect_lock.acquire()
-            refresh_rect, self.NewDataRefreshRect = self.NewDataRefreshRect, None
-            self.NewDataRefreshRect_lock.release()
+        refresh_rect = None
+        self.ElementRefreshList_lock.acquire()
+        for element in self.ElementRefreshList:
+            if refresh_rect is None:
+                refresh_rect = element.GetRedrawRect()
+            else:
+                refresh_rect.Union(element.GetRedrawRect())
+        self.ElementRefreshList = []
+        self.ElementRefreshList_lock.release()
+        
+        if refresh_rect is not None:
             self.RefreshRect(self.GetScrolledRect(refresh_rect), False)
         else:
             DebugViewer.RefreshNewData(self)