User now needs to click once in the parameter to change value with mouse wheel
/** @brief Returns minimum size for QSpinBox, used to set all spinboxes to the same width. */
int spinSize();
void setSpinSize(int width);
/** @brief Returns minimum size for QSpinBox, used to set all spinboxes to the same width. */
int spinSize();
void setSpinSize(int width);
public slots:
/** @brief Sets the value to @param value. */
public slots:
/** @brief Sets the value to @param value. */
else setSizePolicy(QSizePolicy::Maximum, QSizePolicy::MinimumExpanding);
setFocusPolicy(Qt::StrongFocus);
setContextMenuPolicy(Qt::CustomContextMenu);
else setSizePolicy(QSizePolicy::Maximum, QSizePolicy::MinimumExpanding);
setFocusPolicy(Qt::StrongFocus);
setContextMenuPolicy(Qt::CustomContextMenu);
+ setFocusPolicy(Qt::StrongFocus);
QHBoxLayout *l = new QHBoxLayout;
l->setSpacing(0);
QHBoxLayout *l = new QHBoxLayout;
l->setSpacing(0);
m_label->setStep(1);
m_intEdit = new QSpinBox(this);
m_intEdit->setObjectName("dragBox");
m_label->setStep(1);
m_intEdit = new QSpinBox(this);
m_intEdit->setObjectName("dragBox");
+ m_intEdit->setFocusPolicy(Qt::StrongFocus);
if (!suffix.isEmpty()) m_intEdit->setSuffix(suffix);
m_intEdit->setKeyboardTracking(false);
m_intEdit->setButtonSymbols(QAbstractSpinBox::NoButtons);
if (!suffix.isEmpty()) m_intEdit->setSuffix(suffix);
m_intEdit->setKeyboardTracking(false);
m_intEdit->setButtonSymbols(QAbstractSpinBox::NoButtons);
else {
m_doubleEdit = new QDoubleSpinBox(this);
m_doubleEdit->setDecimals(decimals);
else {
m_doubleEdit = new QDoubleSpinBox(this);
m_doubleEdit->setDecimals(decimals);
+ m_doubleEdit->setFocusPolicy(Qt::StrongFocus);
m_doubleEdit->setObjectName("dragBox");
if (!suffix.isEmpty()) m_doubleEdit->setSuffix(suffix);
m_doubleEdit->setKeyboardTracking(false);
m_doubleEdit->setObjectName("dragBox");
if (!suffix.isEmpty()) m_doubleEdit->setSuffix(suffix);
m_doubleEdit->setKeyboardTracking(false);
m_label->setProgressValue((value - m_minimum) / (m_maximum - m_minimum) * m_label->maximum());
}
m_label->setProgressValue((value - m_minimum) / (m_maximum - m_minimum) * m_label->maximum());
}
+void DragValue::focusOutEvent(QFocusEvent*)
+{
+ if (m_intEdit) m_intEdit->setFocusPolicy(Qt::StrongFocus);
+ else m_doubleEdit->setFocusPolicy(Qt::StrongFocus);
+}
+
void DragValue::focusInEvent(QFocusEvent* e)
{
void DragValue::focusInEvent(QFocusEvent* e)
{
+ if (m_intEdit) m_intEdit->setFocusPolicy(Qt::WheelFocus);
+ else m_doubleEdit->setFocusPolicy(Qt::WheelFocus);
if (e->reason() == Qt::TabFocusReason || e->reason() == Qt::BacktabFocusReason) {
if (m_intEdit) m_intEdit->setFocus(e->reason());
else m_doubleEdit->setFocus(e->reason());
if (e->reason() == Qt::TabFocusReason || e->reason() == Qt::BacktabFocusReason) {
if (m_intEdit) m_intEdit->setFocus(e->reason());
else m_doubleEdit->setFocus(e->reason());
{
setFont(KGlobalSettings::toolBarFont());
setFormat(" " + label);
{
setFont(KGlobalSettings::toolBarFont());
setFormat(" " + label);
- setFocusPolicy(Qt::ClickFocus);
+ setFocusPolicy(Qt::StrongFocus);
setCursor(Qt::PointingHandCursor);
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
if (showSlider) setRange(0, 1000);
setCursor(Qt::PointingHandCursor);
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
if (showSlider) setRange(0, 1000);
+void CustomLabel::focusInEvent(QFocusEvent*)
+{
+ setFocusPolicy(Qt::WheelFocus);
+}
+
+void CustomLabel::focusOutEvent(QFocusEvent*)
+{
+ setFocusPolicy(Qt::StrongFocus);
+}
+
virtual void mouseMoveEvent(QMouseEvent *event);
//virtual void paintEvent(QPaintEvent *event);
virtual void wheelEvent(QWheelEvent * event);
virtual void mouseMoveEvent(QMouseEvent *event);
//virtual void paintEvent(QPaintEvent *event);
virtual void wheelEvent(QWheelEvent * event);
+ virtual void focusInEvent(QFocusEvent *e);
+ virtual void focusOutEvent(QFocusEvent *e);
private:
QPoint m_dragStartPosition;
private:
QPoint m_dragStartPosition;
virtual void mouseReleaseEvent(QMouseEvent *e);*/
/** @brief Forwards tab focus to lineedit since it is disabled. */
virtual void focusInEvent(QFocusEvent *e);
virtual void mouseReleaseEvent(QMouseEvent *e);*/
/** @brief Forwards tab focus to lineedit since it is disabled. */
virtual void focusInEvent(QFocusEvent *e);
+ virtual void focusOutEvent(QFocusEvent *e);
//virtual void keyPressEvent(QKeyEvent *e);
//virtual void wheelEvent(QWheelEvent *e);
//virtual void paintEvent( QPaintEvent * event );
//virtual void keyPressEvent(QKeyEvent *e);
//virtual void wheelEvent(QWheelEvent *e);
//virtual void paintEvent( QPaintEvent * event );
#include "colortools.h"
#include "doubleparameterwidget.h"
#include "cornerswidget.h"
#include "colortools.h"
#include "doubleparameterwidget.h"
#include "cornerswidget.h"
#include "beziercurve/beziersplinewidget.h"
#ifdef USE_QJSON
#include "rotoscoping/rotowidget.h"
#include "beziercurve/beziersplinewidget.h"
#ifdef USE_QJSON
#include "rotoscoping/rotowidget.h"
+MySpinBox::MySpinBox(QWidget * parent):
+ QSpinBox(parent)
+{
+ setFocusPolicy(Qt::StrongFocus);
+}
+
+void MySpinBox::focusInEvent(QFocusEvent*)
+{
+ setFocusPolicy(Qt::WheelFocus);
+}
+
+void MySpinBox::focusOutEvent(QFocusEvent*)
+{
+ setFocusPolicy(Qt::StrongFocus);
+}
+
CollapsibleEffect::CollapsibleEffect(QDomElement effect, QDomElement original_effect, ItemInfo info, int ix, EffectMetaInfo *metaInfo, bool lastEffect, QWidget * parent) :
QWidget(parent),
m_paramWidget(NULL),
CollapsibleEffect::CollapsibleEffect(QDomElement effect, QDomElement original_effect, ItemInfo info, int ix, EffectMetaInfo *metaInfo, bool lastEffect, QWidget * parent) :
QWidget(parent),
m_paramWidget(NULL),
connect(buttonDown, SIGNAL(clicked()), this, SLOT(slotEffectDown()));
connect(buttonDel, SIGNAL(clicked()), this, SLOT(slotDeleteEffect()));
setupWidget(info, ix, metaInfo);
connect(buttonDown, SIGNAL(clicked()), this, SLOT(slotEffectDown()));
connect(buttonDel, SIGNAL(clicked()), this, SLOT(slotDeleteEffect()));
setupWidget(info, ix, metaInfo);
+ Q_FOREACH( QSpinBox * sp, findChildren<QSpinBox*>() ) {
+ sp->installEventFilter( this );
+ sp->setFocusPolicy( Qt::StrongFocus );
+ }
+ Q_FOREACH( KComboBox * cb, findChildren<KComboBox*>() ) {
+ cb->installEventFilter( this );
+ cb->setFocusPolicy( Qt::StrongFocus );
+ }
+ Q_FOREACH( QProgressBar * cb, findChildren<QProgressBar*>() ) {
+ cb->installEventFilter( this );
+ cb->setFocusPolicy( Qt::StrongFocus );
+ }
+
}
CollapsibleEffect::~CollapsibleEffect()
}
CollapsibleEffect::~CollapsibleEffect()
if (m_paramWidget) delete m_paramWidget;
}
if (m_paramWidget) delete m_paramWidget;
}
+bool CollapsibleEffect::eventFilter( QObject * o, QEvent * e )
+{
+ if(e->type() == QEvent::Wheel) {
+ if (qobject_cast<QAbstractSpinBox*>(o)) {
+ if(qobject_cast<QAbstractSpinBox*>(o)->focusPolicy() == Qt::WheelFocus)
+ {
+ e->accept();
+ return false;
+ }
+ else
+ {
+ e->ignore();
+ return true;
+ }
+ }
+ if (qobject_cast<KComboBox*>(o)) {
+ if(qobject_cast<KComboBox*>(o)->focusPolicy() == Qt::WheelFocus)
+ {
+ e->accept();
+ return false;
+ }
+ else
+ {
+ e->ignore();
+ return true;
+ }
+ }
+ if (qobject_cast<QProgressBar*>(o)) {
+ if(qobject_cast<QProgressBar*>(o)->focusPolicy() == Qt::WheelFocus)
+ {
+ e->accept();
+ return false;
+ }
+ else
+ {
+ e->ignore();
+ return true;
+ }
+ }
+ }
+ return QWidget::eventFilter(o, e);
+}
+
void CollapsibleEffect::setActive(bool activate)
{
void CollapsibleEffect::setActive(bool activate)
{
DoubleParameterWidget *doubleparam = new DoubleParameterWidget(paramName, value.toDouble(), min, max,
pa.attribute("default").toDouble(), comment, -1, pa.attribute("suffix"), pa.attribute("decimals").toInt(), parent);
DoubleParameterWidget *doubleparam = new DoubleParameterWidget(paramName, value.toDouble(), min, max,
pa.attribute("default").toDouble(), comment, -1, pa.attribute("suffix"), pa.attribute("decimals").toInt(), parent);
+ doubleparam->setFocusPolicy(Qt::StrongFocus);
m_vbox->addWidget(doubleparam);
m_valueItems[paramName] = doubleparam;
connect(doubleparam, SIGNAL(valueChanged(double)), this, SLOT(slotCollectAllParameters()));
m_vbox->addWidget(doubleparam);
m_valueItems[paramName] = doubleparam;
connect(doubleparam, SIGNAL(valueChanged(double)), this, SLOT(slotCollectAllParameters()));
} else if (type == "list") {
Listval *lsval = new Listval;
lsval->setupUi(toFillin);
} else if (type == "list") {
Listval *lsval = new Listval;
lsval->setupUi(toFillin);
+ lsval->list->setFocusPolicy(Qt::StrongFocus);
QStringList listitems = pa.attribute("paramlist").split(';');
if (listitems.count() == 1) {
// probably custom effect created before change to ';' as separator
QStringList listitems = pa.attribute("paramlist").split(';');
if (listitems.count() == 1) {
// probably custom effect created before change to ';' as separator
}
if (!points.isEmpty())
curve->setCurve(KisCubicCurve(points));
}
if (!points.isEmpty())
curve->setCurve(KisCubicCurve(points));
- QSpinBox *spinin = new QSpinBox();
+ MySpinBox *spinin = new MySpinBox();
spinin->setRange(0, 1000);
spinin->setRange(0, 1000);
- QSpinBox *spinout = new QSpinBox();
+ MySpinBox *spinout = new MySpinBox();
spinout->setRange(0, 1000);
curve->setupInOutControls(spinin, spinout, 0, 1000);
m_vbox->addWidget(curve);
spinout->setRange(0, 1000);
curve->setupInOutControls(spinin, spinout, 0, 1000);
m_vbox->addWidget(curve);
+class MySpinBox : public QSpinBox
+{
+ Q_OBJECT
+
+public:
+ MySpinBox(QWidget * parent = 0);
+
+protected:
+ virtual void focusInEvent(QFocusEvent*);
+ virtual void focusOutEvent(QFocusEvent*);
+};
+
class ParameterContainer : public QObject
{
Q_OBJECT
class ParameterContainer : public QObject
{
Q_OBJECT
void setupWidget(ItemInfo info, int index, EffectMetaInfo *metaInfo);
void updateTimecodeFormat();
void setActive(bool activate);
void setupWidget(ItemInfo info, int index, EffectMetaInfo *metaInfo);
void updateTimecodeFormat();
void setActive(bool activate);
+ virtual bool eventFilter( QObject * o, QEvent * e );
public slots:
void slotSyncEffectsPos(int pos);
public slots:
void slotSyncEffectsPos(int pos);