diff options
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qscrollbar.cpp | 23 | ||||
-rw-r--r-- | src/widgets/widgets/qscrollbar_p.h | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol.cpp | 3 |
3 files changed, 19 insertions, 8 deletions
diff --git a/src/widgets/widgets/qscrollbar.cpp b/src/widgets/widgets/qscrollbar.cpp index 05b8935bb5..5060ca0a70 100644 --- a/src/widgets/widgets/qscrollbar.cpp +++ b/src/widgets/widgets/qscrollbar.cpp @@ -248,8 +248,13 @@ void QScrollBarPrivate::flash() Q_Q(QScrollBar); if (!flashed && q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q)) { flashed = true; - q->show(); + if (!q->isVisible()) + q->show(); + else + q->update(); } + if (!flashTimer) + flashTimer = q->startTimer(0); } void QScrollBarPrivate::activateControl(uint control, int threshold) @@ -386,6 +391,7 @@ void QScrollBarPrivate::init() pointerOutsidePressedControl = false; transient = q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q); flashed = false; + flashTimer = 0; q->setFocusPolicy(Qt::NoFocus); QSizePolicy sp(QSizePolicy::Minimum, QSizePolicy::Fixed, QSizePolicy::Slider); if (orientation == Qt::Vertical) @@ -476,6 +482,7 @@ void QScrollBar::sliderChange(SliderChange change) */ bool QScrollBar::event(QEvent *event) { + Q_D(QScrollBar); switch(event->type()) { case QEvent::HoverEnter: case QEvent::HoverLeave: @@ -486,6 +493,16 @@ bool QScrollBar::event(QEvent *event) case QEvent::StyleChange: d_func()->setTransient(style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this)); break; + case QEvent::Timer: + if (static_cast<QTimerEvent *>(event)->timerId() == d->flashTimer) { + if (d->flashed && style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this)) { + d->flashed = false; + update(); + } + killTimer(d->flashTimer); + d->flashTimer = 0; + } + break; default: break; } @@ -536,10 +553,6 @@ void QScrollBar::paintEvent(QPaintEvent *) opt.activeSubControls = (QStyle::SubControl)d->hoverControl; } style()->drawComplexControl(QStyle::CC_ScrollBar, &opt, &p, this); - if (d->flashed && style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this)) { - d->flashed = false; - update(); - } } /*! diff --git a/src/widgets/widgets/qscrollbar_p.h b/src/widgets/widgets/qscrollbar_p.h index c62c337a40..5fc714d530 100644 --- a/src/widgets/widgets/qscrollbar_p.h +++ b/src/widgets/widgets/qscrollbar_p.h @@ -81,6 +81,7 @@ public: void setTransient(bool value); bool flashed; + int flashTimer; void flash(); }; diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 03a65aa8e5..3740f3e698 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -239,9 +239,6 @@ bool QWidgetTextControlPrivate::cursorMoveKeyEvent(QKeyEvent *e) else if (e == QKeySequence::MoveToPreviousLine) { op = QTextCursor::Up; } - else if (e == QKeySequence::MoveToPreviousLine) { - op = QTextCursor::Up; - } else if (e == QKeySequence::MoveToStartOfLine) { op = QTextCursor::StartOfLine; } |