From dc76999e7e0cfb2e2fc9af83e59eb5ae4558b8d1 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Fri, 26 Dec 2008 16:41:53 +0000 Subject: [PATCH] kill that ugly white border when dragging the extender and compositing is active (need a custom view for that, sigh) svn path=/trunk/KDE/kdelibs/; revision=901786 --- extenderitem.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/extenderitem.cpp b/extenderitem.cpp index e59724177..224e5169d 100644 --- a/extenderitem.cpp +++ b/extenderitem.cpp @@ -53,6 +53,33 @@ namespace Plasma { +class ExtenderItemView : public QGraphicsView +{ +public: + ExtenderItemView(QGraphicsScene *scene, QWidget *parent = 0) + : QGraphicsView(scene, parent) + { + //since this view witll have a really short lifespan it can be checked a single time + composite = KWindowSystem::compositingActive(); + } + + ~ExtenderItemView() + {} + + void drawBackground(QPainter *painter, const QRectF &rect) + { + if (composite) { + painter->setCompositionMode(QPainter::CompositionMode_Source); + painter->fillRect(rect.toAlignedRect(), Qt::transparent); + } else { + QGraphicsView::drawBackground(painter, rect); + } + } + +private: + bool composite; +}; + ExtenderItem::ExtenderItem(Extender *hostExtender, uint extenderItemId) : QGraphicsWidget(hostExtender), d(new ExtenderItemPrivate(this, hostExtender)) @@ -556,7 +583,7 @@ void ExtenderItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) //create a toplevel view and aim it at the applet. corona->addOffscreenWidget(this); - d->toplevel = new QGraphicsView(scene(), 0); + d->toplevel = new ExtenderItemView(scene(), 0); d->toplevel->setWindowFlags( Qt::ToolTip | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);