From 0a8631ad447b47c9488e65295736bb5cce46883b Mon Sep 17 00:00:00 2001 From: John Levon Date: Tue, 9 Jul 2002 16:23:20 +0000 Subject: [PATCH] A couple of minor bug fixes and cleanups git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4574 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ChangeLog | 9 +++++ src/frontends/ChangeLog | 6 ++++ src/frontends/Painter.C | 12 +++++-- src/frontends/Painter.h | 11 ++++-- src/frontends/screen.h | 2 +- src/frontends/xforms/ChangeLog | 4 +++ src/frontends/xforms/xscreen.C | 2 +- src/lengthcommon.h | 2 +- src/lyxfunc.C | 7 ++-- src/lyxtext.h | 3 ++ src/text.C | 65 ++++++++++++++++------------------ 11 files changed, 76 insertions(+), 47 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 27484466c5..7fbb7d1484 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2002-07-09 John Levon + + * lengthcommon.h: whitespace + + * lyxfunc.C: update scrollbar after goto paragraph + + * lyxtext.h: factor out page break drawing, and fix it so + page break/added space paints as selected nicely + 2002-07-09 John Levon * BufferView_pimpl.C: add FIXMEs, clean up a little diff --git a/src/frontends/ChangeLog b/src/frontends/ChangeLog index 816c96626c..58d13634d7 100644 --- a/src/frontends/ChangeLog +++ b/src/frontends/ChangeLog @@ -1,3 +1,9 @@ +2002-07-09 John Levon + + * Painter.C: + * Painter.h: make frame/background painting optional + for rectText + 2002-07-05 Angus Leeming * lyx_gui.h (hexname): new function. diff --git a/src/frontends/Painter.C b/src/frontends/Painter.C index af127d5b3d..445a3493af 100644 --- a/src/frontends/Painter.C +++ b/src/frontends/Painter.C @@ -67,9 +67,15 @@ Painter & Painter::rectText(int x, int baseline, font_metrics::rectText(str, font, width, ascent, descent); - rectangle(x, baseline - ascent, width, ascent + descent, frame); - fillRectangle(x + 1, baseline - ascent + 1, width - 1, - ascent + descent - 1, back); + if (frame != LColor::none) { + rectangle(x, baseline - ascent, width, ascent + descent, frame); + } + + if (back != LColor::none) { + fillRectangle(x + 1, baseline - ascent + 1, width - 1, + ascent + descent - 1, back); + } + text(x + 3, baseline, str, font); return *this; } diff --git a/src/frontends/Painter.h b/src/frontends/Painter.h index f629234f0b..25d94cc256 100644 --- a/src/frontends/Painter.h +++ b/src/frontends/Painter.h @@ -151,12 +151,17 @@ public: virtual Painter & text(int x, int y, char c, LyXFont const & f) = 0; - /// draw a string and enclose it inside a rectangle + /** + * Draw a string and enclose it inside a rectangle. If + * back color is specified, the background is cleared with + * the given color. If frame is specified, a thin frame is drawn + * around the text with the given color. + */ Painter & rectText(int x, int baseline, string const & string, LyXFont const & font, - LColor::color back, - LColor::color frame); + LColor::color back = LColor::none, + LColor::color frame = LColor::none); /// draw a string and enclose it inside a button frame Painter & buttonText(int x, diff --git a/src/frontends/screen.h b/src/frontends/screen.h index 10e9e40a42..b0e1a6232e 100644 --- a/src/frontends/screen.h +++ b/src/frontends/screen.h @@ -110,7 +110,7 @@ public: * @param bv the bufferview * @return true if a change was necessary * - * Scrolls the screen so that the cursor is visible, + * Scrolls the screen so that the cursor is visible */ virtual bool fitCursor(LyXText *, BufferView *); diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index 88eb946d13..c2eaf4302f 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,7 @@ +2002-07-09 John Levon + + * xscreen.C: add const + 2002-07-09 Angus Leeming * xformsImage.C (scale): use boost::tie. diff --git a/src/frontends/xforms/xscreen.C b/src/frontends/xforms/xscreen.C index 23544eb6a6..807a1b37e4 100644 --- a/src/frontends/xforms/xscreen.C +++ b/src/frontends/xforms/xscreen.C @@ -206,7 +206,7 @@ void XScreen::draw(LyXText * text, BufferView * bv, unsigned int y) if (cursor_visible_) hideCursor(); int const old_first = text->first_y; - bool internal = (text == bv->text); + bool const internal = (text == bv->text); text->first_y = y; // is any optimization possible? diff --git a/src/lengthcommon.h b/src/lengthcommon.h index 71d72ea988..57095514ba 100644 --- a/src/lengthcommon.h +++ b/src/lengthcommon.h @@ -14,7 +14,7 @@ extern int const num_units; * * FIXME: I am not sure if "mu" should be possible to select (Lgb) */ -extern char const *unit_name[]; +extern char const * unit_name[]; /// return the unit given a string representation such as "cm" LyXLength::UNIT unitFromString(string const & data); diff --git a/src/lyxfunc.C b/src/lyxfunc.C index b35df71a4b..c024395fae 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -1393,11 +1393,11 @@ string const LyXFunc::dispatch(kb_action action, string argument) owner->view()->buffer(bufferlist.loadLyXFile(s)); } - // Set the cursor owner->view()->setCursorFromRow(row); - // Recenter screen owner->view()->center(); + // see BufferView_pimpl::center() + owner->view()->updateScrollbar(); } break; @@ -1427,8 +1427,9 @@ string const LyXFunc::dispatch(kb_action action, string argument) owner->view()->setState(); owner->showState(); - // Recenter screen owner->view()->center(); + // see BufferView_pimpl::center() + owner->view()->updateScrollbar(); } break; diff --git a/src/lyxtext.h b/src/lyxtext.h index bd27342e77..949681298d 100644 --- a/src/lyxtext.h +++ b/src/lyxtext.h @@ -589,6 +589,9 @@ private: /// paint appendix marker void paintRowAppendix(DrawRowParams & p); + /// paint page break marker. Returns its height. + int paintPageBreak(string const & label, int y, DrawRowParams & p); + /// paint env depth bar void paintRowDepthBar(DrawRowParams & p); diff --git a/src/text.C b/src/text.C index f2582dc463..d85417f577 100644 --- a/src/text.C +++ b/src/text.C @@ -3308,9 +3308,7 @@ int LyXText::drawLengthMarker(DrawRowParams & p, string const & prefix, p.pain->rectText(leftx + 2 * arrow_size + 5, start + ((end - start) / 2) + d, - str, font, - backgroundColor(), - backgroundColor()); + str, font); // top arrow p.pain->line(leftx, ty1, midx, ty2, LColor::added_space); @@ -3327,6 +3325,30 @@ int LyXText::drawLengthMarker(DrawRowParams & p, string const & prefix, } +int LyXText::paintPageBreak(string const & label, int y, DrawRowParams & p) +{ + LyXFont pb_font; + pb_font.setColor(LColor::pagebreak).decSize(); + + int w = 0; + int a = 0; + int d = 0; + font_metrics::rectText(label, pb_font, w, a, d); + + int const text_start = p.xo + ((p.width - w) / 2); + int const text_end = text_start + w; + + p.pain->rectText(text_start, y + d, label, pb_font); + + p.pain->line(p.xo, y, text_start, y, + LColor::pagebreak, Painter::line_onoffdash); + p.pain->line(text_end, y, p.xo + p.width, y, + LColor::pagebreak, Painter::line_onoffdash); + + return 3 * defaultHeight(); +} + + void LyXText::paintFirstRow(DrawRowParams & p) { Paragraph * par = p.row->par(); @@ -3345,22 +3367,8 @@ void LyXText::paintFirstRow(DrawRowParams & p) // draw a top pagebreak if (parparams.pagebreakTop()) { - int const y = p.yo + y_top + 2*defaultHeight(); - p.pain->line(p.xo, y, p.xo + p.width, y, - LColor::pagebreak, Painter::line_onoffdash); - - int w = 0; - int a = 0; - int d = 0; - - LyXFont pb_font; - pb_font.setColor(LColor::pagebreak).decSize(); - font_metrics::rectText(_("Page Break (top)"), pb_font, w, a, d); - p.pain->rectText((p.width - w)/2, y + d, - _("Page Break (top)"), pb_font, - backgroundColor(), - backgroundColor()); - y_top += 3 * defaultHeight(); + y_top += paintPageBreak(_("Page Break (top)"), + p.yo + y_top + 2 * defaultHeight(), p); } // draw the additional space if needed: @@ -3523,22 +3531,8 @@ void LyXText::paintLastRow(DrawRowParams & p) // draw a bottom pagebreak if (parparams.pagebreakBottom()) { - LyXFont pb_font; - pb_font.setColor(LColor::pagebreak).decSize(); - int const y = p.yo + y_bottom - 2 * defaultHeight(); - - p.pain->line(p.xo, y, p.xo + p.width, y, LColor::pagebreak, - Painter::line_onoffdash); - - int w = 0; - int a = 0; - int d = 0; - font_metrics::rectText(_("Page Break (bottom)"), pb_font, w, a, d); - p.pain->rectText((ww - w) / 2, y + d, - _("Page Break (bottom)"), - pb_font, backgroundColor(), backgroundColor()); - - y_bottom -= 3 * defaultHeight(); + y_bottom -= paintPageBreak(_("Page Break (bottom)"), + p.yo + y_bottom - 2 * defaultHeight(), p); } // draw the additional space if needed: @@ -3611,6 +3605,7 @@ void LyXText::paintLastRow(DrawRowParams & p) break; } } + void LyXText::paintRowText(DrawRowParams & p) {