diff options
author | Andreas K. Hüttel <dilfridge@gentoo.org> | 2011-05-21 20:22:50 +0000 |
---|---|---|
committer | Andreas K. Hüttel <dilfridge@gentoo.org> | 2011-05-21 20:22:50 +0000 |
commit | 61883f32b7621548847f3bc497071bbb5a89791d (patch) | |
tree | 1ee707b3858661783c6174b7740128dc34337840 /kde-base/plasma-workspace | |
parent | Masking media-libs/sdl-qui for removal. Bug #334779 (diff) | |
download | gentoo-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')
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 +} |