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
This commit is contained in:
John Levon 2002-07-09 16:23:20 +00:00
parent 52d30225b8
commit 0a8631ad44
11 changed files with 76 additions and 47 deletions

View File

@ -1,3 +1,12 @@
2002-07-09 John Levon <moz@compsoc.man.ac.uk>
* 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 <moz@compsoc.man.ac.uk>
* BufferView_pimpl.C: add FIXMEs, clean up a little

View File

@ -1,3 +1,9 @@
2002-07-09 John Levon <moz@compsoc.man.ac.uk>
* Painter.C:
* Painter.h: make frame/background painting optional
for rectText
2002-07-05 Angus Leeming <leeming@lyx.org>
* lyx_gui.h (hexname): new function.

View File

@ -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;
}

View File

@ -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,

View File

@ -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 *);

View File

@ -1,3 +1,7 @@
2002-07-09 John Levon <moz@compsoc.man.ac.uk>
* xscreen.C: add const
2002-07-09 Angus Leeming <leeming@lyx.org>
* xformsImage.C (scale): use boost::tie.

View File

@ -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?

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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)
{