diff --git a/uppsrc/RichText/ParaPaint.cpp b/uppsrc/RichText/ParaPaint.cpp index 4c3326481..982f966b0 100644 --- a/uppsrc/RichText/ParaPaint.cpp +++ b/uppsrc/RichText/ParaPaint.cpp @@ -155,6 +155,10 @@ void RichPara::Paint(PageDraw& pw, const Rect& page, PageY py, const PaintInfo& bool highlight = pi.highlightpara >= 0 && pi.highlightpara < pl.len; int hy = py.y - format.before - format.ruler; int phy = py.page; + if(format.ruler && hy >= 0 && hy + format.ruler < page.bottom) + pw.Page(phy).DrawRect(z * page.left + z * format.lm, z * hy, + z * page.right - z * page.left - z * format.rm - z * format.lm, + max(1, z * format.ruler), format.rulerink); if(pi.sell < 0 && pi.selh > 0) for(int p = opy.page; p <= py.page; p++) { int top = z * (p == opy.page ? opy.y : page.top); @@ -361,10 +365,6 @@ void RichPara::Paint(PageDraw& pw, const Rect& page, PageY py, const PaintInfo& pw.Page(py.page).DrawRect(z * page.left, top, z * page.right - z * page.left, z * min(py.y + format.after, page.bottom) - top, InvertColor); } - if(format.ruler && hy >= 0 && hy + format.ruler < page.bottom) - pw.Page(phy).DrawRect(z * page.left + z * format.lm, z * hy, - z * page.right - z * page.left - z * format.rm - z * format.lm, - max(1, z * format.ruler), format.rulerink); } void RichPara::GetRichPos(RichPos& rp, int pos) const diff --git a/uppsrc/RichText/TxtPaint.cpp b/uppsrc/RichText/TxtPaint.cpp index 9614b2338..d26821d8c 100644 --- a/uppsrc/RichText/TxtPaint.cpp +++ b/uppsrc/RichText/TxtPaint.cpp @@ -80,7 +80,7 @@ PageY RichTxt::GetNextPageY(int parti, const RichContext& rc) const py.page++; py.y = rc.page.top; } - py.y += pp.before; + py.y += pp.before + pp.ruler; if(py.y + pp.cy < rc.page.bottom) py.y += pp.cy; else @@ -98,7 +98,7 @@ PageY RichTxt::GetNextPageY(int parti, const RichContext& rc) const } } else - py.y += pp.before + pp.cy + pp.after; + py.y += pp.before + pp.cy + pp.after + pp.ruler; return py; } } @@ -194,7 +194,7 @@ RichCaret RichTxt::GetCaret(int pos, RichContext rc) const if(p.keepnext && parti + 1 < part.GetCount() && part[parti + 1].Is()) { Sync(parti + 1, rc); const Para& pp = part[parti + 1].Get(); - nbefore = pp.before; + nbefore = pp.before + pp.ruler; nline = pp.linecy[0]; } RichCaret tp = Get(parti, rc.styles).GetCaret(pos, rc.page, rc.py, nbefore, nline); @@ -230,7 +230,7 @@ int RichTxt::GetPos(int x, PageY y, RichContext rc) const if(part[parti].Get().keepnext && parti + 1 < part.GetCount() && IsPara(parti + 1)) { Sync(parti + 1, rc); const Para& pp = part[parti + 1].Get(); - nbefore = pp.before; + nbefore = pp.before + pp.ruler; nline = pp.linecy[0]; } return Get(parti, rc.styles).GetPos(x, y, rc.page, rc.py, nbefore, nline) + pos; @@ -325,7 +325,7 @@ void RichTxt::GatherValPos(Vector& f, RichContext rc, int pos, int t if(p.keepnext && parti + 1 < part.GetCount() && IsPara(parti + 1)) { Sync(parti + 1, rc); const Para& pp = part[parti + 1].Get(); - nbefore = pp.before; + nbefore = pp.before + pp.ruler; nline = pp.linecy[0]; } if(p.haspos) @@ -355,7 +355,7 @@ PageY RichTxt::GetTop(RichContext rc) const else { Sync(0, rc); const Para& pp = part[0].Get(); - rc.py.y += pp.before; + rc.py.y += pp.before + pp.ruler; if(BreaksPage(rc.py, pp, 0, rc.page)) rc.Page(); return rc.py; diff --git a/uppsrc/RichText/srcdoc.tpp/QTF$en-us.tpp b/uppsrc/RichText/srcdoc.tpp/QTF$en-us.tpp index 9a3a2d1f3..ffd674b4f 100644 --- a/uppsrc/RichText/srcdoc.tpp/QTF$en-us.tpp +++ b/uppsrc/RichText/srcdoc.tpp/QTF$en-us.tpp @@ -10,7 +10,7 @@ topic "QTF"; texts).&] [s0; &] [s0; It is byte oriented format. Bytes with values 2`-31 are ignored. -Other are interpreted as characters or formatting commands.&] +Other values are interpreted as characters or formatting commands.&] [s0; &] [s0; Letters ([@4 a]`-[@4 zA]`-[@4 Z]), numbers ([@4 0]`-[@4 9]), space (32) and characters&]