revert the last patch: when there is clipping the borders can't be
children of the scrolling widget svn path=/trunk/KDE/kdelibs/; revision=1038759
This commit is contained in:
parent
016d870394
commit
c470055a37
@ -21,7 +21,6 @@
|
|||||||
//Qt
|
//Qt
|
||||||
#include <QGraphicsSceneResizeEvent>
|
#include <QGraphicsSceneResizeEvent>
|
||||||
#include <QGraphicsGridLayout>
|
#include <QGraphicsGridLayout>
|
||||||
#include <QGraphicsAnchorLayout>
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
@ -95,15 +94,14 @@ public:
|
|||||||
topBorder->setSvg(borderSvg);
|
topBorder->setSvg(borderSvg);
|
||||||
topBorder->setElementID("border-top");
|
topBorder->setElementID("border-top");
|
||||||
topBorder->setZValue(900);
|
topBorder->setZValue(900);
|
||||||
bordersLayout->addAnchors(bordersLayout, topBorder, Qt::Horizontal);
|
topBorder->resize(topBorder->effectiveSizeHint(Qt::PreferredSize));
|
||||||
bordersLayout->addAnchor(bordersLayout, Qt::AnchorTop, topBorder, Qt::AnchorTop);
|
topBorder->show();
|
||||||
|
|
||||||
bottomBorder = new Plasma::SvgWidget(q);
|
bottomBorder = new Plasma::SvgWidget(q);
|
||||||
bottomBorder->setSvg(borderSvg);
|
bottomBorder->setSvg(borderSvg);
|
||||||
bottomBorder->setElementID("border-bottom");
|
bottomBorder->setElementID("border-bottom");
|
||||||
bottomBorder->setZValue(900);
|
bottomBorder->setZValue(900);
|
||||||
bordersLayout->addAnchors(bordersLayout, bottomBorder, Qt::Horizontal);
|
bottomBorder->resize(bottomBorder->effectiveSizeHint(Qt::PreferredSize));
|
||||||
bordersLayout->addAnchor(bordersLayout, Qt::AnchorBottom, bottomBorder, Qt::AnchorBottom);
|
bottomBorder->show();
|
||||||
} else if (topBorder && widget && widget->size().height() <= q->size().height()) {
|
} else if (topBorder && widget && widget->size().height() <= q->size().height()) {
|
||||||
//FIXME: in some cases topBorder->deleteLater() is deleteNever(), why?
|
//FIXME: in some cases topBorder->deleteLater() is deleteNever(), why?
|
||||||
topBorder->hide();
|
topBorder->hide();
|
||||||
@ -120,16 +118,14 @@ public:
|
|||||||
leftBorder->setSvg(borderSvg);
|
leftBorder->setSvg(borderSvg);
|
||||||
leftBorder->setElementID("border-left");
|
leftBorder->setElementID("border-left");
|
||||||
leftBorder->setZValue(900);
|
leftBorder->setZValue(900);
|
||||||
bordersLayout->addAnchors(bordersLayout, leftBorder, Qt::Vertical);
|
leftBorder->resize(leftBorder->effectiveSizeHint(Qt::PreferredSize));
|
||||||
bordersLayout->addAnchor(bordersLayout, Qt::AnchorLeft, leftBorder, Qt::AnchorLeft);
|
leftBorder->show();
|
||||||
|
|
||||||
rightBorder = new Plasma::SvgWidget(q);
|
rightBorder = new Plasma::SvgWidget(q);
|
||||||
rightBorder->setSvg(borderSvg);
|
rightBorder->setSvg(borderSvg);
|
||||||
rightBorder->setElementID("border-right");
|
rightBorder->setElementID("border-right");
|
||||||
rightBorder->setZValue(900);
|
rightBorder->setZValue(900);
|
||||||
bordersLayout->addAnchors(bordersLayout, rightBorder, Qt::Vertical);
|
rightBorder->resize(rightBorder->effectiveSizeHint(Qt::PreferredSize));
|
||||||
bordersLayout->addAnchor(bordersLayout, Qt::AnchorRight, rightBorder, Qt::AnchorRight);
|
rightBorder->show();
|
||||||
|
|
||||||
} else if (leftBorder && widget && widget->size().width() <= q->size().width()) {
|
} else if (leftBorder && widget && widget->size().width() <= q->size().width()) {
|
||||||
leftBorder->hide();
|
leftBorder->hide();
|
||||||
rightBorder->hide();
|
rightBorder->hide();
|
||||||
@ -141,6 +137,17 @@ public:
|
|||||||
|
|
||||||
layout->activate();
|
layout->activate();
|
||||||
|
|
||||||
|
if (topBorder) {
|
||||||
|
topBorder->resize(q->size().width(), topBorder->size().height());
|
||||||
|
bottomBorder->resize(q->size().width(), bottomBorder->size().height());
|
||||||
|
bottomBorder->setPos(0, q->size().height() - topBorder->size().height());
|
||||||
|
}
|
||||||
|
if (leftBorder) {
|
||||||
|
leftBorder->resize(leftBorder->size().width(), q->size().height());
|
||||||
|
rightBorder->resize(rightBorder->size().width(), q->size().height());
|
||||||
|
rightBorder->setPos(q->size().width() - rightBorder->size().width(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
QSizeF widgetSize = widget->size();
|
QSizeF widgetSize = widget->size();
|
||||||
if (widget->sizePolicy().expandingDirections() & Qt::Horizontal) {
|
if (widget->sizePolicy().expandingDirections() & Qt::Horizontal) {
|
||||||
//keep a 1 pixel border
|
//keep a 1 pixel border
|
||||||
@ -207,7 +214,6 @@ public:
|
|||||||
|
|
||||||
ScrollWidget *q;
|
ScrollWidget *q;
|
||||||
QGraphicsWidget *scrollingWidget;
|
QGraphicsWidget *scrollingWidget;
|
||||||
QGraphicsAnchorLayout *bordersLayout;
|
|
||||||
QGraphicsWidget *widget;
|
QGraphicsWidget *widget;
|
||||||
Plasma::Svg *borderSvg;
|
Plasma::Svg *borderSvg;
|
||||||
Plasma::SvgWidget *topBorder;
|
Plasma::SvgWidget *topBorder;
|
||||||
@ -232,11 +238,8 @@ ScrollWidget::ScrollWidget(QGraphicsWidget *parent)
|
|||||||
{
|
{
|
||||||
d->layout = new QGraphicsGridLayout(this);
|
d->layout = new QGraphicsGridLayout(this);
|
||||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
d->layout->setContentsMargins(0, 0, 0, 0);
|
d->layout->setContentsMargins(1, 1, 1, 1);
|
||||||
d->scrollingWidget = new QGraphicsWidget(this);
|
d->scrollingWidget = new QGraphicsWidget(this);
|
||||||
d->bordersLayout = new QGraphicsAnchorLayout(d->scrollingWidget);
|
|
||||||
//FIXME:setContentsMargins(0) crashes AnchorLayout
|
|
||||||
d->bordersLayout->setContentsMargins(0.01, 0.01, 0.01, 0.01);
|
|
||||||
d->layout->addItem(d->scrollingWidget, 0, 0);
|
d->layout->addItem(d->scrollingWidget, 0, 0);
|
||||||
d->borderSvg = new Plasma::Svg(this);
|
d->borderSvg = new Plasma::Svg(this);
|
||||||
d->borderSvg->setImagePath("widgets/scrollwidget");
|
d->borderSvg->setImagePath("widgets/scrollwidget");
|
||||||
@ -401,6 +404,18 @@ void ScrollWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
|
|||||||
|
|
||||||
d->adjustClipping();
|
d->adjustClipping();
|
||||||
|
|
||||||
|
//if topBorder exists bottomBorder too
|
||||||
|
if (d->topBorder) {
|
||||||
|
d->topBorder->resize(event->newSize().width(), d->topBorder->size().height());
|
||||||
|
d->bottomBorder->resize(event->newSize().width(), d->bottomBorder->size().height());
|
||||||
|
d->bottomBorder->setPos(0, event->newSize().height() - d->bottomBorder->size().height());
|
||||||
|
}
|
||||||
|
if (d->leftBorder) {
|
||||||
|
d->leftBorder->resize(d->leftBorder->size().width(), event->newSize().height());
|
||||||
|
d->rightBorder->resize(d->rightBorder->size().width(), event->newSize().height());
|
||||||
|
d->rightBorder->setPos(event->newSize().width() - d->rightBorder->size().width(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
QGraphicsWidget::resizeEvent(event);
|
QGraphicsWidget::resizeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user