]> git.lyx.org Git - features.git/commitdiff
* insettabular.C (drawSelection): initialize cell background
authorMartin Vermeer <martin.vermeer@hut.fi>
Sun, 18 Jun 2006 09:27:57 +0000 (09:27 +0000)
committerMartin Vermeer <martin.vermeer@hut.fi>
Sun, 18 Jun 2006 09:27:57 +0000 (09:27 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14141 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/insettabular.C

index fbadcbba8e781f32abe872db2cdcaed94a32faea..5b1bc8b8141a8cbc1c31364d9d49dbb44220a238 100644 (file)
@@ -332,6 +332,36 @@ void InsetTabular::drawSelection(PainterInfo & pi, int x, int y) const
        setPosCache(pi, x, y);
 
        LCursor & cur = pi.base.bv->cursor();
+
+       x += scx_ + ADD_TO_TABULAR_WIDTH;
+
+       // Here we take the cursor slice that is the tabular.
+       lyx::size_type d = 0; 
+       bool found = false;
+       for (; d < cur.depth(); d++) {
+               if (ptr_cmp(&cur[d].inset(), this)) {
+                       found = true;
+                       break;
+               }
+       }
+
+       if (found) {
+               CursorSlice const & sl = cur[d];
+               // Paint background of current cell
+               int const w = tabular.getWidthOfColumn(sl.idx());
+               int yy = y - tabular.getAscentOfRow(0) + ADD_TO_HEIGHT;
+               row_type j = 0;
+               for (; tabular.getCellNumber(j, tabular.columns() - 1) < sl.idx(); ++j) {
+                       int const a = tabular.getAscentOfRow(j);
+                       int const h = a + tabular.getDescentOfRow(j);
+                       yy += h;
+                       yy += tabular.getAdditionalHeight(j + 1);
+               }
+               int const h = tabular.getAscentOfRow(j) + tabular.getDescentOfRow(j);
+               pi.pain.fillRectangle(x + getCellXPos(sl.idx()), yy, w, h,
+                       backgroundColor());
+       }
+
        if (!cur.selection())
                return;
        if (!ptr_cmp(&cur.inset(), this))
@@ -339,7 +369,6 @@ void InsetTabular::drawSelection(PainterInfo & pi, int x, int y) const
 
        //resetPos(cur);
 
-       x += scx_ + ADD_TO_TABULAR_WIDTH;
 
        if (tablemode(cur)) {
                row_type rs, re;