sigh, with qgraphicswidgets we don't have the luxury of the
geometrychanged() signal... trying with an event filter svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=843566
This commit is contained in:
parent
748d03d7d0
commit
a2d36c8844
15
dialog.cpp
15
dialog.cpp
@ -133,6 +133,10 @@ void Dialog::resizeEvent(QResizeEvent *e)
|
||||
|
||||
void Dialog::setGraphicsWidget(QGraphicsWidget *widget)
|
||||
{
|
||||
if (d->widget) {
|
||||
d->widget->removeEventFilter(this);
|
||||
}
|
||||
|
||||
d->widget = widget;
|
||||
|
||||
if (widget) {
|
||||
@ -154,7 +158,7 @@ void Dialog::setGraphicsWidget(QGraphicsWidget *widget)
|
||||
|
||||
adjustSize();
|
||||
|
||||
connect(widget, SIGNAL(geometryChanged()), this, SLOT(adjustView()));
|
||||
widget->installEventFilter(this);
|
||||
} else {
|
||||
delete d->view;
|
||||
d->view = 0;
|
||||
@ -166,5 +170,14 @@ QGraphicsWidget *Dialog::graphicsWidget()
|
||||
return d->widget;
|
||||
}
|
||||
|
||||
bool Dialog::eventFilter(QObject *watched, QEvent *event)
|
||||
{
|
||||
if (watched == d->widget && event->type() == QEvent::GraphicsSceneResize) {
|
||||
d->adjustView();
|
||||
}
|
||||
|
||||
return QWidget::eventFilter(watched, event);
|
||||
}
|
||||
|
||||
}
|
||||
#include "dialog.moc"
|
||||
|
2
dialog.h
2
dialog.h
@ -65,6 +65,7 @@ class PLASMA_EXPORT Dialog : public QWidget
|
||||
*/
|
||||
void paintEvent(QPaintEvent *e);
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
bool eventFilter(QObject *watched, QEvent *event);
|
||||
|
||||
private:
|
||||
DialogPrivate * const d;
|
||||
@ -72,7 +73,6 @@ class PLASMA_EXPORT Dialog : public QWidget
|
||||
* React to theme changes
|
||||
*/
|
||||
Q_PRIVATE_SLOT(d, void themeUpdated())
|
||||
Q_PRIVATE_SLOT(d, void adjustView())
|
||||
};
|
||||
|
||||
} // Plasma namespace
|
||||
|
Loading…
Reference in New Issue
Block a user