2010-05-11 18:45:39 +00:00
|
|
|
/*
|
|
|
|
* Copyright © 2010 Fredrik Höglund <fredrik@kde.org>
|
|
|
|
* Copyright (C) 2010 Alexandre Pereira <pereira.alex@gmail.com>
|
|
|
|
*
|
|
|
|
* 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; see the file COPYING. if not, write to
|
|
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
* Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "glide_config.h"
|
2012-09-12 18:31:37 +00:00
|
|
|
// KConfigSkeleton
|
|
|
|
#include "glideconfig.h"
|
2016-12-02 19:27:43 +00:00
|
|
|
#include <config-kwin.h>
|
2010-05-11 18:45:39 +00:00
|
|
|
|
2014-03-18 15:09:20 +00:00
|
|
|
#include <kwineffects_interface.h>
|
2014-03-17 15:24:10 +00:00
|
|
|
#include <KAboutData>
|
2014-03-18 15:09:20 +00:00
|
|
|
#include <KPluginFactory>
|
2010-05-11 18:45:39 +00:00
|
|
|
|
2014-03-17 13:56:11 +00:00
|
|
|
K_PLUGIN_FACTORY_WITH_JSON(GlideEffectConfigFactory,
|
|
|
|
"glide_config.json",
|
|
|
|
registerPlugin<KWin::GlideEffectConfig>();)
|
|
|
|
|
2010-05-11 18:45:39 +00:00
|
|
|
namespace KWin
|
|
|
|
{
|
|
|
|
|
|
|
|
GlideEffectConfig::GlideEffectConfig(QWidget *parent, const QVariantList &args)
|
2013-07-24 05:41:10 +00:00
|
|
|
: KCModule(KAboutData::pluginData(QStringLiteral("glide")), parent, args)
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2010-05-11 18:45:39 +00:00
|
|
|
ui.setupUi(this);
|
2016-12-02 19:27:43 +00:00
|
|
|
GlideConfig::instance(KWIN_CONFIG);
|
2012-09-12 18:31:37 +00:00
|
|
|
addConfig(GlideConfig::self(), this);
|
2010-05-11 18:45:39 +00:00
|
|
|
load();
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
2010-05-11 18:45:39 +00:00
|
|
|
|
|
|
|
GlideEffectConfig::~GlideEffectConfig()
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
|
|
|
}
|
2010-05-11 18:45:39 +00:00
|
|
|
|
|
|
|
void GlideEffectConfig::save()
|
2011-01-30 14:34:42 +00:00
|
|
|
{
|
2010-05-11 18:45:39 +00:00
|
|
|
KCModule::save();
|
2014-05-15 06:39:42 +00:00
|
|
|
OrgKdeKwinEffectsInterface interface(QStringLiteral("org.kde.KWin"),
|
2014-03-18 15:09:20 +00:00
|
|
|
QStringLiteral("/Effects"),
|
|
|
|
QDBusConnection::sessionBus());
|
2014-04-04 09:49:31 +00:00
|
|
|
interface.reconfigureEffect(QStringLiteral("glide"));
|
2011-01-30 14:34:42 +00:00
|
|
|
}
|
[effects] Rewrite the Glide effect
Summary:
There are several reasons why I "re-wrote" the Glide effect:
* it doesn't work correctly because it suffers from undesired perspective distortions: {F5914378}
The worst part is that windows are distorted so much on multiple monitor setups that it's hard to say whether that's glide animation.
* window close animation is not quite intuitive: if the close button is
located at the top and I click it, I would expect that window is
rotated around the bottom edge, not the top; (IMHO)
* it's too much distracting when working on something for quite good
amount of time: e.g. when editing photos, which involves a big number
of different dialogs;
* there are issues with deletion of QTimeLine;
* windows are not gracefully released if some other effect grabs them;
* its code doesn't follow common coding style in KWin.
So, the "new" Glide effect is more subtle, it's possible to have
different rotation edges for window open/close animations, it doesn't
animate special windows(like audio volume feedback), the code is simpler
and readable. Yet, there are some issues with QTimeLine, which are
common to all effects in KWin anyway.
### Demos
{F5889803}
//Window Open Animation//
{F5889804}
//Window Close Animation//
{F5889805, layout=center, size=full}
//KCM//
CCBUG: 394245
Test Plan:
* Enabled the Glide effect
* Closed System Settings
* Opened it again
Reviewers: #kwin, #plasma, #vdg, davidedmundson
Reviewed By: #kwin, #plasma, #vdg, davidedmundson
Subscribers: ngraham, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D13338
2018-06-01 09:56:33 +00:00
|
|
|
|
2010-05-11 18:45:39 +00:00
|
|
|
} // namespace KWin
|
[effects] Rewrite the Glide effect
Summary:
There are several reasons why I "re-wrote" the Glide effect:
* it doesn't work correctly because it suffers from undesired perspective distortions: {F5914378}
The worst part is that windows are distorted so much on multiple monitor setups that it's hard to say whether that's glide animation.
* window close animation is not quite intuitive: if the close button is
located at the top and I click it, I would expect that window is
rotated around the bottom edge, not the top; (IMHO)
* it's too much distracting when working on something for quite good
amount of time: e.g. when editing photos, which involves a big number
of different dialogs;
* there are issues with deletion of QTimeLine;
* windows are not gracefully released if some other effect grabs them;
* its code doesn't follow common coding style in KWin.
So, the "new" Glide effect is more subtle, it's possible to have
different rotation edges for window open/close animations, it doesn't
animate special windows(like audio volume feedback), the code is simpler
and readable. Yet, there are some issues with QTimeLine, which are
common to all effects in KWin anyway.
### Demos
{F5889803}
//Window Open Animation//
{F5889804}
//Window Close Animation//
{F5889805, layout=center, size=full}
//KCM//
CCBUG: 394245
Test Plan:
* Enabled the Glide effect
* Closed System Settings
* Opened it again
Reviewers: #kwin, #plasma, #vdg, davidedmundson
Reviewed By: #kwin, #plasma, #vdg, davidedmundson
Subscribers: ngraham, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D13338
2018-06-01 09:56:33 +00:00
|
|
|
|
2014-03-17 13:56:11 +00:00
|
|
|
#include "glide_config.moc"
|