kwin/plugins.cpp
Martin Gräßlin f97c92fde9 KWin does not require a decoration plugin any more
With config option "NoPlugin" in group "Style" it is possible to
no request that KWin should be run without a decoration plugin.
This is a change for Plasma Active to properly support no decorations.

As well if a decoration plugin cannot be loaded, KWin will no longer
exit, but continue to run just without a decoration. As a nice
side-effect changes in Oxygen no longer destroy my kwin build ;-)

BUG: 224440
FIXED-IN: 4.7.0
CCMAIL: sebas@kde.org
2011-04-28 16:05:23 +02:00

63 lines
1.7 KiB
C++

/********************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
Copyright (C) 1999, 2000 Daniel M. Duley <mosfet@kde.org>
Copyright (C) 2003 Lubos Lunak <l.lunak@kde.org>
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) any later version.
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/>.
*********************************************************************/
#include "plugins.h"
#include <kglobal.h>
#include <klocale.h>
#include <stdlib.h>
#include <QPixmap>
namespace KWin
{
PluginMgr::PluginMgr()
: KDecorationPlugins(KGlobal::config())
, m_noDecoration(false)
{
defaultPlugin = (QPixmap::defaultDepth() > 8) ?
"kwin3_oxygen" : "kwin3_plastik";
loadPlugin(""); // load the plugin specified in cfg file
}
void PluginMgr::error(const QString &error_msg)
{
qWarning("%s", (i18n("KWin: ") + error_msg).toLocal8Bit().data());
setNoDecoration(true);
}
bool PluginMgr::provides(Requirement)
{
return false;
}
void PluginMgr::setNoDecoration(bool noDecoration)
{
m_noDecoration = noDecoration;
}
bool PluginMgr::hasNoDecoration() const
{
return m_noDecoration;
}
} // namespace