using installEventFilter if the target is a QGraphicsWidget, else
installSceneEventFilter because sceneEventFilter doesn't get GraphicsSceneResize events svn path=/trunk/KDE/kdelibs/; revision=1027316
This commit is contained in:
parent
cfb045bf3d
commit
b363df741e
@ -124,12 +124,12 @@ void ItemBackground::setTarget(const QRectF &newGeometry)
|
|||||||
void ItemBackground::setTargetItem(QGraphicsItem *target)
|
void ItemBackground::setTargetItem(QGraphicsItem *target)
|
||||||
{
|
{
|
||||||
if (d->target && d->target != target) {
|
if (d->target && d->target != target) {
|
||||||
d->target->removeSceneEventFilter(this);
|
|
||||||
|
|
||||||
QObject *obj = 0;
|
QObject *obj = 0;
|
||||||
if (d->target->isWidget()) {
|
if (d->target->isWidget()) {
|
||||||
obj = static_cast<QGraphicsWidget*>(d->target);
|
obj = static_cast<QGraphicsWidget*>(d->target);
|
||||||
|
obj->removeEventFilter(this);
|
||||||
} else {
|
} else {
|
||||||
|
d->target->removeSceneEventFilter(this);
|
||||||
obj = dynamic_cast<QObject *>(d->target);
|
obj = dynamic_cast<QObject *>(d->target);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,12 +147,12 @@ void ItemBackground::setTargetItem(QGraphicsItem *target)
|
|||||||
setTarget(rect);
|
setTarget(rect);
|
||||||
|
|
||||||
if (d->target != target) {
|
if (d->target != target) {
|
||||||
target->installSceneEventFilter(this);
|
|
||||||
|
|
||||||
QObject *obj = 0;
|
QObject *obj = 0;
|
||||||
if (target->isWidget()) {
|
if (target->isWidget()) {
|
||||||
obj = static_cast<QGraphicsWidget*>(target);
|
obj = static_cast<QGraphicsWidget*>(target);
|
||||||
|
obj->installEventFilter(this);
|
||||||
} else {
|
} else {
|
||||||
|
d->target->installSceneEventFilter(this);
|
||||||
obj = dynamic_cast<QObject *>(target);
|
obj = dynamic_cast<QObject *>(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,11 +165,23 @@ void ItemBackground::setTargetItem(QGraphicsItem *target)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ItemBackground::eventFilter(QObject *watched, QEvent *event)
|
||||||
|
{
|
||||||
|
QGraphicsWidget *targetWidget = static_cast<QGraphicsWidget *>(d->target);
|
||||||
|
if (watched == targetWidget) {
|
||||||
|
if (event->type() == QEvent::GraphicsSceneResize ||
|
||||||
|
event->type() == QEvent::GraphicsSceneMove) {
|
||||||
|
setTargetItem(targetWidget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool ItemBackground::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
|
bool ItemBackground::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
|
||||||
{
|
{
|
||||||
if (watched == d->target) {
|
if (watched == d->target) {
|
||||||
if (event->type() == QEvent::GraphicsSceneResize ||
|
if (event->type() == QEvent::GraphicsSceneMove) {
|
||||||
event->type() == QEvent::GraphicsSceneMove) {
|
|
||||||
setTargetItem(d->target);
|
setTargetItem(d->target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,11 @@ protected:
|
|||||||
*/
|
*/
|
||||||
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @reimp from QObject
|
||||||
|
*/
|
||||||
|
bool eventFilter(QObject *watched, QEvent *event);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @reimp from QGraphicsItem
|
* @reimp from QGraphicsItem
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user