Changeset 9569 for branches

Show
Ignore:
Timestamp:
05/04/08 02:24:27 (3 months ago)
Author:
bct
Message:

pm bugfix

Location:
branches/session_centric/src
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • branches/session_centric/src/chat_control.py

    r9560 r9569  
    15871587                        unread = '[' + unicode(num_unread) + ']' 
    15881588 
    1589                 # Draw tab label using chatstate  
     1589                # Draw tab label using chatstate 
    15901590                theme = gajim.config.get('roster_theme') 
    15911591                color = None 
     
    18471847                self.contact.our_chatstate = None 
    18481848 
     1849                # terminate session 
    18491850                self.session.control = None 
    18501851 
     
    20782079                # Is it a pm ? 
    20792080                room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) 
    2080 # XXX fixme somehow 
    2081 #               control = gajim.interface.msg_win_mgr.get_control(room_jid, self.account) 
    2082 #               if control and control.type_id == message_control.TYPE_GC: 
    2083 #                       control.update_ui() 
    2084 #                       control.parent_win.show_title() 
    2085 #                       typ = 'pm' 
     2081                control = gajim.interface.msg_win_mgr.get_gc_control(room_jid, self.account) 
     2082                if control and control.type_id == message_control.TYPE_GC: 
     2083                        control.update_ui() 
     2084                        control.parent_win.show_title() 
     2085                        typ = 'pm' 
    20862086 
    20872087                self.redraw_after_event_removed(jid) 
     
    20942094                                gajim.interface.roster.really_remove_contact(self.contact, 
    20952095                                        self.account) 
    2096 #                       elif typ == 'pm': 
    2097 #                               control.remove_contact(nick) 
     2096                        elif typ == 'pm': 
     2097                                control.remove_contact(nick) 
    20982098 
    20992099        def show_bigger_avatar(self, small_avatar): 
     
    21412141                if gtk.gtk_version >= (2, 10, 0) and gtk.pygtk_version >= (2, 10, 0): 
    21422142                        window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLTIP) 
    2143                  
     2143 
    21442144                window.realize() 
    21452145                window.window.set_back_pixmap(pixmap, False) # make it transparent 
    21462146                window.window.shape_combine_mask(mask, 0, 0) 
    21472147 
    2148                 # make the bigger avatar window show up centered  
     2148                # make the bigger avatar window show up centered 
    21492149                x0, y0 = small_avatar.window.get_origin() 
    21502150                x0 += small_avatar.allocation.x 
     
    21522152                center_x= x0 + (small_avatar.allocation.width / 2) 
    21532153                center_y = y0 + (small_avatar.allocation.height / 2) 
    2154                 pos_x, pos_y = center_x - (avatar_w / 2), center_y - (avatar_h / 2)  
     2154                pos_x, pos_y = center_x - (avatar_w / 2), center_y - (avatar_h / 2) 
    21552155                window.move(pos_x, pos_y) 
    21562156                # make the cursor invisible so we can see the image 
  • branches/session_centric/src/gajim.py

    r9560 r9569  
    19251925                                new_sess = gajim.connections[account].make_new_session(str(jid)) 
    19261926                                ctrl.set_session(new_sess) 
     1927                                gajim.connections[account].delete_session(str(jid), session.thread_id) 
    19271928 
    19281929                                if was_encrypted: 
  • branches/session_centric/src/groupchat_control.py

    r9560 r9569  
    605605 
    606606                # We print if window is opened 
    607                 pm_control = gajim.interface.msg_win_mgr.get_control(fjid, self.account, session) 
     607                pm_control = session.control 
    608608 
    609609                if pm_control: 
     
    633633                                self.parent_win.redraw_tab(self) 
    634634                else: 
    635                         self._start_private_message(nick, session) 
     635                        self._start_private_message(nick) 
    636636                # Scroll to line 
    637637                self.list_treeview.expand_row(path[0:1], False) 
     
    892892                fjid = gajim.construct_fjid(self.room_jid, nick) # 'fake' jid 
    893893 
    894                 self._start_private_message(nick) 
     894                ctrl = self._start_private_message(nick) 
    895895                if msg: 
    896                         gajim.interface.msg_win_mgr.get_control(fjid, self.account).\ 
    897                                 send_message(msg) 
     896                        ctrl.send_message(msg) 
    898897 
    899898        def on_send_file(self, widget, gc_contact): 
     
    20422041                win.window.present() 
    20432042 
     2043                return ctrl 
     2044 
    20442045        def on_row_activated(self, widget, path): 
    20452046                '''When an iter is activated (dubblick or single click if gnome is set 
     
    21002101 
    21012102                        if gajim.single_click and not event.state & gtk.gdk.SHIFT_MASK: 
    2102                                 self.on_row_activated(widget, path)                      
     2103                                self.on_row_activated(widget, path) 
    21032104                                return True 
    21042105                        else: 
  • branches/session_centric/src/message_control.py

    r9308 r9569  
    118118 
    119119        def set_session(self, session): 
    120                 if hasattr(self, 'session') and session == self.session: 
     120                oldsession = None 
     121                if hasattr(self, 'session'): 
     122                        oldsession = self.session 
     123 
     124                if oldsession and session == oldsession: 
    121125                        return 
    122  
    123                 was_encrypted = False 
    124  
    125                 if hasattr(self, 'session') and self.session: 
    126                         if self.session.enable_encryption: 
    127                                 was_encrypted = True 
    128  
    129                         gajim.connections[self.account].delete_session(self.session.jid, 
    130                                                                         self.session.thread_id) 
    131126 
    132127                self.session = session 
     
    135130                        session.control = self 
    136131 
    137                         if was_encrypted: 
    138                                 self.print_esession_details() 
     132                        if oldsession: 
     133                                self.parent_win.change_thread_key(self.contact.jid, 
     134                                                self.account, oldsession.thread_id, session.thread_id) 
     135 
     136                                if oldsession.enable_encryption: 
     137                                        self.print_esession_details() 
    139138 
    140139        def send_message(self, message, keyID = '', type = 'chat', 
     
    145144                jid = self.contact.jid 
    146145 
    147                 if not self.session: 
    148                         print('uhoh new session') 
    149                         fjid = self.contact.get_full_jid() 
    150                         new_session = gajim.connections[self.account].make_new_session(fjid) 
    151  
    152                         self.set_session(new_session) 
    153  
    154146                # Send and update history 
    155147                return gajim.connections[self.account].send_message(jid, message, keyID, 
  • branches/session_centric/src/message_window.py

    r9556 r9569  
    430430                fjid = ctrl.get_full_jid() 
    431431                thread_id = ctrl.session.thread_id 
     432 
    432433                del self._controls[ctrl.account][fjid][thread_id] 
    433434 
     
    568569 
    569570        def change_key(self, old_jid, new_jid, acct): 
    570                 '''Change the key of a control''' 
     571                '''Change the JID key of a control''' 
    571572                try: 
    572                         # Check if control exists 
    573                         ctrl = self._controls[acct][old_jid] 
    574                 except: 
     573                        # Check if controls exists 
     574                        ctrls = self._controls[acct][old_jid] 
     575                except KeyError: 
    575576                        return 
    576                 self._controls[acct][new_jid] = self._controls[acct][old_jid] 
     577                self._controls[acct][new_jid] = ctrls 
    577578                del self._controls[acct][old_jid] 
    578579                if old_jid in gajim.last_message_time[acct]: 
     
    580581                                gajim.last_message_time[acct][old_jid] 
    581582                        del gajim.last_message_time[acct][old_jid] 
     583 
     584        def change_thread_key(self, jid, acct, old_thread_id, new_thread_id): 
     585                '''Change the thread_id key of a control''' 
     586                try: 
     587                        # Check if control exists 
     588                        ctrl = self._controls[acct][jid][old_thread_id] 
     589                except KeyError: 
     590                        return 
     591 
     592                self._controls[acct][jid][new_thread_id] = ctrl 
     593                del self._controls[acct][jid][old_thread_id] 
    582594 
    583595        def controls(self):