# HG changeset patch # User souliane # Date 1388785499 -3600 # Node ID 971e3812903ab0b6e533f5a959a71fd126e4e9c4 # Parent bfbd9d6eb9017fbff0e6d9bab03dac0980f9d69b browser_side: scroll to the clicked microblog post and blink it (previous behavior is conserved when the unibox is enabled) diff -r bfbd9d6eb901 -r 971e3812903a browser_side/panels.py --- a/browser_side/panels.py Fri Jan 03 22:43:44 2014 +0100 +++ b/browser_side/panels.py Fri Jan 03 22:44:59 2014 +0100 @@ -470,7 +470,7 @@ def onClick(self, sender): if sender == self: - self._blog_panel.setSelectedEntry(self if self.comments else None) + self._blog_panel.setSelectedEntry(self) elif sender == self.delete_label: self._delete() elif sender == self.update_label: @@ -851,10 +851,23 @@ break def setSelectedEntry(self, entry): + try: + self.vpanel.getParent().ensureVisible(entry) # scroll to the clicked entry + except AttributeError: + logging.error("FIXME: MicroblogPanel.vpanel should be wrapped in a ScrollPanel!") + removeStyle = lambda entry: entry.removeStyleName('selected_entry') + if not self.host.uni_box or not entry.comments: + entry.addStyleName('selected_entry') # blink the clicked entry + clicked_entry = entry # entry may be None when the timer is done + Timer(500, lambda: removeStyle(clicked_entry)) + if not self.host.uni_box: + return # unibox is disabled + # from here the previous behavior (toggle main item selection) is conserved + entry = entry if entry.comments else None if self.selected_entry == entry: entry = None if self.selected_entry: - self.selected_entry.removeStyleName('selected_entry') + removeStyle(self.selected_entry) if entry: print "microblog entry selected (author=%s)" % entry.author entry.addStyleName('selected_entry')