| Attached Files | Lecture.sla [^] (151,298 bytes) 11-Mar-30 13:58
9892.diff [^] (17,825 bytes) 11-Jun-03 12:25 [Show Content] [Hide Content]Index: scribus/pagepalette.cpp
===================================================================
--- scribus/pagepalette.cpp (révision 16614)
+++ scribus/pagepalette.cpp (copie de travail)
@@ -643,8 +643,8 @@
{
bool oldMPMode = currView->Doc->masterPageMode();
int storedPageNum = currView->Doc->currentPageNumber();
- int storedViewXCoor = currView->horizontalScrollBar()->value();
- int storedViewYCoor = currView->verticalScrollBar()->value();
+ int storedViewXCoor = currView->viewportPos().x();
+ int storedViewYCoor = currView->viewportPos().y();
currView->Doc->setMasterPageMode(true);
currView->Doc->scMW()->DeletePage2(currView->Doc->MasterNames[tmp]);
Index: scribus/canvasgesture_rulermove.cpp
===================================================================
--- scribus/canvasgesture_rulermove.cpp (révision 16614)
+++ scribus/canvasgesture_rulermove.cpp (copie de travail)
@@ -159,7 +159,7 @@
{
FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
const int page = m_doc->OnPage(mousePointDoc.x(), mousePointDoc.y());
- QRect viewport(m_view->viewport()->mapToGlobal(QPoint(0,0)), QSize(m_view->visibleWidth(), m_view->visibleHeight()));
+ QRect viewport(m_view->widget()->mapToGlobal(QPoint(0,0)), QSize(m_view->visibleWidth(), m_view->visibleHeight()));
QPoint newMousePoint = m->globalPos() - (m_canvas->mapToParent(QPoint(0, 0)) + m_canvas->parentWidget()->mapToGlobal(QPoint(0, 0)));
switch (m_mode)
{
Index: scribus/scribusview.h
===================================================================
--- scribus/scribusview.h (révision 16614)
+++ scribus/scribusview.h (copie de travail)
@@ -56,6 +56,8 @@
#include <QWheelEvent>
#include <QRubberBand>
#include <QList>
+#include <QScrollBar>
+#include <QGridLayout>
class QEvent;
class QMimeData;
@@ -81,11 +83,42 @@
class TransactionSettings;
+class SCRIBUS_API ScribusViewWidget : public QWidget
+{
+ Q_OBJECT
+
+ QGridLayout * viewLayout;
+ Canvas * canvas;
+ QSizeF canvasSize;
+ QScrollBar * m_verticalScrollBar;
+ QScrollBar * m_horizontalScrollBar;
+
+public:
+ ScribusViewWidget(QWidget * parent);
+ ~ScribusViewWidget();
+
+ QScrollBar * verticalScrollBar() const{return m_verticalScrollBar;}
+ QScrollBar * horizontalScrollBar() const{return m_horizontalScrollBar;}
+
+ void setWidget(Canvas * c);
+ Canvas * widget() const;
+
+ void ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50);
+ QPoint viewportPos() const;
+
+protected:
+ void scrollContentsBy ( int dx, int dy );
+
+private slots:
+ void viewportPosChange(int);
+
+};
+
/**
* This class provides an incomplete base for your application view.
*/
-class SCRIBUS_API ScribusView : public QScrollArea, public Observer<QRectF>
+class SCRIBUS_API ScribusView : public ScribusViewWidget, public Observer<QRectF>
{
Q_OBJECT
@@ -257,8 +290,8 @@
int contentsWidth();
int contentsHeight();
void setContentsPos(int x, int y);
- int visibleWidth() { return viewport()->size().width(); } ;
- int visibleHeight() { return viewport()->size().height(); } ;
+ int visibleWidth() ;
+ int visibleHeight();
void stopAllDrags();
void scrollBy(int x, int y);
void zoom(double scale = 0.0);
Index: scribus/scribusview.cpp
===================================================================
--- scribus/scribusview.cpp (révision 16614)
+++ scribus/scribusview.cpp (copie de travail)
@@ -129,9 +129,68 @@
using namespace std;
+ScribusViewWidget::ScribusViewWidget(QWidget *parent):
+ QWidget(parent),
+ canvas(0)
+{
+ m_verticalScrollBar = new QScrollBar(Qt::Vertical, this);
+ m_horizontalScrollBar = new QScrollBar(Qt::Horizontal, this);
+ viewLayout = new QGridLayout(this);
+ viewLayout->addWidget(m_verticalScrollBar, 0, 1);
+ viewLayout->addWidget(m_horizontalScrollBar, 1,0);
+
+ connect(m_horizontalScrollBar, SIGNAL(valueChanged(int)), this, SLOT(viewportPosChange(int)));
+ connect(m_verticalScrollBar, SIGNAL(valueChanged(int)), this, SLOT(viewportPosChange(int)));
+}
+
+ScribusViewWidget::~ScribusViewWidget()
+{
+
+}
+
+void ScribusViewWidget::setWidget(Canvas *c)
+{
+ canvas = c;
+ viewLayout->addWidget(canvas, 0,0);
+}
+
+Canvas * ScribusViewWidget::widget() const
+{
+ return canvas;
+}
+
+void ScribusViewWidget::ensureVisible(int x, int y, int xmargin, int ymargin)
+{
+ m_horizontalScrollBar->setValue(x - xmargin);
+ m_verticalScrollBar->setValue(y - ymargin);
+}
+
+QPoint ScribusViewWidget::viewportPos() const
+{
+ return QPoint(m_horizontalScrollBar->value(), m_verticalScrollBar->value());
+}
+
+
+void ScribusViewWidget::scrollContentsBy(int dx, int dy)
+{
+ if(dx != 0)
+ m_horizontalScrollBar->setValue(m_horizontalScrollBar->value() + dx);
+ if(dy != 0)
+ m_verticalScrollBar->setValue(m_verticalScrollBar->value() + dy);
+}
+
+void ScribusViewWidget::viewportPosChange(int)
+{
+ QRect uRect(m_horizontalScrollBar->value(), m_verticalScrollBar->value(),
+ width(), height());
+ canvas->update(uRect);
+}
+
+
+
ScribusView::ScribusView(QWidget* win, ScribusMainWindow* mw, ScribusDoc *doc) :
- QScrollArea(win),
+ ScribusViewWidget(win),
Doc(doc),
m_canvas(new Canvas(doc, this)),
Prefs(&(PrefsManager::instance()->appPrefs)),
@@ -161,15 +220,15 @@
setObjectName("s");
setAttribute(Qt::WA_StaticContents);
setAttribute(Qt::WA_InputMethodEnabled, true);
- setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
- setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
- setViewportMargins(m_vhRulerHW, m_vhRulerHW, 0, 0);
- setWidgetResizable(false);
+// setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+// setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+// setViewportMargins(m_vhRulerHW, m_vhRulerHW, 0, 0);
+// setWidgetResizable(false);
m_canvasMode = CanvasMode::createForAppMode(this, Doc->appMode);
setWidget(m_canvas);
//already done by QScrollArea: widget()->installEventFilter(this);
installEventFilter(this); // FIXME:av
-// viewport()->setBackgroundMode(Qt::PaletteBackground);
+// widget()->setBackgroundMode(Qt::PaletteBackground);
setFocusPolicy(Qt::ClickFocus);
QFont fo = QFont(font());
// #8058: Better not use too small font size on Windows
@@ -456,16 +515,16 @@
if (!re.isValid() && // dont check this all the time
( m_oldCanvasWidth != newCanvasWidth || m_oldCanvasHeight != newCanvasHeight))
{
- QSize maxViewport = maximumViewportSize();
+// QSize maxViewport = maximumViewportSize();
horizontalScrollBar()->setRange(qRound(Doc->minCanvasCoordinate.x() * scale),
- qRound(Doc->maxCanvasCoordinate.x() * scale) - maxViewport.width());
+ qRound(Doc->maxCanvasCoordinate.x() * scale)/* - maxViewport.width()*/);
verticalScrollBar()->setRange(qRound(Doc->minCanvasCoordinate.y() * scale),
- qRound(Doc->maxCanvasCoordinate.y() * scale) - maxViewport.height());
+ qRound(Doc->maxCanvasCoordinate.y() * scale) /*- maxViewport.height()*/);
/* qDebug() << "adjustCanvas [" << m_oldCanvasWidth << m_oldCanvasHeight << " ] -> [" << newCanvasWidth << newCanvasHeight
<< "] (" << Doc->minCanvasCoordinate.x() << Doc->minCanvasCoordinate.y() << ") - ("
<< Doc->maxCanvasCoordinate.x() << Doc->maxCanvasCoordinate.y() << ") @" << scale << maxViewport;
*/
- widget()->resize(newCanvasWidth, newCanvasHeight);
+// widget()->resize(newCanvasWidth, newCanvasHeight);
m_oldCanvasWidth = newCanvasWidth;
m_oldCanvasHeight = newCanvasHeight;
}
@@ -637,7 +696,7 @@
evSpon = true;
#endif
QScrollArea::paintEvent(p);
-// QPainter qp(viewport());
+// QPainter qp(widget());
// drawContents(&qp, p->rect().x(), p->rect().y(), p->rect().width(), p->rect().height());
}
*/
@@ -773,7 +832,7 @@
DraggedGroup = true;
DraggedGroupFirst = true;
getDragRectScreen(&gx, &gy, &gw, &gh);
-// QPoint evP = viewport()->mapToGlobal(e->pos());
+// QPoint evP = widget()->mapToGlobal(e->pos());
// evP -= QPoint(contentsX(), contentsY());
// redrawMarker->setGeometry(QRect(evP.x() + 1, evP.y() + 1, qRound(gw), qRound(gh)).normalized());
// if (!redrawMarker->isVisible())
@@ -800,7 +859,7 @@
dragX = dragPosDoc.x(); //e->pos().x() / m_canvas->scale();
dragY = dragPosDoc.y(); //e->pos().y() / m_canvas->scale();
// getDragRectScreen(&gx, &gy, &gw, &gh);
-// QPoint evP = viewport()->mapToGlobal(e->pos());
+// QPoint evP = widget()->mapToGlobal(e->pos());
// evP -= QPoint(contentsX(), contentsY());
// redrawMarker->setGeometry(QRect(evP.x() + 2, evP.y() + 2, qRound(gw - 2), qRound(gh - 2)).normalized());
// if (!redrawMarker->isVisible())
@@ -2314,7 +2373,7 @@
void ScribusView::resizeEvent ( QResizeEvent * event )
{
// qDebug() << "ScribusView::resizeEvent";
- QScrollArea::resizeEvent(event);
+ ScribusViewWidget::resizeEvent(event);
horizRuler->setGeometry(m_vhRulerHW, 1, width()-m_vhRulerHW-1, m_vhRulerHW);
vertRuler->setGeometry(1, m_vhRulerHW, m_vhRulerHW, height()-m_vhRulerHW-1);
rulerMover->setGeometry(1, 1, m_vhRulerHW, m_vhRulerHW);
@@ -2527,7 +2586,7 @@
{
updateOn = on;
setUpdatesEnabled(on);
- viewport()->setUpdatesEnabled(on);
+ widget()->setUpdatesEnabled(on);
}
@@ -2573,12 +2632,12 @@
}
// enlarge the rectangle when rounding to int:
m_canvas->update(static_cast<int>(x), static_cast<int>(y),
- qMin(qRound(h + 0.5), viewport()->width()),
- qMin(qRound(w + 0.5), viewport()->height()));
+ qMin(qRound(h + 0.5), widget()->width()),
+ qMin(qRound(w + 0.5), widget()->height()));
*/ }
else
{
- m_canvas->update(horizontalScrollBar()->value(), verticalScrollBar()->value(), viewport()->width(), viewport()->height());
+ m_canvas->update(horizontalScrollBar()->value(), verticalScrollBar()->value(), widget()->width(), widget()->height());
}
}
@@ -2592,11 +2651,11 @@
horizontalScrollBar()->setValue(qRound(x * scale));
verticalScrollBar()->setValue(qRound(y * scale));
// fix ranges
- QSize maxViewport = maximumViewportSize();
+// QSize maxViewport = maximumViewportSize();
horizontalScrollBar()->setRange(qRound(Doc->minCanvasCoordinate.x() * scale),
- qRound(Doc->maxCanvasCoordinate.x() * scale) - maxViewport.width());
+ qRound(Doc->maxCanvasCoordinate.x() * scale) /*- maxViewport.width()*/);
verticalScrollBar()->setRange(qRound(Doc->minCanvasCoordinate.y() * scale),
- qRound(Doc->maxCanvasCoordinate.y() * scale) - maxViewport.height());
+ qRound(Doc->maxCanvasCoordinate.y() * scale) /*- maxViewport.height()*/);
}
@@ -2606,8 +2665,8 @@
void ScribusView::setCanvasCenter(double x, double y)
{
double scale = m_canvas->scale();
- setCanvasOrigin(x - viewport()->width() / scale,
- y - viewport()->height() / scale);
+ setCanvasOrigin(x - widget()->width() / scale,
+ y - widget()->height() / scale);
}
/*!
@@ -2640,8 +2699,8 @@
double scale = m_canvas->scale();
return QRectF(horizontalScrollBar()->value() / scale,
verticalScrollBar()->value() / scale,
- viewport()->width() / scale,
- viewport()->height() / scale);
+ widget()->width() / scale,
+ widget()->height() / scale);
}
@@ -2811,7 +2870,7 @@
if (m_ScMW->scriptIsRunning())
return;
QPoint nx = m_canvas->canvasToLocal(FPoint(x, y));
- QSize viewsize = viewport()->size();
+ QSize viewsize = widget()->size();
// qDebug() << "setCCPo" << nx << viewsize;
setContentsPos(nx.x() - viewsize.width() / 2, nx.y() - viewsize.height() / 2);
}
@@ -3132,7 +3191,7 @@
#if 0
void ScribusView::rulerMove(QMouseEvent *m)
{
- QPoint py(viewport()->mapFromGlobal(m->globalPos()));
+ QPoint py(widget()->mapFromGlobal(m->globalPos()));
int newY = py.y();
int newX = py.x();
QPoint out = viewportToContents(py);
@@ -3148,7 +3207,7 @@
void ScribusView::setNewRulerOrigin(QMouseEvent *m)
{
- QPoint py = viewport()->mapFromGlobal(m->globalPos());
+ QPoint py = widget()->mapFromGlobal(m->globalPos());
Doc->rulerXoffset = (py.x() + contentsX()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.x();
Doc->rulerYoffset = (py.y() + contentsY()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.y();
if (Doc->guidesSettings.rulerMode)
@@ -3176,7 +3235,7 @@
#if 0
void ScribusView::FromHRuler(QMouseEvent *m)
{
- QPoint py = viewport()->mapFromGlobal(m->globalPos());
+ QPoint py = widget()->mapFromGlobal(m->globalPos());
int newY = py.y();
QPoint out = viewportToContents(py);
emit MousePos((py.x() + contentsX())/m_canvas->scale(), (py.y() + 2 + contentsY())/m_canvas->scale());
@@ -3185,7 +3244,7 @@
if (!redrawMarker->isVisible())
redrawMarker->show();
if (QRect(0, 0, visibleWidth(), visibleHeight()).contains(py))
- redrawMarker->setGeometry(QRect(viewport()->mapToGlobal(QPoint(0, 0)).x(), m->globalPos().y(), visibleWidth(), 1));
+ redrawMarker->setGeometry(QRect(widget()->mapToGlobal(QPoint(0, 0)).x(), m->globalPos().y(), visibleWidth(), 1));
DrHY = newY;
double newXp = (py.x() + contentsX()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.x();
double newYp = (py.y() + contentsY()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.y();
@@ -3198,7 +3257,7 @@
void ScribusView::FromVRuler(QMouseEvent *m)
{
- QPoint py = viewport()->mapFromGlobal(m->globalPos());
+ QPoint py = widget()->mapFromGlobal(m->globalPos());
int newY = py.x();
QPoint out = viewportToContents(py);
emit MousePos((py.x() + 2 + contentsX())/m_canvas->scale(), (py.y() + contentsY())/m_canvas->scale());
@@ -3207,7 +3266,7 @@
if (!redrawMarker->isVisible())
redrawMarker->show();
if (QRect(0, 0, visibleWidth(), visibleHeight()).contains(py))
- redrawMarker->setGeometry(QRect(m->globalPos().x(), viewport()->mapToGlobal(QPoint(0, 0)).y(), 1, visibleHeight()));
+ redrawMarker->setGeometry(QRect(m->globalPos().x(), widget()->mapToGlobal(QPoint(0, 0)).y(), 1, visibleHeight()));
DrVX = newY;
double newXp = (py.x() + contentsX()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.x();
double newYp = (py.y() + contentsY()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.y();
@@ -3223,7 +3282,7 @@
// TODO: PV - guides refactoring
void ScribusView::SetYGuide(QMouseEvent *m, int oldIndex)
{
- QPoint py = viewport()->mapFromGlobal(m->globalPos());
+ QPoint py = widget()->mapFromGlobal(m->globalPos());
double newX = (py.x() + contentsX()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.x();
double newY = (py.y() + contentsY()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.y();
int pg = Doc->OnPage(newX, newY);
@@ -3286,7 +3345,7 @@
void ScribusView::SetXGuide(QMouseEvent *m, int oldIndex)
{
- QPoint py = viewport()->mapFromGlobal(m->globalPos());
+ QPoint py = widget()->mapFromGlobal(m->globalPos());
double newX = (py.x() + contentsX()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.x();
double newY = (py.y() + contentsY()) / m_canvas->scale() + 0*Doc->minCanvasCoordinate.y();
int pg = Doc->OnPage(newX, newY);
@@ -4720,7 +4779,7 @@
horizRuler->setShown(isShown);
rulerMover->setShown(isShown);
int newTopLeftMargin = isShown ? m_vhRulerHW : 0;
- setViewportMargins(newTopLeftMargin, newTopLeftMargin, 0, 0);
+// setViewportMargins(newTopLeftMargin, newTopLeftMargin, 0, 0);
}
void ScribusView::slotUpdateContents() // deprecated
@@ -4840,7 +4899,7 @@
// hruler events
// vruler events
- return QScrollArea::eventFilter(obj, event);
+ return ScribusViewWidget::eventFilter(obj, event);
}
//Legacy
@@ -4876,12 +4935,12 @@
QPoint ScribusView::contentsToViewport(QPoint p) // deprecated
{
- return p + viewport()->pos();
+ return p + widget()->pos();
}
QPoint ScribusView::viewportToContents(QPoint p) // deprecated
{
- return p - viewport()->pos();
+ return p - widget()->pos();
}
int ScribusView::contentsX() // deprecated
@@ -4913,10 +4972,19 @@
setRulerPos(contentsX(), contentsY());
}
+int ScribusView::visibleWidth()
+{
+ return widget()->size().width();
+}
+int ScribusView::visibleHeight()
+{
+ return widget()->size().height();
+}
+
void ScribusView::scrollContentsBy(int dx, int dy)
{
- QScrollArea::scrollContentsBy (dx, dy);
+ scrollContentsBy (dx, dy);
setRulerPos(contentsX(), contentsY());
}
@@ -4952,10 +5020,10 @@
int nh = qMax(qRound((Doc->maxCanvasCoordinate.y() - Doc->minCanvasCoordinate.y()) * m_canvas->scale()), visibleHeight());
resizeContents(nw, nh); // FIXME : should be avoided here, cause an unnecessary paintEvent despite updates disabled
if (preservePoint)
- canvasPoint = viewport()->mapFromGlobal(globalPoint);
+ canvasPoint = widget()->mapFromGlobal(globalPoint);
else
{
- QSize viewsize = viewport()->size();
+ QSize viewsize = widget()->size();
canvasPoint = QPoint(viewsize.width() / 2, viewsize.height() / 2);
}
setContentsPos(localPoint.x() - canvasPoint.x(), localPoint.y() - canvasPoint.y());
Index: scribus/pageitem_textframe.cpp
===================================================================
--- scribus/pageitem_textframe.cpp (révision 16614)
+++ scribus/pageitem_textframe.cpp (copie de travail)
@@ -1907,8 +1907,8 @@
}
else
{
- --a;
- --current.itemsInLine;
+ a = current.line.firstItem - 1;
+ current.itemsInLine = 0;
}
}
if (a >= 0)
Index: scribus/canvas.cpp
===================================================================
--- scribus/canvas.cpp (révision 16614)
+++ scribus/canvas.cpp (copie de travail)
@@ -585,7 +585,7 @@
bool Canvas::adjustBuffer()
{
bool ret = false;
- QRect viewport(-x(), -y(), m_view->viewport()->width(), m_view->viewport()->height());
+ QRect viewport(-x(), -y(), m_view->widget()->width(), m_view->widget()->height());
// qDebug()<<"Canvas::adjustBuffer"<<viewport<<m_viewMode.forceRedraw<<m_viewMode.operItemSelecting;
QPoint minCanvasCoordinate = canvasToLocal(QPointF(0.0, 0.0));
if (minCanvasCoordinate != m_oldMinCanvasCoordinate)
|