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 06:12:02 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-08-25 15:49:46 (GMT)
commit2e8ed1c8e5819ea00dac3f0484b5f923529dba4b (patch)
tree391f90c2feeb66c061d153a50dfba6a8e1f1e7e6 /src
parent17faaf100c9eae13be218c64071996680a028bcc (diff)
Do not set bin_rows less then rows in SmoothTable
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/journal/browse/smoothtable.py32
-rw-r--r--src/jarabe/journal/browse/tableview.py24
2 files changed, 28 insertions, 28 deletions
diff --git a/src/jarabe/journal/browse/smoothtable.py b/src/jarabe/journal/browse/smoothtable.py
index 47777be..8b3ca4e 100644
--- a/src/jarabe/journal/browse/smoothtable.py
+++ b/src/jarabe/journal/browse/smoothtable.py
@@ -24,8 +24,6 @@ class SmoothTable(gtk.Container):
__gsignals__ = {
'set-scroll-adjustments': (gobject.SIGNAL_RUN_FIRST, None,
[gtk.Adjustment, gtk.Adjustment]),
- 'fill-in': (gobject.SIGNAL_RUN_FIRST, None,
- [gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT]),
}
def __init__(self, rows, columns, new_cell, fill_in):
@@ -79,13 +77,16 @@ class SmoothTable(gtk.Container):
return self._bin_rows
def set_bin_rows(self, bin_rows):
- self._bin_rows = bin_rows
+ self._bin_rows = max(self.rows, bin_rows)
- if self._adj is not None:
- self._setup_adjustment(force=True)
- if self.flags() & gtk.REALIZED:
- self._bin_window.resize(self.allocation.width,
- int(self._adj.upper))
+ if self._adj is None:
+ return
+
+ for row in self._rows:
+ for cell in row:
+ cell.size_allocate(gtk.gdk.Rectangle(-1, -1, 0, 0))
+
+ self._setup_adjustment(force=True)
bin_rows = property(get_bin_rows, set_bin_rows)
@@ -251,18 +252,9 @@ class SmoothTable(gtk.Container):
return int(self._adj.value) - int(self._adj.value) % self._cell_height
def __adjustment_value_changed_cb(self, sender=None):
- if not self.flags() & gtk.REALIZED or self._cell_height == 0:
- return
-
- if self._adj.value < 0:
- self._adj.value = 0
- self._adj.value_changed()
- return
-
- bottom = self._adj.upper - (self.rows * self._cell_height)
- if self._adj.value > bottom:
- self._adj.value = bottom
- self._adj.value_changed()
+ if not self.flags() & gtk.REALIZED or self._cell_height == 0 or \
+ self._adj.value < 0 or self._adj.value > self._adj.upper - \
+ (self.rows * self._cell_height):
return
spare_rows = []
diff --git a/src/jarabe/journal/browse/tableview.py b/src/jarabe/journal/browse/tableview.py
index 362c6ba..b5d45cd 100644
--- a/src/jarabe/journal/browse/tableview.py
+++ b/src/jarabe/journal/browse/tableview.py
@@ -15,6 +15,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import gtk
+import math
import hippo
import gobject
import logging
@@ -55,15 +56,18 @@ class TableView(SmoothTable):
def set_model(self, model):
if self._model == model:
return
+
if self._model:
self._model.disconnect_by_func(self.__row_changed_cb)
self._model.disconnect_by_func(self.__table_resized_cb)
+
self._model = model
+
if model:
self._model.connect('row-changed', self.__row_changed_cb)
- self._model.connect('row-inserted', self.__table_resized_cb)
- self._model.connect('row-deleted', self.__table_resized_cb)
- self.bin_rows = self._model.iter_n_children(None) / self.columns
+ self._model.connect('rows-reordered', self.__table_resized_cb)
+
+ self._resize()
model = gobject.property(type=object,
getter=get_model, setter=set_model)
@@ -101,7 +105,12 @@ class TableView(SmoothTable):
return canvas
- def _fill_in(self, canvas, y, x, row=None):
+ def _resize(self):
+ rows = int(math.ceil(float(self._model.iter_n_children(None)) / \
+ self.columns))
+ self.bin_rows = rows
+
+ def _fill_in(self, canvas, y, x, prepared_row=None):
cell = canvas.table_view_cell
sel_box = canvas.table_view_cell_sel_box
@@ -112,7 +121,7 @@ class TableView(SmoothTable):
bg_color = COLOR_BACKGROUND
sel_box.props.background_color = bg_color.get_int()
- cell.row = row
+ cell.row = prepared_row
if cell.row is None:
cell_num = y * self.columns + x
@@ -156,8 +165,7 @@ class TableView(SmoothTable):
return
row = self._model.get_row(path)
-
self._fill_in(canvas, y, x, row)
- def __table_resized_cb(self, model=None, path=None, iter=None):
- self.bin_rows = self._model.iter_n_children(None) / self.columns
+ def __table_resized_cb(self, model=None, path=None, iter=None, arg3=None):
+ self._resize()