From 18092d25d927c40a323d7a981d0e71880dd5fbff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <kde@martin-graesslin.com>
Date: Sat, 1 May 2010 08:52:07 +0000
Subject: [PATCH] Aurorae gains inner-border support. FEATURE: 224020

svn path=/trunk/KDE/kdebase/workspace/; revision=1121453
---
 clients/aurorae/src/lib/auroraescene.cpp | 33 ++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/clients/aurorae/src/lib/auroraescene.cpp b/clients/aurorae/src/lib/auroraescene.cpp
index ec93f22712..33de82b474 100644
--- a/clients/aurorae/src/lib/auroraescene.cpp
+++ b/clients/aurorae/src/lib/auroraescene.cpp
@@ -283,6 +283,39 @@ void AuroraeScene::drawBackground(QPainter *painter, const QRectF &rect)
     } else {
         frame->paintFrame(painter, r, sourceRect);
     }
+
+    // inner border support
+    if (frame->hasElementPrefix("innerborder") && !maximized) {
+        if (!isActive() && frame->hasElementPrefix("innerborder-inactive")) {
+            frame->setElementPrefix("innerborder-inactive");
+        } else {
+            frame->setElementPrefix("innerborder");
+        }
+        qreal leftMargin, topMargin, rightMargin, bottomMargin;
+        frame->getMargins(leftMargin, topMargin, rightMargin, bottomMargin);
+        int leftBorder, topBorder, rightBorder, bottomBorder;
+        m_theme->borders(leftBorder, topBorder, rightBorder, bottomBorder, maximized);
+        int leftPadding, topPadding, rightPadding, bottomPadding;
+        m_theme->padding(leftPadding, topPadding, rightPadding, bottomPadding);
+        qreal width = r.width() - leftBorder - rightBorder - leftPadding - rightPadding + leftMargin + rightMargin;
+        qreal height = r.height() - topBorder - bottomBorder - topPadding - bottomPadding + topMargin + bottomMargin;
+        QPointF point = QPointF(leftBorder + leftPadding - leftMargin, topBorder + topPadding - topMargin);
+        frame->setEnabledBorders(Plasma::FrameSvg::AllBorders);
+        frame->resizeFrame(QSizeF(width, height));
+        if (isAnimating() && frame->hasElementPrefix("innerborder-inactive")) {
+            QPixmap target = frame->framePixmap();
+            frame->setElementPrefix("innerborder-inactive");
+            if (!isActive()) {
+                frame->setElementPrefix("innerborder");
+            }
+            frame->resizeFrame(QSizeF(width, height));
+            QPixmap result = Plasma::PaintUtils::transition(frame->framePixmap(),
+                                                            target, m_animationProgress);
+            painter->drawPixmap(point, result);
+        } else {
+            frame->paintFrame(painter, point);
+        }
+    }
     painter->restore();
 }