Changeset 1823
- Timestamp:
- 08/02/07 04:37:44 (1 year ago)
- Files:
-
- gaphas/trunk/gaphas/tests/test_view.py (modified) (2 diffs)
- gaphas/trunk/gaphas/view.py (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphas/trunk/gaphas/tests/test_view.py
r1694 r1823 53 53 assert view1.get_item_bounding_box(line) == view2.get_item_bounding_box(line), '%s != %s' % (view1.get_item_bounding_box(line), view2.get_item_bounding_box(line)) 54 54 finally: 55 window1.destroy() 55 56 window2.destroy() 56 57 … … 83 84 assert view.get_item_at_point(60, 10) is None 84 85 86 window.destroy() 85 87 88 89 def test_item_removal(self): 90 canvas = Canvas() 91 view = GtkView(canvas) 92 window = gtk.Window(gtk.WINDOW_TOPLEVEL) 93 window.add(view) 94 window.show_all() 95 96 box = Box() 97 canvas.add(box) 98 # No gtk main loop, so updates occur instantly 99 assert not canvas.require_update() 100 101 # Process pending (expose) events, which cause the canvas to be drawn. 102 while gtk.events_pending(): 103 gtk.main_iteration() 104 105 assert len(canvas.get_all_items()) == len(view._qtree) 106 107 view.focused_item = box 108 canvas.remove(box) 109 110 assert len(canvas.get_all_items()) == 0 111 assert len(view._qtree) == 0 112 113 window.destroy() 114 115 86 116 if __name__ == '__main__': 87 117 unittest.main() gaphas/trunk/gaphas/view.py
r1822 r1823 507 507 self._qtree.resize((0, 0, allocation.width, allocation.height)) 508 508 509 509 510 @async(single=False, priority=PRIORITY_HIGH_IDLE) 510 511 def _idle_queue_draw_item(self, *items): 511 512 self.queue_draw_item(*items) 513 512 514 513 515 def queue_draw_item(self, *items): … … 525 527 pass # No bounds calculated yet? bummer. 526 528 529 527 530 def queue_draw_area(self, x, y, w, h): 528 531 """ … … 530 533 """ 531 534 super(GtkView, self).queue_draw_area(int(x), int(y), int(w+1), int(h+1)) 535 532 536 533 537 def request_update(self, items, matrix_only_items=(), removed_items=()): … … 547 551 548 552 for item in removed_items: 549 self._qtree.remove(item) 553 # Be cautious, item may be removed before its bounding box 554 # is calculated. 555 if item in self._qtree: 556 self._qtree.remove(item) 550 557 self.selected_items.discard(item) 551 558 … … 558 565 559 566 self.update() 567 560 568 561 569 @async(single=True, priority=PRIORITY_HIGH_IDLE) … … 603 611 self._dirty_matrix_items.clear() 604 612 613 605 614 @nonrecursive 606 615 def do_size_allocate(self, allocation): … … 612 621 self.update_adjustments(allocation) 613 622 623 614 624 def do_realize(self): 615 625 #super(GtkView, self).do_realize() … … 617 627 if self._canvas: 618 628 self.request_update(self._canvas.get_all_items()) 629 619 630 620 631 def do_expose_event(self, event): … … 687 698 return False 688 699 700 689 701 def on_adjustment_changed(self, adj): 690 702 """
