diff --git a/mitterlib/ui/ui_pygtk.py b/mitterlib/ui/ui_pygtk.py index f9fb0a8..4a3752b 100644 --- a/mitterlib/ui/ui_pygtk.py +++ b/mitterlib/ui/ui_pygtk.py @@ -271,9 +271,9 @@ class Interface(object): self._grid.set_resize_mode(gtk.RESIZE_IMMEDIATE) self._grid.connect('cursor-changed', self._message_selected) - #self._grid.connect('row-activated', self.open_post) self._grid.connect('button-press-event', self._click_message) self._grid.connect('popup-menu', self._message_popup) # Menu button + self._grid.connect('cursor-changed', self._mark_message_read) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) @@ -570,6 +570,9 @@ class Interface(object): # r'\1', # message) + if not data.read: + message = "" + message + "" + if data.reposted_by: markup = '%s (%s -- reposted by %s)' \ ':\n%s\n%s' % \ @@ -948,6 +951,19 @@ class Interface(object): webbrowser.open_new_tab(user_data) return + def _mark_message_read(self, widget, user_data=None): + """Mark a message as read when it's selected.""" + (path, _) = self._grid.get_cursor() + if not path: + return True + + iter = self._grid.get_model().get_iter(path) + message = self._grid.get_model().get_value(iter, 0) + + message.read = True + + return True + # ------------------------------------------------------------ # Network related functions # ------------------------------------------------------------ @@ -964,6 +980,7 @@ class Interface(object): store = self._grid.get_model() for message in results: _log.debug('Data: %s', str(message)) + message.read = False store.prepend([message]) store.sort_column_changed() if len(results) > 0: