summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r--src/widgets/widgets/qscrollbar.cpp23
-rw-r--r--src/widgets/widgets/qscrollbar_p.h1
-rw-r--r--src/widgets/widgets/qwidgettextcontrol.cpp3
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;
}