summaryrefslogtreecommitdiff
path: root/src/tabhighlighteffect.cpp
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2011-02-10 19:05:45 +0100
committerAndrea Diamantini <adjam7@gmail.com>2011-02-10 19:05:45 +0100
commitfc669e0bf82018baa70a8b59529e1a571d5ad820 (patch)
treed347c2ffa43d4d2a261b4f4e9a21f623397f280d /src/tabhighlighteffect.cpp
parentFix issue 258905: mark window in taskbar when opening link from external apps... (diff)
downloadrekonq-fc669e0bf82018baa70a8b59529e1a571d5ad820.tar.xz
highlights inactive tabs if title changes
Courtesy patch by Johannes Troscher. Thanks :) Reviewed by: adjam Reviewed by: elproxy
Diffstat (limited to 'src/tabhighlighteffect.cpp')
-rw-r--r--src/tabhighlighteffect.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/tabhighlighteffect.cpp b/src/tabhighlighteffect.cpp
new file mode 100644
index 00000000..b03af0f2
--- /dev/null
+++ b/src/tabhighlighteffect.cpp
@@ -0,0 +1,77 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 Tröscher Johannes <fritz_van_tom@hotmail.com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+//Self Includes
+#include "tabhighlighteffect.h"
+#include "tabhighlighteffect.moc"
+
+//Qt Includes
+#include <QApplication>
+#include <QVariant>
+#include <tabbar.h>
+
+
+TabHighlightEffect::TabHighlightEffect(TabBar* tabBar)
+ : QGraphicsEffect (tabBar)
+ , m_tabBar(tabBar)
+ , m_highlightColor(QApplication::palette().highlight().color().lighter())
+{
+ Q_ASSERT(m_tabBar);
+}
+
+void TabHighlightEffect::draw(QPainter* painter)
+{
+ painter->drawPixmap(QPoint(0,0), sourcePixmap());
+
+ Q_FOREACH(const QByteArray &propertyName, dynamicPropertyNames())
+ {
+ int index = QString(propertyName).remove(0,5).toInt();
+ qreal opacity = property(propertyName).toReal();
+ QRect textRect = m_tabBar->tabTextRect(index);
+
+ QString tabText = m_tabBar->fontMetrics().elidedText(m_tabBar->tabText(index), Qt::ElideRight,
+ textRect.width(), Qt::TextShowMnemonic);
+
+ painter->setOpacity(opacity);
+ painter->setPen(m_highlightColor);
+ painter->drawText(textRect, Qt::AlignCenter | Qt::TextShowMnemonic, tabText);
+ }
+}
+
+bool TabHighlightEffect::event(QEvent* event)
+{
+ if (event->type() == QEvent::DynamicPropertyChange)
+ {
+ QDynamicPropertyChangeEvent *pChangeEv = dynamic_cast<QDynamicPropertyChangeEvent*>(event);
+
+ if(pChangeEv->propertyName().contains("hAnim"))
+ {
+ update();
+ return true;
+ }
+ }
+
+ return QGraphicsEffect::event(event);
+} \ No newline at end of file