r20537 by jghali -
scribus-commit
scribus-commit at lists.scribus.net
Fri Nov 6 07:36:11 UTC 2015
Author: jghali
Date: Fri Nov 6 07:36:11 2015
New Revision: 20537
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=20537
Log:
#13470: missing Layout Update/Display Refresh for Text boxes using certain 'align and distribute' buttons
#8548: redrawing the canvas goes wrong when object moved with arrow keys forcing the canvas to scroll
Modified:
trunk/Scribus/scribus/canvas.cpp
Modified: trunk/Scribus/scribus/canvas.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=20537&path=/trunk/Scribus/scribus/canvas.cpp
==============================================================================
--- trunk/Scribus/scribus/canvas.cpp (original)
+++ trunk/Scribus/scribus/canvas.cpp Fri Nov 6 07:36:11 2015
@@ -687,29 +687,6 @@
newRect.translate(0, viewport.bottom() - m_bufferRect.bottom());
// qDebug() << "adjust buffer: " << m_bufferRect << "outside viewport" << viewport << " new rect:" << newRect;
-/*
- // enlarge buffer by half a screenwidth:
- QRect newRect(m_bufferRect);
- if (m_bufferRect.left() > viewport.left())
- newRect.setLeft(qMin(newRect.left() - viewport.width()/2, viewport.left()));
- if (m_bufferRect.right() < viewport.right())
- newRect.setRight(qMax(newRect.right() + viewport.width()/2, viewport.right()));
- if (m_bufferRect.top() > viewport.top())
- newRect.setTop(qMin(newRect.top() - viewport.height()/2, viewport.top()));
- if (m_bufferRect.bottom() < viewport.bottom())
- newRect.setBottom(qMax(newRect.bottom() + viewport.height()/2, viewport.bottom()));
- // if too large, try something smaller:
- if (newRect.width() > 2*viewport.width())
- {
- newRect.setLeft(qMax(viewport.left() - viewport.width()/2, newRect.left()));
- newRect.setRight(qMin(viewport.right() + viewport.width()/2, newRect.right()));
- }
- if (newRect.height() > 2*viewport.height())
- {
- newRect.setTop(qMax(viewport.top() - viewport.height()/2, newRect.top()));
- newRect.setBottom(qMin(viewport.bottom() + viewport.height()/2, newRect.bottom()));
- }
-*/
if (!m_bufferRect.intersects(newRect))
{
// qDebug() << "adjust buffer: fresh buffer" << m_bufferRect << "-->" << newRect;
@@ -769,25 +746,29 @@
// qDebug() << "adjust buffer old" << m_bufferRect << "@" << xpos << ypos << "--> new" << newRect;
#endif
p.end();
+
+ // #8548, #13470 do not return true in this case, we only partially update buffer content
+ // and the redraw rect from paintEvent may not be included in the updated area if
+ // canvas has just been resized, after an object has been put in scrap area for eg.
if (newRect.top() < m_bufferRect.top())
{
fillBuffer(&newBuffer, newRect.topLeft(), QRect(newRect.left(), newRect.top(), newRect.width(), m_bufferRect.top() - newRect.top() + 2));
- ret = true;
+ //ret = true;
}
if (newRect.bottom() > m_bufferRect.bottom())
{
fillBuffer(&newBuffer, newRect.topLeft(), QRect(newRect.left(), m_bufferRect.bottom() - 1, newRect.width(), newRect.bottom() - m_bufferRect.bottom() + 2));
- ret = true;
+ //ret = true;
}
if (newRect.left() < m_bufferRect.left())
{
fillBuffer(&newBuffer, newRect.topLeft(), QRect(newRect.left(), m_bufferRect.top(), m_bufferRect.left() - newRect.left() + 2, m_bufferRect.height()));
- ret = true;
+ //ret = true;
}
if (newRect.right() > m_bufferRect.right())
{
fillBuffer(&newBuffer, newRect.topLeft(), QRect(m_bufferRect.right() - 1, m_bufferRect.top(), newRect.right() - m_bufferRect.right() + 2, m_bufferRect.height()));
- ret = true;
+ //ret = true;
}
m_buffer = newBuffer;
m_bufferRect = newRect;
More information about the scribus-commit
mailing list