diff --git a/src/ChangeLog b/src/ChangeLog index 4c4d58568b..a07b6a14b4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3,6 +3,10 @@ * rowpainter.C (paintText): Ensure that "paragraphs().size() - 1" can be used meaningfully in a comparison. +2005-02-13 André Pönitz + + * bufferview_funcs.C (coordOffset): improve cursor drawing + 2005-02-13 André Pönitz * Cursor.[Ch] (fixIfBroken): new method, try to fix a broken cursor diff --git a/src/bufferview_funcs.C b/src/bufferview_funcs.C index 8032e6cdac..74688ae6b4 100644 --- a/src/bufferview_funcs.C +++ b/src/bufferview_funcs.C @@ -174,7 +174,10 @@ Point coordOffset(DocIterator const & dit) y += par.rows()[rit].height(); y += par.rows()[par.pos2row(sl.pos())].ascent(); x += dit.bottom().text()->cursorX(dit.bottom()); - return Point(x,y); + // The following correction should not be there at all. + // The cusor looks much better with the -1, though. + --x; + return Point(x, y); } diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 39254ffbf6..711a3381e4 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,9 @@ +2005-02-13 André Pönitz + + * insettext.[Ch] (border_): new + * insettext.C (metrics, draw, drawFrame, clearInset, getCursorPos): + use border_ + 2005-02-14 Angus Leeming * insetlatexaccent.C (draw): squash a couple of MSVC warnings diff --git a/src/insets/insettext.C b/src/insets/insettext.C index f3c7a5450f..7de2edf1e1 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -70,6 +70,9 @@ using std::ostream; using std::vector; +int InsetText::border_ = 2; + + InsetText::InsetText(BufferParams const & bp) : drawFrame_(false), frame_color_(LColor::insetframe), text_(0) { @@ -92,7 +95,8 @@ InsetText::InsetText(InsetText const & in) } -InsetText::InsetText() : text_(0) +InsetText::InsetText() + : text_(0) {} @@ -168,9 +172,14 @@ void InsetText::metrics(MetricsInfo & mi, Dimension & dim) const { //lyxerr << "InsetText::metrics: width: " << mi.base.textwidth << endl; setViewCache(mi.base.bv); + mi.base.textwidth -= 2 * border_; font_ = mi.base.font; text_.font_ = mi.base.font; text_.metrics(mi, dim); + dim.asc += border_; + dim.des += border_; + dim.wid += 2 * border_; + mi.base.textwidth += 2 * border_; dim_ = dim; } @@ -185,10 +194,7 @@ void InsetText::draw(PainterInfo & pi, int x, int y) const bv->hideCursor(); x += scroll(); - //y -= text_.ascent(); - - - text_.draw(pi, x, y); + text_.draw(pi, x + border_, y); if (drawFrame_) drawFrame(pi.pain, x, y); @@ -206,18 +212,18 @@ void InsetText::drawSelection(PainterInfo & pi, int x, int y) const void InsetText::drawFrame(Painter & pain, int x, int y) const { - int const w = max(1, text_.width()); - int const h = text_.height(); - int const a = text_.ascent(); + int const w = text_.width() + border_; + int const a = text_.ascent() + border_; + int const h = a + text_.descent() + border_; pain.rectangle(x, y - a, w, h, frameColor()); } void InsetText::clearInset(Painter & pain, int x, int y) const { - int const w = text_.width(); - int const h = text_.height(); - int const a = text_.ascent(); + int const w = text_.width() + border_; + int const a = text_.ascent() + border_; + int const h = a + text_.descent() + border_; pain.fillRectangle(x, y - a, w, h, backgroundColor()); } @@ -356,7 +362,7 @@ void InsetText::validate(LaTeXFeatures & features) const void InsetText::getCursorPos(CursorSlice const & sl, int & x, int & y) const { - x = text_.cursorX(sl); + x = text_.cursorX(sl) + border_; y = text_.cursorY(sl); } diff --git a/src/insets/insettext.h b/src/insets/insettext.h index ad8664f1ab..6a26d2672b 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -165,6 +165,8 @@ private: int frame_color_; /// mutable lyx::pit_type old_pit; + /// + static int border_; public: /// mutable LyXText text_;