Re: Patch for Bug #2668

From: Dom Lachowicz (doml@appligent.com)
Date: Fri Mar 22 2002 - 17:04:52 EST

  • Next message: Ismo J. Makinen: "Re: Font dialogue problems / GUI issues"

    Committed.

    Dom

    On Fri, 2002-03-22 at 16:56, William Lachance wrote:
    > This fixes the problem where italic characters were being redrawn incorrectly
    > at boundaries. The problem was that we were resetting the fonts, but not the
    > colours. This patch adds a sprinkling of m_pG->setColor(m_colorFG) to fix
    > this problem.
    >
    > [ someone more familiar than me with fp_textRun may want to review this patch
    > before committing. But it seems to work fine. ]
    >
    > ----
    >

    > --- fp_TextRun.cpp Fri Mar 22 16:45:59 2002
    > +++ fp_TextRun.cpp.colourSet Fri Mar 22 16:31:04 2002
    > @@ -1545,7 +1545,7 @@
    >
    > /*
    > TODO We should add more possibilities for text placement here.
    > - It shouldn't be too hard. Just adjust the math a little.
    > + It shouldn't be too hard. Just adjust the math a little.
    > See bug 1297
    > */
    >
    > @@ -1697,8 +1697,8 @@
    > ytemp += pT->m_iDescent /* * 3/2 */;
    > }
    >
    > - if(pT->m_bIsOverhanging)
    > - pT->_drawFirstChar(pDA->xoff + m_iWidth,ytemp);
    > + if(pT->m_bIsOverhanging)
    > + pT->_drawFirstChar(pDA->xoff + m_iWidth,ytemp);
    > }
    >
    > if(pPrev && pPrev->getType() == FPRUN_TEXT)
    > @@ -1715,12 +1715,14 @@
    > }
    >
    > if(pT->m_bIsOverhanging)
    > - pT->_drawLastChar(pDA->xoff,ytemp, pgbCharWidths);
    > + pT->_drawLastChar(pDA->xoff,ytemp, pgbCharWidths);
    > +
    > }
    > }
    >
    > // now draw the whole string
    > - m_pG->setFont(m_pScreenFont);
    > + m_pG->setFont(m_pScreenFont);
    > + m_pG->setColor(m_colorFG); // set colour just in case we drew a first/last char with a diff colour
    >
    > #ifdef BIDI_ENABLED
    > // since we have the visual string in the draw buffer, we just call m_pGr->drawChars()
    > @@ -2035,8 +2037,10 @@
    > if(!m_iLen)
    > return;
    >
    > - // have to sent font, since we were called from a run using different font
    > - m_pG->setFont(m_pScreenFont);
    > + // have to sent font (and colour!), since we were called from a run using different font
    > + m_pG->setFont(m_pScreenFont);
    > + m_pG->setColor(m_colorFG);
    > +
    > #ifdef BIDI_ENABLED
    > FriBidiCharType iVisDirection = getVisDirection();
    >
    > @@ -2067,8 +2071,10 @@
    > if(!m_iLen)
    > return;
    >
    > - // have to sent font, since we were called from a run using different font
    > - m_pG->setFont(m_pScreenFont);
    > + // have to sent font (and colour!), since we were called from a run using different font
    > + m_pG->setFont(m_pScreenFont);
    > + m_pG->setColor(m_colorFG);
    > +
    > #ifdef BIDI_ENABLED
    > if(!s_bBidiOS)
    > {





    This archive was generated by hypermail 2.1.4 : Fri Mar 22 2002 - 17:06:38 EST