forked from qt-creator/qt-creator
QmlDesigner.propertyEditor: fixes mousewheel handling in spinboxes
See Bauhaus BAUHAUS-571
This commit is contained in:
@@ -853,9 +853,6 @@ class QScrollAreaDeclarativeUI : public QObject
|
|||||||
Q_PROPERTY(QWidget *content READ content WRITE setContent)
|
Q_PROPERTY(QWidget *content READ content WRITE setContent)
|
||||||
Q_CLASSINFO("DefaultProperty", "content")
|
Q_CLASSINFO("DefaultProperty", "content")
|
||||||
|
|
||||||
public slots:
|
|
||||||
void setupProperWheelBehaviour();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QScrollAreaDeclarativeUI(QObject *parent = 0) : QObject(parent), _content(0)
|
QScrollAreaDeclarativeUI(QObject *parent = 0) : QObject(parent), _content(0)
|
||||||
{
|
{
|
||||||
@@ -869,53 +866,12 @@ private:
|
|||||||
_content = content;
|
_content = content;
|
||||||
sa->setWidget(content);
|
sa->setWidget(content);
|
||||||
sa->verticalScrollBar()->show();
|
sa->verticalScrollBar()->show();
|
||||||
setupProperWheelBehaviour();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *_content;
|
QWidget *_content;
|
||||||
QScrollArea *sa;
|
QScrollArea *sa;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MouseWheelFilter : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
MouseWheelFilter(QObject *parent) : QObject(parent), m_target(0) { }
|
|
||||||
|
|
||||||
void setTarget(QObject *target) { m_target = target; }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
bool eventFilter(QObject *obj, QEvent *event);
|
|
||||||
private:
|
|
||||||
QObject *m_target;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool MouseWheelFilter::eventFilter(QObject *obj, QEvent *event)
|
|
||||||
{
|
|
||||||
if (event->type() == QEvent::Wheel) {
|
|
||||||
if (obj
|
|
||||||
&& obj->isWidgetType()
|
|
||||||
&& obj != m_target) {
|
|
||||||
QApplication::sendEvent(m_target, event);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return QObject::eventFilter(obj, event);
|
|
||||||
}
|
|
||||||
|
|
||||||
void QScrollAreaDeclarativeUI::setupProperWheelBehaviour()
|
|
||||||
{
|
|
||||||
// We install here an eventfilter to avoid that scrolling in
|
|
||||||
// in the ScrollArea changes values in editor widgets
|
|
||||||
if (_content) {
|
|
||||||
MouseWheelFilter *forwarder(new MouseWheelFilter(this));
|
|
||||||
forwarder->setTarget(_content);
|
|
||||||
|
|
||||||
foreach (QWidget *childWidget, _content->findChildren<QWidget*>()) {
|
|
||||||
childWidget->installEventFilter(forwarder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class WidgetLoader : public QWidget
|
class WidgetLoader : public QWidget
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user