mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-11 05:33:33 +00:00
fix drawing glitch
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3118 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
d659612225
commit
8c3c804a4d
@ -335,8 +335,7 @@ void InsetFormula::read(Buffer const *, LyXLex & lex)
|
||||
void InsetFormula::draw(BufferView * bv, LyXFont const & font,
|
||||
int y, float & xx, bool) const
|
||||
{
|
||||
int x = int(xx) - 1;
|
||||
y -= 2;
|
||||
int x = int(xx);
|
||||
|
||||
Painter & pain = bv->painter();
|
||||
|
||||
@ -597,13 +596,13 @@ bool InsetFormula::insetAllowed(Inset::Code code) const
|
||||
|
||||
int InsetFormula::ascent(BufferView *, LyXFont const &) const
|
||||
{
|
||||
return par_->ascent() + 2;
|
||||
return par_->ascent() + 1;
|
||||
}
|
||||
|
||||
|
||||
int InsetFormula::descent(BufferView *, LyXFont const &) const
|
||||
{
|
||||
return par_->descent() - 2;
|
||||
return par_->descent() + 1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -174,7 +174,7 @@ void InsetFormulaBase::getCursorPos(BufferView *, int & x, int & y) const
|
||||
{
|
||||
mathcursor->getPos(x, y);
|
||||
x += xo_;
|
||||
y += yo_ - 3;
|
||||
y += yo_;
|
||||
//lyxerr << "getCursorPos: " << x << " " << y << "\n";
|
||||
}
|
||||
|
||||
@ -191,7 +191,6 @@ void InsetFormulaBase::toggleInsetCursor(BufferView * bv)
|
||||
int x;
|
||||
int y;
|
||||
mathcursor->getPos(x, y);
|
||||
y -= 3;
|
||||
y -= yo_;
|
||||
int asc = 0;
|
||||
int des = 0;
|
||||
|
@ -59,8 +59,8 @@ void MathDelimInset::normalize(NormalStream & os) const
|
||||
int MathDelimInset::dw() const
|
||||
{
|
||||
int w = height() / 5;
|
||||
if (w > 15)
|
||||
w = 15;
|
||||
if (w > 12)
|
||||
w = 12;
|
||||
if (w < 4)
|
||||
w = 4;
|
||||
return w;
|
||||
|
@ -38,7 +38,7 @@ string verboseHLine(int n)
|
||||
|
||||
|
||||
MathGridInset::RowInfo::RowInfo()
|
||||
: skip_(0), lines_(0)
|
||||
: lines_(0), skip_(0)
|
||||
{}
|
||||
|
||||
|
||||
@ -220,8 +220,7 @@ void MathGridInset::metrics(MathMetricsInfo const & mi) const
|
||||
// let the cells adjust themselves
|
||||
MathNestInset::metrics(mi);
|
||||
|
||||
// adjust vertical structure
|
||||
rowinfo_[0].offset_ = 0;
|
||||
// compute absolute sizes of vertical structure
|
||||
for (row_type row = 0; row < nrows(); ++row) {
|
||||
int asc = 0;
|
||||
int desc = 0;
|
||||
@ -232,17 +231,22 @@ void MathGridInset::metrics(MathMetricsInfo const & mi) const
|
||||
}
|
||||
rowinfo_[row].ascent_ = asc;
|
||||
rowinfo_[row].descent_ = desc;
|
||||
rowinfo_[row].offset_ += asc + HLINESEP * rowinfo_[row].lines_;
|
||||
|
||||
rowinfo_[row + 1].offset_ =
|
||||
rowinfo_[row].offset_ +
|
||||
rowinfo_[row].descent_ +
|
||||
rowinfo_[row].skipPixels() +
|
||||
ROWSEP;
|
||||
}
|
||||
rowinfo_[0].ascent_ += HLINESEP * rowinfo_[0].lines_;
|
||||
rowinfo_[nrows()].ascent_ = 0;
|
||||
rowinfo_[nrows()].descent_ = 0;
|
||||
rowinfo_[nrows()].offset_ += HLINESEP * rowinfo_[nrows()].lines_;
|
||||
|
||||
// compute vertical offsets
|
||||
rowinfo_[0].offset_ = 0;
|
||||
for (row_type row = 1; row <= nrows(); ++row) {
|
||||
rowinfo_[row].offset_ =
|
||||
rowinfo_[row - 1].offset_ +
|
||||
rowinfo_[row - 1].descent_ +
|
||||
rowinfo_[row - 1].skipPixels() +
|
||||
ROWSEP +
|
||||
rowinfo_[row].lines_ * HLINESEP +
|
||||
rowinfo_[row].ascent_;
|
||||
}
|
||||
|
||||
// adjust vertical offset
|
||||
int h = 0;
|
||||
@ -251,35 +255,34 @@ void MathGridInset::metrics(MathMetricsInfo const & mi) const
|
||||
h = 0;
|
||||
break;
|
||||
case 'b':
|
||||
h = rowinfo_[nrows()].offset_;
|
||||
h = rowinfo_[nrows() - 1].offset_;
|
||||
break;
|
||||
default:
|
||||
h = rowinfo_[nrows()].offset_ / 2;
|
||||
h = rowinfo_[nrows() - 1].offset_ / 2;
|
||||
}
|
||||
//lyxerr << "\nnrows: " << nrows() << " h: " << h << '\n';
|
||||
for (row_type row = 0; row <= nrows(); ++row) {
|
||||
for (row_type row = 0; row <= nrows(); ++row)
|
||||
rowinfo_[row].offset_ -= h;
|
||||
//lyxerr << "row: " << row << " off: " << rowinfo_[row].offset_ << '\n';
|
||||
}
|
||||
|
||||
|
||||
// adjust horizontal structure
|
||||
colinfo_[0].offset_ = BORDER;
|
||||
|
||||
// compute absolute sizes of horizontal structure
|
||||
for (col_type col = 0; col < ncols(); ++col) {
|
||||
int wid = 0;
|
||||
for (row_type row = 0; row < nrows(); ++row)
|
||||
wid = std::max(wid, xcell(index(row, col)).width());
|
||||
colinfo_[col].width_ = wid;
|
||||
colinfo_[col].offset_ += VLINESEP * colinfo_[col].lines_;
|
||||
|
||||
colinfo_[col + 1].offset_ =
|
||||
colinfo_[col].offset_ +
|
||||
colinfo_[col].width_ +
|
||||
colinfo_[col].skip_ +
|
||||
COLSEP;
|
||||
colinfo_[col].width_ = wid;
|
||||
}
|
||||
colinfo_[ncols()].width_ = 0;
|
||||
colinfo_[ncols()].offset_ += VLINESEP * colinfo_[ncols()].lines_;
|
||||
|
||||
// compute horizontal offsets
|
||||
colinfo_[0].offset_ = BORDER;
|
||||
for (col_type col = 1; col <= ncols(); ++col) {
|
||||
colinfo_[col].offset_ =
|
||||
colinfo_[col - 1].offset_ +
|
||||
colinfo_[col - 1].width_ +
|
||||
colinfo_[col - 1].skip_ +
|
||||
COLSEP +
|
||||
colinfo_[col].lines_ * VLINESEP;
|
||||
}
|
||||
|
||||
|
||||
width_ = colinfo_[ncols() - 1].offset_
|
||||
@ -360,7 +363,6 @@ void MathGridInset::draw(Painter & pain, int x, int y) const
|
||||
for (int i = 0; i < rowinfo_[row].lines_; ++i) {
|
||||
int yy = y + rowinfo_[row].offset_ - rowinfo_[row].ascent_
|
||||
- i * HLINESEP - HLINESEP/2 - ROWSEP/2;
|
||||
//lyxerr << "i: " << i << " yy: " << yy << '\n';
|
||||
pain.line(x + 1, yy, x + width_ - 1, yy);
|
||||
}
|
||||
|
||||
@ -368,7 +370,6 @@ void MathGridInset::draw(Painter & pain, int x, int y) const
|
||||
for (int i = 0; i < colinfo_[col].lines_; ++i) {
|
||||
int xx = x + colinfo_[col].offset_
|
||||
- i * VLINESEP - VLINESEP/2 - COLSEP/2;
|
||||
//lyxerr << "i: " << i << " xx: " << xx << '\n';
|
||||
pain.line(xx, y - ascent_ + 1, xx, y + descent_ - 1);
|
||||
}
|
||||
}
|
||||
@ -715,4 +716,3 @@ void MathGridInset::write(WriteStream & os) const
|
||||
os << "\\\\" << s.c_str();
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user