+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
+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.
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;
}
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,
* @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 *);
+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.
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?
*
* 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);
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;
owner->view()->setState();
owner->showState();
- // Recenter screen
owner->view()->center();
+ // see BufferView_pimpl::center()
+ owner->view()->updateScrollbar();
}
break;
/// 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);
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);
}
+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();
// 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:
// 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:
break;
}
}
+
void LyXText::paintRowText(DrawRowParams & p)
{