>From 1092fa3a4e3e6ce5703aeee82b868802e433357e Mon Sep 17 00:00:00 2001
From: Norbert Nemec <address@hidden>
Date: Mon, 7 Dec 2009 12:11:43 +0000
Subject: [PATCH] Display table grid (very faint gray). Also change color of
environment boxes from intense cyan to faint gray cyan and put them behind the
displayed content.
---
src/src/Edit/Interface/edit_interface.cpp | 30 ++++++++++++++++++++++------
src/src/Edit/Interface/edit_interface.hpp | 3 +-
src/src/Edit/Interface/edit_repaint.cpp | 10 +++++++-
3 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/src/src/Edit/Interface/edit_interface.cpp
b/src/src/Edit/Interface/edit_interface.cpp
index a035b5a..9443cc0 100644
--- a/src/src/Edit/Interface/edit_interface.cpp
+++ b/src/src/Edit/Interface/edit_interface.cpp
@@ -261,26 +261,36 @@ is_graphical (tree t) {
}
void
-edit_interface_rep::compute_env_rects (path p, rectangles& rs, bool recurse) {
+edit_interface_rep::compute_env_rects (path p,
+ rectangles& rs, rectangles& tcrs, bool recurse) {
p= path_up (p);
if (p == rp) return;
tree st= subtree (et, p);
- if (is_atomic (st) ||
+ if(is_func(st,TABLE)) {
+ rectangles r;
+ for(int i=0;i<N(st);i++)
+ if(is_func(st[i],ROW))
+ for(int j=0;j<N(st[i]);j++) {
+ selection sel= eb->find_check_selection (p*i*j*0,p*i*j*1);
+ r << sel->rs - ::correct(thicken(sel->rs,-pixel,-pixel));
+ }
+ tcrs << simplify(r);
+ compute_env_rects (p, rs, tcrs, recurse);
+ } else if (is_atomic (st) ||
drd->is_child_enforcing (st) ||
//is_document (st) || is_concat (st) ||
- is_func (st, TABLE) || is_func (st, SUBTABLE) ||
+ is_func (st, SUBTABLE) ||
is_func (st, ROW) || is_func (st, TFORMAT) ||
is_graphical (st) ||
(is_func (st, WITH) && is_graphical (st[N(st)-1])) ||
(is_func (st, WITH) && is_func (st[N(st)-1], TEXT_AT)) ||
(is_compound (st, "math", 1) &&
is_compound (subtree (et, path_up (p)), "input")))
- compute_env_rects (p, rs, recurse);
+ compute_env_rects (p, rs, tcrs, recurse);
else {
int new_mode= DRD_ACCESS_NORMAL;
if (get_init_string (MODE) == "src") new_mode= DRD_ACCESS_SOURCE;
int old_mode= set_access_mode (new_mode);
- tree st= subtree (et, p);
if (is_accessible_cursor (et, p * right_index (st)) || in_source ()) {
bool right;
path p1= p * 0, p2= p * 1, q1, q2;
@@ -294,7 +304,7 @@ edit_interface_rep::compute_env_rects (path p, rectangles&
rs, bool recurse) {
rs << outline (sel->rs, pixel);
}
set_access_mode (old_mode);
- if (recurse) compute_env_rects (p, rs, recurse);
+ if (recurse) compute_env_rects (p, rs, tcrs, recurse);
}
}
@@ -457,8 +467,14 @@ edit_interface_rep::apply_changes () {
oc= copy (cu);
rectangles old_rects= env_rects;
+ rectangles old_tc_rects= tblcell_rects;
env_rects= rectangles ();
- compute_env_rects (path_up (tp), env_rects, true);
+ tblcell_rects= rectangles ();
+ compute_env_rects (path_up (tp), env_rects, tblcell_rects, true);
+ if (tblcell_rects != old_tc_rects) {
+ invalidate (old_tc_rects);
+ invalidate (tblcell_rects);
+ }
if (env_rects != old_rects) {
invalidate (old_rects);
invalidate (env_rects);
diff --git a/src/src/Edit/Interface/edit_interface.hpp
b/src/src/Edit/Interface/edit_interface.hpp
index 05cf7d8..dbf5c85 100644
--- a/src/src/Edit/Interface/edit_interface.hpp
+++ b/src/src/Edit/Interface/edit_interface.hpp
@@ -55,6 +55,7 @@ protected:
bool table_selection;
rectangles selection_rects;
rectangles env_rects;
+ rectangles tblcell_rects;
cursor oc;
bool temp_invalid_cursor;
array<string> completions;
@@ -110,7 +111,7 @@ public:
void animate ();
/* miscellaneous */
- void compute_env_rects (path p, rectangles& rs, bool recurse);
+ void compute_env_rects (path p, rectangles& rs, rectangles& trs, bool
recurse);
void cursor_visible ();
void selection_visible ();
void full_screen_mode (bool flag);
diff --git a/src/src/Edit/Interface/edit_repaint.cpp
b/src/src/Edit/Interface/edit_repaint.cpp
index 69a1efd..08a2a6b 100644
--- a/src/src/Edit/Interface/edit_repaint.cpp
+++ b/src/src/Edit/Interface/edit_repaint.cpp
@@ -35,9 +35,15 @@ edit_interface_rep::draw_text (renderer ren, rectangles& l) {
void
edit_interface_rep::draw_env (renderer ren) {
if (!full_screen) {
- rectangles rs= env_rects;
+ rectangles rs= tblcell_rects;
while (!is_nil (rs)) {
- ren->set_color (rgb_color (0, 255, 255));
+ ren->set_color (rgb_color (224, 224, 224));
+ ren->fill (rs->item->x1, rs->item->y1, rs->item->x2, rs->item->y2);
+ rs= rs->next;
+ }
+ rs= env_rects;
+ while (!is_nil (rs)) {
+ ren->set_color (rgb_color (162, 224, 224));
ren->fill (rs->item->x1, rs->item->y1, rs->item->x2, rs->item->y2);
rs= rs->next;
}
--
1.6.3.3