| Attached Files | screenshot.png [^] (15,205 bytes) 09-Oct-27 13:51

Issue0008548.patch [^] (3,852 bytes) 11-Sep-08 11:38 [Show Content] [Hide Content]Index: Scribus/scribus/scribusdoc.cpp
===================================================================
--- Scribus/scribus/scribusdoc.cpp (revision 16820)
+++ Scribus/scribus/scribusdoc.cpp (working copy)
@@ -9796,8 +9796,6 @@
currItem->moveBy(newX, newY);
if ((currItem->xPos() != oldx) || (currItem->yPos() != oldy))
retw = true;
- //FIXME: stop using m_View
- QRect oldR(currItem->getRedrawBounding(m_View->scale()));
setRedrawBounding(currItem);
currItem->OwnPage = OnPage(currItem);
return retw;
Index: Scribus/scribus/canvas.cpp
===================================================================
--- Scribus/scribus/canvas.cpp (revision 16820)
+++ Scribus/scribus/canvas.cpp (working copy)
@@ -585,21 +585,25 @@
bool Canvas::adjustBuffer()
{
bool ret = false;
+
QRect viewport(-x(), -y(), m_view->viewport()->width(), m_view->viewport()->height());
-// qDebug()<<"Canvas::adjustBuffer"<<viewport<<m_viewMode.forceRedraw<<m_viewMode.operItemSelecting;
+ // qDebug()<<"Canvas::adjustBuffer"<<viewport<<m_viewMode.forceRedraw<<m_viewMode.operItemSelecting;
+
+ bool minCanvasCoordHasChanged = false;
QPoint minCanvasCoordinate = canvasToLocal(QPointF(0.0, 0.0));
if (minCanvasCoordinate != m_oldMinCanvasCoordinate)
{
m_bufferRect.translate(minCanvasCoordinate.x() - m_oldMinCanvasCoordinate.x(),
minCanvasCoordinate.y() - m_oldMinCanvasCoordinate.y());
m_oldMinCanvasCoordinate = minCanvasCoordinate;
+ minCanvasCoordHasChanged = true;
}
#if DRAW_DEBUG_LINES
// qDebug() << "adjust buffer" << m_bufferRect << "for viewport" << viewport;
#endif
- if (!m_bufferRect.isValid())
+ if (!m_bufferRect.isValid() || minCanvasCoordHasChanged)
{
-// qDebug() << "adjust buffer: invalid buffer, viewport" << viewport;
+ // qDebug() << "adjust buffer: invalid buffer, viewport" << viewport << m_bufferRect;
m_bufferRect = viewport;
m_buffer = QPixmap(m_bufferRect.width(), m_bufferRect.height());
fillBuffer(&m_buffer, m_bufferRect.topLeft(), m_bufferRect);
@@ -623,7 +627,7 @@
newRect.translate(0, viewport.top() - m_bufferRect.top());
if (m_bufferRect.bottom() < viewport.bottom())
newRect.translate(0, viewport.bottom() - m_bufferRect.bottom());
-// qDebug() << "adjust buffer: " << m_bufferRect << "outside viewport" << viewport << " new rect:" << newRect;
+ // qDebug() << "adjust buffer: " << m_bufferRect << "outside viewport" << viewport << " new rect:" << newRect;
/*
// enlarge buffer by half a screenwidth:
@@ -650,9 +654,9 @@
*/
if (!m_bufferRect.intersects(newRect))
{
-// qDebug() << "adjust buffer: fresh buffer" << m_bufferRect << "-->" << newRect;
+ // qDebug() << "adjust buffer: fresh buffer" << m_bufferRect << "-->" << newRect;
m_bufferRect = newRect;
-// m_buffer = QImage(m_bufferRect.width(), m_bufferRect.height(), QImage::Format_ARGB32);
+ // m_buffer = QImage(m_bufferRect.width(), m_bufferRect.height(), QImage::Format_ARGB32);
m_buffer = QPixmap(m_bufferRect.width(), m_bufferRect.height());
fillBuffer(&m_buffer, m_bufferRect.topLeft(), m_bufferRect);
ret = true;
@@ -667,7 +671,7 @@
else
{
// copy buffer:
-// QImage newBuffer(newRect.width(), newRect.height(), QImage::Format_ARGB32);
+ // QImage newBuffer(newRect.width(), newRect.height(), QImage::Format_ARGB32);
QPixmap newBuffer(newRect.width(), newRect.height());
QPainter p(&newBuffer);
int xpos = m_bufferRect.x() - newRect.x();
@@ -696,7 +700,7 @@
{
height = newRect.height() - ypos;
}
-// p.drawImage(xpos, ypos, m_buffer, x, y, width + 1, height + 1); // FIXME: == params drawPixmap?
+ // p.drawImage(xpos, ypos, m_buffer, x, y, width + 1, height + 1); // FIXME: == params drawPixmap?
p.drawPixmap(xpos, ypos, m_buffer, x, y, width + 1, height + 1);
#if DRAW_DEBUG_LINES
p.setPen(Qt::blue);
|