Changeset 8596 for branches/gajim_0.11.1/src/chat_control.py
- Timestamp:
- 08/29/07 22:44:31 (15 months ago)
- Files:
-
- 1 modified
-
branches/gajim_0.11.1/src/chat_control.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/gajim_0.11.1/src/chat_control.py
r7984 r8596 145 145 self.on_conversation_vadjustment_value_changed) 146 146 self.handlers[id] = widget 147 id = widget.connect('changed', 148 self.on_conversation_vadjustment_changed) 149 self.handlers[id] = widget 150 self.scroll_to_end_id = None 151 self.was_at_the_end = True 147 152 # add MessageTextView to UI and connect signals 148 153 self.msg_scrolledwindow = self.xml.get_widget('message_scrolledwindow') … … 552 557 textview = self.conv_textview 553 558 end = False 554 if textview.at_the_end()or kind == 'outgoing':559 if self.was_at_the_end or kind == 'outgoing': 555 560 end = True 556 561 textview.print_conversation_line(text, jid, kind, name, tim, … … 658 663 if state: 659 664 jid = self.contact.jid 660 if self. conv_textview.at_the_end():665 if self.was_at_the_end: 661 666 # we are at the end 662 667 type_ = 'printed_' + self.type_id … … 673 678 def bring_scroll_to_end(self, textview, diff_y = 0): 674 679 ''' scrolls to the end of textview if end is not visible ''' 680 if self.scroll_to_end_id: 681 # a scroll is already planned 682 return 675 683 buffer = textview.get_buffer() 676 684 end_iter = buffer.get_end_iter() … … 679 687 # scroll only if expected end is not visible 680 688 if end_rect.y >= (visible_rect.y + visible_rect.height + diff_y): 681 gobject.idle_add(self.scroll_to_end_iter, textview) 689 self.scroll_to_end_id = gobject.idle_add(self.scroll_to_end_iter, 690 textview) 682 691 683 692 def scroll_to_end_iter(self, textview): … … 685 694 end_iter = buffer.get_end_iter() 686 695 textview.scroll_to_iter(end_iter, 0, False, 1, 1) 696 self.scroll_to_end_id = None 687 697 return False 688 698 … … 742 752 return True 743 753 744 def on_conversation_vadjustment_value_changed(self, widget): 754 def on_conversation_vadjustment_changed(self, adjustment): 755 # used to stay at the end of the textview when we shrink conversation 756 # textview. 757 if self.was_at_the_end: 758 self.conv_textview.bring_scroll_to_end(-18) 759 self.was_at_the_end = (adjustment.upper - adjustment.value - adjustment.page_size) < 18 760 761 def on_conversation_vadjustment_value_changed(self, adjustment): 762 self.was_at_the_end = (adjustment.upper - adjustment.value - adjustment.page_size) < 18 745 763 if self.resource: 746 764 jid = self.contact.get_full_jid() … … 754 772 return 755 773 if self.conv_textview.at_the_end() and \ 756 self.parent_win.get_active_control() == self and \757 self.parent_win.window.is_active():774 self.parent_win.get_active_control() == self and \ 775 self.parent_win.window.is_active(): 758 776 # we are at the end 759 type_ = self.type_id760 if type_ == message_control.TYPE_GC:761 type_ = 'gc_msg'762 777 if not gajim.events.remove_events(self.account, self.get_full_jid(), 763 778 types = ['printed_' + type_, type_]):
