summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Gräßlin <mgraesslin@kde.org>2012-10-26 09:50:44 (GMT)
committerMartin Gräßlin <mgraesslin@kde.org>2012-10-28 08:51:01 (GMT)
commite7be09916a62be6266c9f45d6688dca7eacfa71f (patch)
tree2611918fae4bffe5746da7daa39a86366212993f
parent431ec22fcb88d339634f6414eaf087d87a1e35eb (diff)
New Maximize Window Effect
Animation for going from restored to maximized and vice versa. BUG: 308990 FIXED-IN: 4.10 REVIEW: 107050
-rw-r--r--kwin/effects/CMakeLists.txt1
-rw-r--r--kwin/effects/maximize/CMakeLists.txt1
-rw-r--r--kwin/effects/maximize/package/CMakeLists.txt6
-rw-r--r--kwin/effects/maximize/package/contents/code/maximize.js60
-rw-r--r--kwin/effects/maximize/package/metadata.desktop21
5 files changed, 89 insertions, 0 deletions
diff --git a/kwin/effects/CMakeLists.txt b/kwin/effects/CMakeLists.txt
index 402d5c2..e8441f4 100644
--- a/kwin/effects/CMakeLists.txt
+++ b/kwin/effects/CMakeLists.txt
@@ -84,6 +84,7 @@ add_subdirectory( fade )
# scripted effects only relevant to desktop
if( NOT KWIN_MOBILE_EFFECTS )
add_subdirectory( fadedesktop )
+ add_subdirectory( maximize )
endif( NOT KWIN_MOBILE_EFFECTS )
###############################################################################
diff --git a/kwin/effects/maximize/CMakeLists.txt b/kwin/effects/maximize/CMakeLists.txt
new file mode 100644
index 0000000..28f40b3
--- /dev/null
+++ b/kwin/effects/maximize/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory( package )
diff --git a/kwin/effects/maximize/package/CMakeLists.txt b/kwin/effects/maximize/package/CMakeLists.txt
new file mode 100644
index 0000000..e1262fa
--- /dev/null
+++ b/kwin/effects/maximize/package/CMakeLists.txt
@@ -0,0 +1,6 @@
+install(DIRECTORY contents DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/effects/kwin4_effect_maximize)
+install(FILES metadata.desktop DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME}/effects/kwin4_effect_maximize)
+
+install(FILES metadata.desktop
+ DESTINATION ${SERVICES_INSTALL_DIR}/${KWIN_NAME}
+ RENAME kwin4_effect_maximize.desktop)
diff --git a/kwin/effects/maximize/package/contents/code/maximize.js b/kwin/effects/maximize/package/contents/code/maximize.js
new file mode 100644
index 0000000..75413b7
--- /dev/null
+++ b/kwin/effects/maximize/package/contents/code/maximize.js
@@ -0,0 +1,60 @@
+/********************************************************************
+ This file is part of the KDE project.
+
+ Copyright (C) 2012 Martin Grlin <mgraesslin@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/>.
+*********************************************************************/
+/*global effect, effects, animationTime, Effect*/
+var maximizeEffect = {
+ duration: animationTime(250),
+ loadConfig: function () {
+ "use strict";
+ maximizeEffect.duration = animationTime(250);
+ },
+ maximizeChanged: function (window) {
+ "use strict";
+ if (!window.oldGeometry) {
+ return;
+ }
+ var oldGeometry, newGeometry;
+ oldGeometry = window.oldGeometry;
+ newGeometry = window.geometry;
+ effect.animate(window, Effect.Scale, maximizeEffect.duration, {
+ value1: 1.0,
+ value2: 1.0
+ }, {
+ value1: oldGeometry.width / newGeometry.width,
+ value2: oldGeometry.height / newGeometry.height
+ });
+ effect.animate(window, Effect.Translation, maximizeEffect.duration, {
+ value1: 0,
+ value2: 0
+ }, {
+ value1: oldGeometry.x - newGeometry.x - (newGeometry.width / 2 - oldGeometry.width / 2),
+ value2: oldGeometry.y - newGeometry.y - (newGeometry.height / 2 - oldGeometry.height / 2)
+ });
+ },
+ geometryChange: function (window, oldGeometry) {
+ "use strict";
+ window.oldGeometry = oldGeometry;
+ },
+ init: function () {
+ "use strict";
+ effect.configChanged.connect(maximizeEffect.loadConfig);
+ effects.windowGeometryShapeChanged.connect(maximizeEffect.geometryChange);
+ effects.windowMaximizedStateChanged.connect(maximizeEffect.maximizeChanged);
+ }
+};
+maximizeEffect.init();
diff --git a/kwin/effects/maximize/package/metadata.desktop b/kwin/effects/maximize/package/metadata.desktop
new file mode 100644
index 0000000..af07a1b
--- /dev/null
+++ b/kwin/effects/maximize/package/metadata.desktop
@@ -0,0 +1,21 @@
+[Desktop Entry]
+Comment=Animation for a window going to maximize/restore from maximize
+Encoding=UTF-8
+Icon=preferences-system-windows-effect-maximize
+Name=Maximize
+Type=Service
+X-KDE-ParentApp=
+X-KDE-PluginInfo-Author=Martin Gräßlin
+X-KDE-PluginInfo-Category=Appearance
+X-KDE-PluginInfo-Email=mgraesslin@kde.org
+X-KDE-PluginInfo-License=GPL
+X-KDE-PluginInfo-Name=kwin4_effect_maximize
+X-KDE-PluginInfo-Version=1
+X-KDE-PluginInfo-Website=
+X-KDE-ServiceTypes=KWin/Effect
+X-KDE-PluginInfo-EnabledByDefault=true
+X-KDE-Ordering=60
+X-Plasma-API=javascript
+X-Plasma-DefaultSize=200,100
+X-Plasma-MainScript=code/maximize.js
+X-Plasma-RemoteLocation=