]> git.lyx.org Git - lyx.git/commitdiff
Redefine the speed-up "Wide" patch to draw proper boxes
authorMartin Vermeer <martin.vermeer@hut.fi>
Tue, 20 Jun 2006 12:39:39 +0000 (12:39 +0000)
committerMartin Vermeer <martin.vermeer@hut.fi>
Tue, 20 Jun 2006 12:39:39 +0000 (12:39 +0000)
in available space instead of line pairs.

* rowpainter.C
(paintPar): change background rectangle

* insets/insettext.C
(InsetText::draw):
(InsetText::drawSelection): simplify rectangle drawing

* insets/insettext.h: dump Tall()

* insets/insetcollapsable.C
(InsetCollapsable::metrics): subtract button from available
space in case of inlined inset

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14161 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/insetcollapsable.C
src/insets/insettext.C
src/insets/insettext.h
src/rowpainter.C

index 15a29a598137fc44a936cc6eb0de44f0c3b4b6d4..1c9da8cc521edab220ca81e89ea733db5e1ab08c 100644 (file)
@@ -140,6 +140,9 @@ void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const
                        InsetText::metrics(mi, textdim_);
                        openinlined_ = textdim_.wid + 2 * dim.wid <= mi.base.textwidth;
                        if (openinlined_) {
+                               // Correct for button width, and re-fit
+                               mi.base.textwidth -= dim.wid;
+                               InsetText::metrics(mi, textdim_);
                                dim.wid += textdim_.wid;
                                dim.des = max(dim.des - textdim_.asc + dim.asc, textdim_.des);
                                dim.asc = textdim_.asc;
index 950e191a73e135ca1ea85fe708a9aa3cfcb6cd8d..8bcc58ef48b17368fbcd2a2fdd399ab675625678 100644 (file)
@@ -207,13 +207,8 @@ void InsetText::draw(PainterInfo & pi, int x, int y) const
                int const w = text_.width() + 2 * border_;
                int const a = text_.ascent() + border_;
                int const h = a + text_.descent() + border_;
-               int const ww = pi.base.bv->workWidth();
-               if (w > ww - 40 || Wide())  {
-                       pi.pain.line(0, y - a, ww, y - a, frameColor());
-                       pi.pain.line(0, y - a + h, ww, y - a + h, frameColor());
-               } else {
-                       pi.pain.rectangle(x, y - a, w, h, frameColor());
-               }
+               pi.pain.rectangle(x, y - a, (Wide() ? text_.maxwidth_ : w), h, 
+                       frameColor());
        }
 }
 
@@ -223,13 +218,8 @@ void InsetText::drawSelection(PainterInfo & pi, int x, int y) const
        int const w = text_.width() + 2 * border_;
        int const a = text_.ascent() + border_;
        int const h = a + text_.descent() + border_;
-       int const ww = pi.base.bv->workWidth();
-       if (Wide())
-               pi.pain.fillRectangle(0, y - a, ww, h,
-                       backgroundColor());
-       else
-               pi.pain.fillRectangle(x, y - a, w, h,
-                       backgroundColor());
+       pi.pain.fillRectangle(x, y - a, (Wide() ? text_.maxwidth_ : w), h, 
+               backgroundColor());
        text_.drawSelection(pi, x, y);
 }
 
@@ -258,12 +248,6 @@ InsetBase * InsetText::editXY(LCursor & cur, int x, int y)
 }
 
 
-bool const InsetText::Tall() const
-{
-       return text_.ascent() + text_.descent() > 2  * defaultRowHeight();
-}
-
-
 void InsetText::forceParagraphsToDefault(LCursor & cur)
 {
        BufferParams const & bp = cur.buffer().params();
index c98102b08bfc9ae7fa43e739e13017f77d698883..ecf7e0d431dc0b52a93d58a7860badb8b0867e53 100644 (file)
@@ -142,8 +142,6 @@ public:
        ///
        bool & Wide() const { return wide_inset_; }
        ///
-       bool const Tall() const;
-       ///
        void forceParagraphsToDefault(LCursor & cur);
 
 protected:
index a82f7fa3bc1bd01befe830fb445217e23737eda5..e9340dce93a8289794cfa697f70b611bb8bf567b 100644 (file)
@@ -819,8 +819,7 @@ void paintPar
                        if (in) {
                                InsetText const * const t = in->asTextInset();
                                if (t)
-                                       t->Wide() = in_inset_alone_on_row &&
-                                                   t->Tall();
+                                       t->Wide() = in_inset_alone_on_row;
                        }
                }
 
@@ -838,8 +837,8 @@ void paintPar
                        // (if paragraph background was not cleared)
                        if (!repaintAll &&
                            (!in_inset_alone_on_row || row_has_changed)) {
-                               pi.pain.fillRectangle(( rowno ? 0 : x - 10 ), y - rit->ascent(),
-                                   pi.base.bv->workWidth(), rit->height(),
+                               pi.pain.fillRectangle(x, y - rit->ascent(),
+                                   text.maxwidth_, rit->height(),
                                    text.backgroundColor());
                                // If outer row has changed, force nested
                                // insets to repaint completely