Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-08-22 07:11:35 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-08-25 15:49:46 (GMT)
commit07618f5dc257bf70170d2a9f3321d894dc36a49b (patch)
tree28b12692009310a9bf32193eaa0c3c8d9bf3074f /src
parent5ac64417e6df9bb130a0e068d3fe9eb658902123 (diff)
Do not blink by preview while re-reading entries
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/journal/objectmodel.py21
-rw-r--r--src/jarabe/journal/source.py2
-rw-r--r--src/jarabe/journal/thumbsview.py18
3 files changed, 28 insertions, 13 deletions
diff --git a/src/jarabe/journal/objectmodel.py b/src/jarabe/journal/objectmodel.py
index 621f261..6e98967 100644
--- a/src/jarabe/journal/objectmodel.py
+++ b/src/jarabe/journal/objectmodel.py
@@ -26,6 +26,8 @@ from jarabe.journal.source import Source
from jarabe.journal.browse.lazymodel import LazyModel
class ObjectModel(LazyModel):
+ FIELD_FETCHED_FLAG = 50
+
def __init__(self):
LazyModel.__init__(self, Source.FIELDS_BASE, Source.FIELDS_CALC)
self._fetch_queue = []
@@ -37,22 +39,23 @@ class ObjectModel(LazyModel):
int(row[Source.FIELD_TIMESTAMP]) or 0)
if column == Source.FIELD_THUMB:
- row = self.fetch_metadata(row)
- if row is not None:
- return
+ if self.fetch_metadata(row):
+ return row[Source.FIELD_THUMB]
return None
return None
def fetch_metadata(self, row, force=False):
- if row.has_key(Source.FIELD_FETCHED):
- return row
+ if row.has_key(self.FIELD_FETCHED_FLAG):
+ return True
if row not in self._fetch_queue:
self._fetch_queue.append(row)
if len(self._fetch_queue) == 1:
gobject.idle_add(self.__idle_cb, force)
+ return False
+
def __idle_cb(self, force):
while len(self._fetch_queue):
row = self._fetch_queue[0]
@@ -67,10 +70,12 @@ class ObjectModel(LazyModel):
del self._fetch_queue[0]
if metadata is not None:
- row[Source.FIELD_THUMB] = misc.load_preview(metadata)
row.metadata.update(metadata)
- row[Source.FIELD_FETCHED] = True
- self.emit('row-changed', row.path, row.iter)
+
+ row[Source.FIELD_THUMB] = misc.load_preview(metadata)
+ row[self.FIELD_FETCHED_FLAG] = True
+
+ self.emit('row-changed', row.path, row.iter)
if len(self._fetch_queue):
self.__idle_cb(False)
diff --git a/src/jarabe/journal/source.py b/src/jarabe/journal/source.py
index 72a963b..a7c9084 100644
--- a/src/jarabe/journal/source.py
+++ b/src/jarabe/journal/source.py
@@ -42,8 +42,6 @@ class Source(GObject):
FIELD_MODIFY_TIME = 31
FIELD_THUMB = 32
- FIELD_FETCHED = 50
-
FIELDS_BASE = {'uid': (FIELD_UID, str),
'title': (FIELD_TITLE, str),
'mtime': (FIELD_MTIME, str),
diff --git a/src/jarabe/journal/thumbsview.py b/src/jarabe/journal/thumbsview.py
index 3debb94..ac553bd 100644
--- a/src/jarabe/journal/thumbsview.py
+++ b/src/jarabe/journal/thumbsview.py
@@ -25,7 +25,8 @@ from sugar.graphics.xocolor import XoColor
from sugar.graphics.palette import CanvasInvoker
from jarabe.journal.keepicon import KeepIcon
-from jarabe.journal.objectmodel import Source
+from jarabe.journal.source import Source
+from jarabe.journal.objectmodel import ObjectModel
from jarabe.journal.browse.tableview import TableView, TableCell
from jarabe.journal.palettes import ObjectPalette
from jarabe.journal import misc
@@ -39,6 +40,8 @@ class ThumbsCell(TableCell, hippo.CanvasBox):
def __init__(self):
TableCell.__init__(self)
+ self._last_uid = None
+
hippo.CanvasBox.__init__(self,
orientation=hippo.ORIENTATION_VERTICAL,
padding_left=style.DEFAULT_SPACING,
@@ -110,13 +113,22 @@ class ThumbsCell(TableCell, hippo.CanvasBox):
self.date.props.text = self.row[Source.FIELD_MODIFY_TIME] or ''
self.keep.props.keep = int(self.row[Source.FIELD_KEEP] or 0) == 1
- thumb = self.row[Source.FIELD_THUMB]
-
w, h = self.activity_box.get_allocation()
if w / 4. * 3. > h:
w = int(h / 3. * 4.)
else:
h = int(w / 4. * 3.)
+ thumb = self.row[Source.FIELD_THUMB]
+
+
+ logging.error('> %r %r %r %r' % (self, self._last_uid, self.row[Source.FIELD_UID], self.row.has_key(ObjectModel.FIELD_FETCHED_FLAG)))
+
+ if self._last_uid == self.row[Source.FIELD_UID] and \
+ not self.row.has_key(ObjectModel.FIELD_FETCHED_FLAG):
+ # do not blink by preview while re-reading entries
+ return
+ else:
+ self._last_uid = self.row[Source.FIELD_UID]
if thumb is None:
self.thumb.set_visible(False)