rendersettingsdlg.cpp: ignore mouse scroll events in spin boxes

metadata
Wenzel Jakob 2014-07-29 18:51:23 +02:00
parent 11c5ef7458
commit 152cfa4b26
1 changed files with 30 additions and 1 deletions

View File

@ -21,6 +21,24 @@
#include <mitsuba/core/plugin.h> #include <mitsuba/core/plugin.h>
#include <mitsuba/core/fresolver.h> #include <mitsuba/core/fresolver.h>
class BetterSpinBox : public QSpinBox {
public:
BetterSpinBox(QWidget *parent) : QSpinBox(parent) {
setFrame(false);
setFocusPolicy(Qt::StrongFocus);
setMinimum(-1);
setMaximum(INT_MAX);
}
bool event(QEvent *event) {
if(event->type() == QEvent::Wheel) {
event->ignore();
return false;
}
return QSpinBox::event(event);
}
};
class BetterDoubleSpinBox : public QDoubleSpinBox { class BetterDoubleSpinBox : public QDoubleSpinBox {
public: public:
BetterDoubleSpinBox(QWidget *parent) : QDoubleSpinBox(parent) { BetterDoubleSpinBox(QWidget *parent) : QDoubleSpinBox(parent) {
@ -28,6 +46,7 @@ public:
setMinimum(-std::numeric_limits<double>::max()); setMinimum(-std::numeric_limits<double>::max());
setMaximum(std::numeric_limits<double>::max()); setMaximum(std::numeric_limits<double>::max());
setFrame(false); setFrame(false);
setFocusPolicy(Qt::StrongFocus);
} }
void morphNumericString(char *s) const { void morphNumericString(char *s) const {
@ -47,6 +66,14 @@ public:
morphNumericString(tmp); morphNumericString(tmp);
return QString::fromAscii(tmp); return QString::fromAscii(tmp);
} }
bool event(QEvent *event) {
if(event->type() == QEvent::Wheel) {
event->ignore();
return false;
}
return QDoubleSpinBox::event(event);
}
}; };
/* ====================== Some helper routines ====================== */ /* ====================== Some helper routines ====================== */
@ -566,7 +593,9 @@ QWidget *PropertyDelegate::createEditor(QWidget *parent, const QStyleOptionViewI
} }
QWidget *widget; QWidget *widget;
if (index.data().type() == QVariant::Double) if (index.data().type() == QVariant::Int)
widget = new BetterSpinBox(parent);
else if (index.data().type() == QVariant::Double)
widget = new BetterDoubleSpinBox(parent); widget = new BetterDoubleSpinBox(parent);
else else
widget = QStyledItemDelegate::createEditor(parent, option, index); widget = QStyledItemDelegate::createEditor(parent, option, index);