Fix forward navigation control on Linux.
[dorian] / widgets / translucentbutton.cpp
index f6cfb0c..3b4121e 100644 (file)
@@ -9,10 +9,7 @@ const int TranslucentButton::elevatorInterval = 750;
 TranslucentButton::TranslucentButton(const QString &name_, QWidget *parent):
     QLabel(parent), name(name_), transparent(true)
 {
-    setGeometry(0, 0, pixels, pixels);
-    timer = new QTimer(this);
-    timer->setSingleShot(true);
-    connect(timer, SIGNAL(timeout()), this, SLOT(stopFlash()));
+    setFixedSize(pixels, pixels);
     elevatorTimer = startTimer(elevatorInterval);
 }
 
@@ -26,7 +23,7 @@ void TranslucentButton::paintEvent(QPaintEvent *)
     QPainter painter(this);
     if (!transparent) {
         painter.setRenderHint(QPainter::Antialiasing, true);
-        painter.drawPixmap(0, 0, QPixmap(Platform::icon(name)).scaled(
+        painter.drawPixmap(0, 0, QPixmap(Platform::instance()->icon(name)).scaled(
                 QSize(pixels, pixels), Qt::IgnoreAspectRatio,
                 Qt::SmoothTransformation));
     } else {
@@ -36,11 +33,11 @@ void TranslucentButton::paintEvent(QPaintEvent *)
 
 void TranslucentButton::flash(int duration)
 {
-    show();
     raise();
+    show();
     transparent = false;
     update();
-    timer->start(duration);
+    QTimer::singleShot(duration, this, SLOT(stopFlash()));
 }
 
 void TranslucentButton::stopFlash()
@@ -61,4 +58,5 @@ void TranslucentButton::timerEvent(QTimerEvent *e)
     if (e->timerId() == elevatorTimer) {
         raise();
     }
+    QLabel::timerEvent(e);
 }