summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2011-05-21 20:22:50 +0000
committerAndreas K. Hüttel <dilfridge@gentoo.org>2011-05-21 20:22:50 +0000
commit61883f32b7621548847f3bc497071bbb5a89791d (patch)
tree1ee707b3858661783c6174b7740128dc34337840 /kde-base/plasma-workspace
parentMasking media-libs/sdl-qui for removal. Bug #334779 (diff)
downloadgentoo-2-61883f32b7621548847f3bc497071bbb5a89791d.tar.gz
gentoo-2-61883f32b7621548847f3bc497071bbb5a89791d.tar.bz2
gentoo-2-61883f32b7621548847f3bc497071bbb5a89791d.zip
Revert upstream commit causing problems with panel placement, bug 364555
(Portage version: 2.1.9.49/cvs/Linux x86_64)
Diffstat (limited to 'kde-base/plasma-workspace')
-rw-r--r--kde-base/plasma-workspace/ChangeLog11
-rw-r--r--kde-base/plasma-workspace/files/plasma-workspace-4.6.2-panelplacement.patch350
-rw-r--r--kde-base/plasma-workspace/plasma-workspace-4.6.2-r2.ebuild144
-rw-r--r--kde-base/plasma-workspace/plasma-workspace-4.6.3-r1.ebuild143
4 files changed, 647 insertions, 1 deletions
diff --git a/kde-base/plasma-workspace/ChangeLog b/kde-base/plasma-workspace/ChangeLog
index 65c32367446e..479552bf69f3 100644
--- a/kde-base/plasma-workspace/ChangeLog
+++ b/kde-base/plasma-workspace/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for kde-base/plasma-workspace
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/plasma-workspace/ChangeLog,v 1.103 2011/05/09 23:21:35 hwoarang Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/plasma-workspace/ChangeLog,v 1.104 2011/05/21 20:22:49 dilfridge Exp $
+
+*plasma-workspace-4.6.3-r1 (21 May 2011)
+*plasma-workspace-4.6.2-r2 (21 May 2011)
+
+ 21 May 2011; Andreas K. Huettel <dilfridge@gentoo.org>
+ +plasma-workspace-4.6.2-r2.ebuild,
+ +files/plasma-workspace-4.6.2-panelplacement.patch,
+ +plasma-workspace-4.6.3-r1.ebuild:
+ Revert upstream commit causing problems with panel placement, bug 364555
09 May 2011; Markos Chandras <hwoarang@gentoo.org>
plasma-workspace-4.6.2-r1.ebuild:
diff --git a/kde-base/plasma-workspace/files/plasma-workspace-4.6.2-panelplacement.patch b/kde-base/plasma-workspace/files/plasma-workspace-4.6.2-panelplacement.patch
new file mode 100644
index 000000000000..e9c049ec40d3
--- /dev/null
+++ b/kde-base/plasma-workspace/files/plasma-workspace-4.6.2-panelplacement.patch
@@ -0,0 +1,350 @@
+diff --git a/plasma/desktop/shell/panelview.cpp b/plasma/desktop/shell/panelview.cpp
+index 9e76304..ac1425a 100644
+--- a/plasma/desktop/shell/panelview.cpp
++++ b/plasma/desktop/shell/panelview.cpp
+@@ -20,6 +20,7 @@
+ #include "panelview.h"
+
+ #include <QApplication>
++#include <QDesktopWidget>
+ #include <QGraphicsLinearLayout>
+ #include <QPropertyAnimation>
+ #include <QTimer>
+@@ -29,9 +30,8 @@
+ #include <X11/extensions/shape.h>
+ #endif
+
+-#include <KDebug>
+-#include <KIdleTime>
+ #include <KWindowSystem>
++#include <KDebug>
+
+ #include <Plasma/Containment>
+ #include <Plasma/Corona>
+@@ -309,7 +309,6 @@ PanelView::PanelView(Plasma::Containment *panel, int id, QWidget *parent)
+ m_glowBar(0),
+ m_mousePollTimer(0),
+ m_strutsTimer(new QTimer(this)),
+- m_rehideAfterAutounhideTimer(new QTimer(this)),
+ m_spacer(0),
+ m_spacerIndex(-1),
+ m_shadowWindow(0),
+@@ -319,8 +318,7 @@ PanelView::PanelView(Plasma::Containment *panel, int id, QWidget *parent)
+ m_visibilityMode(NormalPanel),
+ m_lastHorizontal(true),
+ m_editing(false),
+- m_triggerEntered(false),
+- m_respectStatus(true)
++ m_triggerEntered(false)
+ {
+ // KWin setup
+ KWindowSystem::setOnAllDesktops(winId(), true);
+@@ -330,13 +328,11 @@ PanelView::PanelView(Plasma::Containment *panel, int id, QWidget *parent)
+ m_strutsTimer->setSingleShot(true);
+ connect(m_strutsTimer, SIGNAL(timeout()), this, SLOT(updateStruts()));
+
+- // this timer controls checks to re-hide a panel after it's been unhidden
+- // for the user because, e.g., something is demanding attention
+- m_rehideAfterAutounhideTimer->setSingleShot(true);
+- connect(m_rehideAfterAutounhideTimer, SIGNAL(timeout()), this, SLOT(checkAutounhide()));
+-
+ // Graphics view setup
+ setFrameStyle(QFrame::NoFrame);
++ //setAutoFillBackground(true);
++ //setDragMode(QGraphicsView::RubberBandDrag);
++ //setCacheMode(QGraphicsView::CacheBackground);
+ setInteractive(true);
+ setAcceptDrops(true);
+ setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+@@ -356,20 +352,10 @@ PanelView::PanelView(Plasma::Containment *panel, int id, QWidget *parent)
+
+ const bool onScreen = panel->screen() < PlasmaApp::self()->corona()->numScreens();
+ const QRect screenRect = onScreen ? PlasmaApp::self()->corona()->screenGeometry(panel->screen()) : QRect();
+- const int sw = screenRect.width();
+- const int sh = screenRect.height();
+- m_lastSeenSize = sizes.readEntry("lastsize", m_lastHorizontal ? sw : sh);
+-
+- if (onScreen) {
+- const QString last = m_lastHorizontal ? "Horizontal" + QString::number(sw) :
+- "Vertical" + QString::number(sh);
+- if (sizes.hasGroup(last)) {
+- KConfigGroup thisSize(&sizes, last);
+- resize(thisSize.readEntry("size", m_lastHorizontal ? QSize(sw, 27) : QSize(27, sh)));
+- }
+- } else {
++ if (!onScreen) {
+ resize(panel->size().toSize());
+ }
++ m_lastSeenSize = sizes.readEntry("lastsize", m_lastHorizontal ? screenRect.width() : screenRect.height());
+
+ m_alignment = alignmentFilter((Qt::Alignment)viewConfig.readEntry("Alignment", (int)Qt::AlignLeft));
+ KConfigGroup sizeConfig(&viewConfig, (m_lastHorizontal ? "Horizontal" : "Vertical") +
+@@ -413,7 +399,7 @@ void PanelView::setContainment(Plasma::Containment *containment)
+ disconnect(oldContainment);
+ }
+
+- connect(containment, SIGNAL(newStatus(Plasma::ItemStatus)), this, SLOT(statusUpdated(Plasma::ItemStatus)));
++ connect(containment, SIGNAL(newStatus(Plasma::ItemStatus)), this, SLOT(setStatus(Plasma::ItemStatus)));
+ connect(containment, SIGNAL(destroyed(QObject*)), this, SLOT(panelDeleted()));
+ connect(containment, SIGNAL(toolBoxToggled()), this, SLOT(togglePanelController()));
+ connect(containment, SIGNAL(appletAdded(Plasma::Applet *, const QPointF &)), this, SLOT(appletAdded(Plasma::Applet *)));
+@@ -436,6 +422,10 @@ void PanelView::setContainment(Plasma::Containment *containment)
+
+ // ensure we aren't overlapping other panels
+ const QRect screenRect = PlasmaApp::self()->corona()->screenGeometry(containment->screen());
++ const QRegion availGeom = PlasmaApp::self()->corona()->availableScreenRegion(containment->screen());
++ const int w = containment->size().width();
++ const int h = containment->size().height();
++ const int length = containment->formFactor() == Plasma::Horizontal ? w : h;
+
+ View::setContainment(containment);
+
+@@ -448,11 +438,6 @@ void PanelView::setContainment(Plasma::Containment *containment)
+
+ updateStruts();
+ checkShadow();
+-
+- // if we are an autohiding panel, then see if the status mandates we do something about it
+- if (m_visibilityMode != NormalPanel && m_visibilityMode != WindowsGoBelow) {
+- checkUnhide(containment->status());
+- }
+ }
+
+ void PanelView::themeChanged()
+@@ -463,7 +448,6 @@ void PanelView::themeChanged()
+
+ void PanelView::checkShadow()
+ {
+-#ifndef Q_WS_WIN
+ if (KWindowSystem::compositingActive() && containment()->property("shadowPath").isValid()) {
+ if (!m_shadowWindow) {
+ m_shadowWindow = new ShadowWindow(this);
+@@ -478,11 +462,12 @@ void PanelView::checkShadow()
+ if (m_shadowWindow->isValid() && isVisible()) {
+ m_shadowWindow->show();
+ }
+- } else if (m_shadowWindow) {
+- m_shadowWindow->deleteLater();
+- m_shadowWindow = 0;
++ } else {
++ if (m_shadowWindow) {
++ m_shadowWindow->deleteLater();
++ m_shadowWindow = 0;
++ }
+ }
+-#endif
+ }
+
+ void PanelView::setPanelDragPosition(const QPoint &point)
+@@ -709,6 +694,8 @@ void PanelView::updatePanelGeometry()
+ geom.moveTopLeft(QPoint(screenGeom.center().x() - geom.width()/2 + 1 - geom.width()%2 + m_offset, screenGeom.top()));
+ }
+
++ //enable borders if needed
++ //c->setGeometry(QRect(geom.left(), c->geometry().top(), geom.width(), geom.height()));
+ break;
+
+ case Plasma::LeftEdge:
+@@ -720,6 +707,8 @@ void PanelView::updatePanelGeometry()
+ geom.moveTopLeft(QPoint(screenGeom.left(), screenGeom.center().y() - geom.height()/2 + 1 - geom.height()%2 + m_offset));
+ }
+
++ //enable borders if needed
++ //c->setGeometry(QRect(c->geometry().left(), geom.top(), geom.width(), geom.height()));
+ break;
+
+ case Plasma::RightEdge:
+@@ -731,6 +720,8 @@ void PanelView::updatePanelGeometry()
+ geom.moveTopRight(QPoint(screenGeom.right(), screenGeom.center().y() - geom.height()/2 + 1 - geom.height()%2 + m_offset));
+ }
+
++ //enable borders if needed
++ //c->setGeometry(QRect(c->geometry().left(), geom.top(), geom.width(), geom.height()));
+ break;
+
+ case Plasma::BottomEdge:
+@@ -743,6 +734,8 @@ void PanelView::updatePanelGeometry()
+ geom.moveBottomLeft(QPoint(screenGeom.center().x() - geom.width()/2 + 1 - geom.width()%2 + m_offset, screenGeom.bottom()));
+ }
+
++ //enable borders if needed
++ //c->setGeometry(QRect(geom.left(), c->geometry().top(), geom.width(), geom.height()));
+ break;
+ }
+
+@@ -818,7 +811,8 @@ void PanelView::pinchContainment(const QRect &screenGeom)
+ KConfigGroup sizes = config();
+ sizes = KConfigGroup(&sizes, "Sizes");
+
+- if (m_lastHorizontal != horizontal || m_lastSeenSize != (horizontal ? sw : sh)) {
++ if (m_lastHorizontal != horizontal ||
++ m_lastSeenSize != (horizontal ? sw : sh)) {
+ // we're adjusting size. store the current size now
+ KConfigGroup lastSize(&sizes, (m_lastHorizontal ? "Horizontal" : "Vertical") +
+ QString::number(m_lastSeenSize));
+@@ -1032,23 +1026,17 @@ void PanelView::togglePanelController()
+ }
+ }
+
+- if (m_panelController->isVisible()) {
+- if (m_panelController->showingWidgetExplorer() ||
+- m_panelController->showingActivityManager()) {
+- m_panelController->switchToController();
+- m_panelController->move(m_panelController->positionForPanelGeometry(geometry()));
+- } else {
+- Plasma::WindowEffects::slideWindow(m_panelController, location());
+- m_panelController->close();
+- updateStruts();
+- }
+- } else {
++ if (!m_panelController->isVisible()) {
+ m_editing = true;
+ m_panelController->resize(m_panelController->sizeHint());
+ m_panelController->move(m_panelController->positionForPanelGeometry(geometry()));
+ Plasma::WindowEffects::slideWindow(m_panelController, location());
+ kDebug() << "showing panel controller!" << m_panelController->geometry();
+ m_panelController->show();
++ } else {
++ Plasma::WindowEffects::slideWindow(m_panelController, location());
++ m_panelController->close();
++ updateStruts();
+ }
+ }
+
+@@ -1438,7 +1426,7 @@ void PanelView::unhide(bool destroyTrigger)
+ }
+ }
+
+-void PanelView::statusUpdated(Plasma::ItemStatus newStatus)
++void PanelView::setStatus(Plasma::ItemStatus newStatus)
+ {
+ if (newStatus == Plasma::AcceptingInputStatus) {
+ KWindowSystem::forceActiveWindow(winId());
+@@ -1447,50 +1435,14 @@ void PanelView::statusUpdated(Plasma::ItemStatus newStatus)
+
+ void PanelView::checkUnhide(Plasma::ItemStatus newStatus)
+ {
+- //kDebug() << "================= got a status: " << newStatus << Plasma::ActiveStatus;
+- m_respectStatus = true;
+-
++ //kDebug() << "================= got a new status: " << newStatus << Plasma::ActiveStatus;
+ if (newStatus > Plasma::ActiveStatus) {
+ unhide();
+- if (newStatus == Plasma::NeedsAttentionStatus) {
+- //kDebug() << "starting the timer!";
+- // start our rehide timer, so that the panel doesn't stay up and stuck forever and a day
+- m_rehideAfterAutounhideTimer->start(AUTOUNHIDE_CHECK_DELAY);
+- }
+ } else {
+- //kDebug() << "new status, just autohiding";
+ startAutoHide();
+ }
+ }
+
+-void PanelView::checkAutounhide()
+-{
+- //kDebug() << "***************************" << KIdleTime::instance()->idleTime();
+- if (KIdleTime::instance()->idleTime() >= AUTOUNHIDE_CHECK_DELAY) {
+- // the user is idle .. let's not hige the panel on them quite yet, but rather given them a
+- // chance to see this thing!
+- connect(KIdleTime::instance(), SIGNAL(resumingFromIdle()), this, SLOT(checkAutounhide()),
+- Qt::UniqueConnection);
+- KIdleTime::instance()->catchNextResumeEvent();
+- //kDebug() << "exit 1 ***************************";
+- return;
+- }
+-
+- m_respectStatus = false;
+- //kDebug() << "in to check ... who's resonsible?" << sender() << KIdleTime::instance();
+- if (sender() == KIdleTime::instance()) {
+- //kDebug() << "doing a 2s wait";
+- QTimer::singleShot(2000, this, SLOT(startAutoHide()));
+- } else {
+- //kDebug() << "just starting autohide!";
+- startAutoHide();
+- }
+-
+- // this line must come after the check on sender() as it *clears* that value!
+- disconnect(KIdleTime::instance(), SIGNAL(resumingFromIdle()), this, SLOT(checkAutounhide()));
+- //kDebug() << "exit 0 ***************************";
+-}
+-
+ void PanelView::unhide()
+ {
+ unhide(true);
+@@ -1503,31 +1455,10 @@ void PanelView::resetTriggerEnteredSuppression()
+
+ void PanelView::startAutoHide()
+ {
+- /*
+- kDebug() << m_editing << (containment() ? containment()->status() : 0) << Plasma::ActiveStatus
+- << geometry().adjusted(-10, -10, 10, 10).contains(QCursor::pos()) << hasPopup();
+- if (containment() && containment()->status() > Plasma::ActiveStatus) {
+- foreach (Plasma::Applet *applet, containment()->applets()) {
+- kDebug() << " " << applet->name() << applet->status();
+- }
+- }
+- */
+-
+-
+- if (m_editing || (m_respectStatus && (containment() && containment()->status() > Plasma::ActiveStatus))) {
+- if (m_mousePollTimer) {
+- m_mousePollTimer->stop();
+- disconnect(m_mousePollTimer, SIGNAL(timeout()), this, SLOT(startAutoHide()));
+- }
+-
+- return;
+- }
+-
+- // since we've gotten this far, we don't need to worry about rehiding-after-auto-unhide, so just
+- // stop the timer
+- m_rehideAfterAutounhideTimer->stop();
+-
+- if (geometry().adjusted(-10, -10, 10, 10).contains(QCursor::pos()) || hasPopup()) {
++ //TODO: is 5s too long? not long enough?
++ if (m_editing || (containment() && containment()->status() > Plasma::ActiveStatus) ||
++ geometry().adjusted(-10, -10, 10, 10).contains(QCursor::pos()) ||
++ hasPopup()) {
+ if (!m_mousePollTimer) {
+ leaveEvent(0);
+ }
+diff --git a/plasma/desktop/shell/panelview.h b/plasma/desktop/shell/panelview.h
+index 9bdf780..c4be6b4 100644
+--- a/plasma/desktop/shell/panelview.h
++++ b/plasma/desktop/shell/panelview.h
+@@ -141,7 +141,7 @@ public Q_SLOTS:
+ /**
+ * Decides whether give focus to the panel
+ */
+- void statusUpdated(Plasma::ItemStatus newStatus);
++ void setStatus(Plasma::ItemStatus newStatus);
+
+ /**
+ * Pinches the min/max sizes of the containment to the current screen resolution
+@@ -240,7 +240,6 @@ private Q_SLOTS:
+ void overlayMoved(PanelAppletOverlay *overlay);
+ void panelDeleted();
+ void startAutoHide();
+- void checkAutounhide();
+
+ /**
+ * update the appearance of the unhide hinter
+@@ -270,7 +269,6 @@ private:
+ GlowBar *m_glowBar;
+ QTimer *m_mousePollTimer;
+ QTimer *m_strutsTimer;
+- QTimer *m_rehideAfterAutounhideTimer;
+ QTimeLine *m_timeLine;
+ QGraphicsWidget *m_spacer;
+ int m_spacerIndex;
+@@ -292,10 +290,7 @@ private:
+
+ bool m_editing : 1;
+ bool m_triggerEntered : 1;
+- bool m_respectStatus : 1;
+-
+ static const int STRUTSTIMERDELAY = 200;
+- static const int AUTOUNHIDE_CHECK_DELAY = 3000;
+ };
+
+ #endif
diff --git a/kde-base/plasma-workspace/plasma-workspace-4.6.2-r2.ebuild b/kde-base/plasma-workspace/plasma-workspace-4.6.2-r2.ebuild
new file mode 100644
index 000000000000..2f9a37929835
--- /dev/null
+++ b/kde-base/plasma-workspace/plasma-workspace-4.6.2-r2.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/kde-base/plasma-workspace/plasma-workspace-4.6.2-r2.ebuild,v 1.1 2011/05/21 20:22:49 dilfridge Exp $
+
+EAPI=3
+
+KDE_HANDBOOK="optional"
+KMNAME="kdebase-workspace"
+KMMODULE="plasma"
+PYTHON_DEPEND="python? 2"
+inherit python kde4-meta
+
+DESCRIPTION="Plasma: KDE desktop framework"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="debug google-gadgets gps python qalculate +rss semantic-desktop xinerama"
+
+COMMONDEPEND="
+ $(add_kdebase_dep kdelibs 'semantic-desktop=')
+ $(add_kdebase_dep kephal)
+ $(add_kdebase_dep ksysguard)
+ $(add_kdebase_dep libkworkspace)
+ $(add_kdebase_dep libplasmagenericshell)
+ $(add_kdebase_dep libtaskmanager)
+ $(add_kdebase_dep solid)
+ x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXfixes
+ x11-libs/libXrender
+ google-gadgets? ( >=x11-misc/google-gadgets-0.11.0[qt4] )
+ gps? ( >=sci-geosciences/gpsd-2.37 )
+ python? (
+ >=dev-python/PyQt4-4.4.0[X]
+ >=dev-python/sip-4.7.1
+ $(add_kdebase_dep pykde4)
+ )
+ qalculate? ( sci-libs/libqalculate )
+ rss? (
+ $(add_kdebase_dep kdepimlibs 'semantic-desktop?')
+ $(add_kdebase_dep libplasmaclock 'holidays')
+ )
+ !rss? ( $(add_kdebase_dep libplasmaclock '-holidays') )
+ xinerama? ( x11-libs/libXinerama )
+"
+DEPEND="${COMMONDEPEND}
+ x11-proto/compositeproto
+ x11-proto/damageproto
+ x11-proto/fixesproto
+ x11-proto/renderproto
+ xinerama? ( x11-proto/xineramaproto )
+"
+RDEPEND="${COMMONDEPEND}
+ $(add_kdebase_dep activitymanager)
+ $(add_kdebase_dep plasma-runtime)
+"
+
+KMEXTRA="
+ statusnotifierwatcher/
+"
+KMEXTRACTONLY="
+ krunner/dbus/org.freedesktop.ScreenSaver.xml
+ krunner/dbus/org.kde.krunner.App.xml
+ ksmserver/org.kde.KSMServerInterface.xml
+ libs/kephal/
+ libs/kworkspace/
+ libs/taskmanager/
+ libs/plasmagenericshell/
+ libs/ksysguard/
+ ksysguard/
+"
+
+KMLOADLIBS="libkworkspace libplasmaclock libplasmagenericshell libtaskmanager"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-4.4.2-xinerama_cmake_automagic.patch"
+ "${FILESDIR}/${PN}-4.6.2-optional_akonadi-server.patch"
+ "${FILESDIR}/${PN}-4.6.2-oldpimcrash.patch"
+ "${FILESDIR}/${PN}-4.6.2-panelplacement.patch"
+)
+
+pkg_setup() {
+ python_set_active_version 2
+ kde4-meta_pkg_setup
+}
+
+src_unpack() {
+ if use handbook; then
+ KMEXTRA+=" doc/plasma-desktop"
+ fi
+
+ kde4-meta_src_unpack
+}
+
+src_prepare() {
+ sed -i -e '1ifind_package(KdepimLibs)' plasma/CMakeLists.txt || die
+
+ kde4-meta_src_prepare
+}
+
+src_configure() {
+ mycmakeargs=(
+ $(cmake-utils_use_with google-gadgets Googlegadgets)
+ $(cmake-utils_use_with gps libgps)
+ $(cmake-utils_use_with python SIP)
+ $(cmake-utils_use_with python PyQt4)
+ $(cmake-utils_use_with python PyKDE4)
+ $(cmake-utils_use_with qalculate)
+ $(cmake-utils_use_with rss KdepimLibs)
+ $(cmake-utils_use_with semantic-desktop Akonadi)
+ $(cmake-utils_use_with semantic-desktop Nepomuk)
+ $(cmake-utils_use_with semantic-desktop Soprano)
+ $(cmake-utils_use_with xinerama X11_Xinerama)
+ -DWITH_Xmms=OFF
+ )
+
+ kde4-meta_src_configure
+}
+
+src_install() {
+ kde4-meta_src_install
+
+ rm -f \
+ "${ED}$(python_get_sitedir)"/PyKDE4/*.py[co] \
+ "${ED}${KDEDIR}"/share/apps/plasma_scriptengine_python/*.py[co]
+}
+
+pkg_postinst() {
+ kde4-meta_pkg_postinst
+
+ if use python; then
+ python_mod_optimize \
+ PyKDE4 \
+ "${KDEDIR}"/share/apps/plasma_scriptengine_python
+ fi
+}
+
+pkg_postrm() {
+ kde4-meta_pkg_postrm
+
+ if [[ -d ${EKDEDIR}/share/apps/plasma_scriptengine_python ]]; then
+ python_mod_cleanup \
+ PyKDE4 \
+ "${KDEDIR}"/share/apps/plasma_scriptengine_python
+ fi
+}
diff --git a/kde-base/plasma-workspace/plasma-workspace-4.6.3-r1.ebuild b/kde-base/plasma-workspace/plasma-workspace-4.6.3-r1.ebuild
new file mode 100644
index 000000000000..51bef8acd799
--- /dev/null
+++ b/kde-base/plasma-workspace/plasma-workspace-4.6.3-r1.ebuild
@@ -0,0 +1,143 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/kde-base/plasma-workspace/plasma-workspace-4.6.3-r1.ebuild,v 1.1 2011/05/21 20:22:49 dilfridge Exp $
+
+EAPI=3
+
+KDE_HANDBOOK="optional"
+KMNAME="kdebase-workspace"
+KMMODULE="plasma"
+PYTHON_DEPEND="python? 2"
+inherit python kde4-meta
+
+DESCRIPTION="Plasma: KDE desktop framework"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="debug google-gadgets gps python qalculate +rss semantic-desktop xinerama"
+
+COMMONDEPEND="
+ $(add_kdebase_dep kdelibs 'semantic-desktop=')
+ $(add_kdebase_dep kephal)
+ $(add_kdebase_dep ksysguard)
+ $(add_kdebase_dep libkworkspace)
+ $(add_kdebase_dep libplasmagenericshell)
+ $(add_kdebase_dep libtaskmanager)
+ $(add_kdebase_dep solid)
+ x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXfixes
+ x11-libs/libXrender
+ google-gadgets? ( >=x11-misc/google-gadgets-0.11.0[qt4] )
+ gps? ( >=sci-geosciences/gpsd-2.37 )
+ python? (
+ >=dev-python/PyQt4-4.4.0[X]
+ >=dev-python/sip-4.7.1
+ $(add_kdebase_dep pykde4)
+ )
+ qalculate? ( sci-libs/libqalculate )
+ rss? (
+ $(add_kdebase_dep kdepimlibs 'semantic-desktop=')
+ $(add_kdebase_dep libplasmaclock 'holidays')
+ )
+ !rss? ( $(add_kdebase_dep libplasmaclock '-holidays') )
+ xinerama? ( x11-libs/libXinerama )
+"
+DEPEND="${COMMONDEPEND}
+ x11-proto/compositeproto
+ x11-proto/damageproto
+ x11-proto/fixesproto
+ x11-proto/renderproto
+ xinerama? ( x11-proto/xineramaproto )
+"
+RDEPEND="${COMMONDEPEND}
+ $(add_kdebase_dep activitymanager)
+ $(add_kdebase_dep plasma-runtime)
+"
+
+KMEXTRA="
+ statusnotifierwatcher/
+"
+KMEXTRACTONLY="
+ krunner/dbus/org.freedesktop.ScreenSaver.xml
+ krunner/dbus/org.kde.krunner.App.xml
+ ksmserver/org.kde.KSMServerInterface.xml
+ libs/kephal/
+ libs/kworkspace/
+ libs/taskmanager/
+ libs/plasmagenericshell/
+ libs/ksysguard/
+ ksysguard/
+"
+
+KMLOADLIBS="libkworkspace libplasmaclock libplasmagenericshell libtaskmanager"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-4.4.2-xinerama_cmake_automagic.patch"
+ "${FILESDIR}/${PN}-4.6.2-optional_akonadi-server.patch"
+ "${FILESDIR}/${PN}-4.6.2-panelplacement.patch"
+)
+
+pkg_setup() {
+ python_set_active_version 2
+ kde4-meta_pkg_setup
+}
+
+src_unpack() {
+ if use handbook; then
+ KMEXTRA+=" doc/plasma-desktop"
+ fi
+
+ kde4-meta_src_unpack
+}
+
+src_prepare() {
+ sed -i -e '1ifind_package(KdepimLibs)' plasma/CMakeLists.txt || die
+
+ kde4-meta_src_prepare
+}
+
+src_configure() {
+ mycmakeargs=(
+ $(cmake-utils_use_with google-gadgets Googlegadgets)
+ $(cmake-utils_use_with gps libgps)
+ $(cmake-utils_use_with python SIP)
+ $(cmake-utils_use_with python PyQt4)
+ $(cmake-utils_use_with python PyKDE4)
+ $(cmake-utils_use_with qalculate)
+ $(cmake-utils_use_with rss KdepimLibs)
+ $(cmake-utils_use_with semantic-desktop Akonadi)
+ $(cmake-utils_use_with semantic-desktop Nepomuk)
+ $(cmake-utils_use_with semantic-desktop Soprano)
+ $(cmake-utils_use_with xinerama X11_Xinerama)
+ -DWITH_Xmms=OFF
+ )
+
+ kde4-meta_src_configure
+}
+
+src_install() {
+ kde4-meta_src_install
+
+ rm -f \
+ "${ED}$(python_get_sitedir)"/PyKDE4/*.py[co] \
+ "${ED}${KDEDIR}"/share/apps/plasma_scriptengine_python/*.py[co]
+}
+
+pkg_postinst() {
+ kde4-meta_pkg_postinst
+
+ if use python; then
+ python_mod_optimize \
+ PyKDE4 \
+ "${KDEDIR}"/share/apps/plasma_scriptengine_python
+ fi
+}
+
+pkg_postrm() {
+ kde4-meta_pkg_postrm
+
+ if [[ -d ${EKDEDIR}/share/apps/plasma_scriptengine_python ]]; then
+ python_mod_cleanup \
+ PyKDE4 \
+ "${KDEDIR}"/share/apps/plasma_scriptengine_python
+ fi
+}