Changeset 1788

Show
Ignore:
Timestamp:
07/30/07 01:14:15 (1 year ago)
Author:
arj..@yirdis.nl
Message:

Only pre_update after solving for items that did not pre-update before.

Added extra assertions in update method.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphas/trunk/gaphas/canvas.py

    r1786 r1788  
    436436            # some item's can be marked dirty due to external constraints 
    437437            # solving; 
     438            # Only items that have not yet been updates receive a pre_update. 
    438439            # NOTE: no matrix can change during constraint solving 
     440 
     441            assert not self._dirty_matrix_items, 'No matrices may have been marked dirty (%s)' % (self._dirty_matrix_items,) 
     442 
    439443            if self._dirty_items: 
    440                 c_dirty_items = sort(self._dirty_items, reverse=True) 
     444 
     445                c_dirty_items = sort(self._dirty_items.difference(dirty_items), reverse=True) 
     446                 
     447                self._pre_update_items(c_dirty_items, cr) 
     448 
    441449                self._dirty_items.clear() 
    442450 
    443                 self._pre_update_items(c_dirty_items, cr) 
    444  
    445                 # TODO: sort dirty_items and c_dirty_items (with no 
    446                 # duplicates in dirty_items) using some nice merge 
    447                 # algorithm 
    448451                dirty_items.extend(c_dirty_items) 
    449452                dirty_items = sort(set(dirty_items), reverse=True) 
    450453 
     454                # Also matrices may change due to an update. 
     455                if self._dirty_matrix_items: 
     456                    dirty_matrix_items.update(self.update_matrices(self._dirty_matrix_items)) 
     457                    self._dirty_matrix_items.clear() 
     458 
     459            assert not self._dirty_items, 'No items may have been marked dirty (%s)' % (self._dirty_matrix_items,) 
     460            assert not self._dirty_matrix_items, 'No matrices may have been marked dirty (%s)' % (self._dirty_matrix_items,) 
    451461 
    452462            # normalize items, which changed after constraint solving; 
    453             # store those items, which matrices changed 
     463            # store those items, whose matrices changed 
    454464            normalized_items = self._normalize(dirty_items) 
    455465 
    456466            # recalculate matrices of normalized items 
    457             dirty_matrix_items.update(self.update_matrices(normalized_items)) 
     467            #dirty_matrix_items.update(self.update_matrices(normalized_items)) 
     468            self.update_matrices(normalized_items) 
    458469 
    459470            self._post_update_items(dirty_items, cr) 
     471 
     472            assert not self._dirty_items, 'No items may have been marked dirty (%s)' % (self._dirty_matrix_items,) 
     473            assert not self._dirty_matrix_items, 'No matrices may have been marked dirty (%s)' % (self._dirty_matrix_items,) 
    460474 
    461475        finally: