effects: Drop morphing popups effect
The effect does not work very well for two main reasons: Some clients will make a new popup rather than move an existing one, so whether it does anything is highly unpredictable as a user. Popups can be of massively different sizes with different amounts of text. This means the text in the smaller popup gets resized which doesn't look like a natural in-between state of the two popups. This defeats the objective of looking smoother. On top of that, it's rather glitchy. This effect was purely visual, no functionality changes. BUG: 473411 BUG: 466638 BUG: 416048 BUG: 461501 BUG: 466637
This commit is contained in:
parent
64b02cf464
commit
d6360cc4ce
4 changed files with 0 additions and 283 deletions
|
@ -78,7 +78,6 @@ add_subdirectory(magiclamp)
|
||||||
add_subdirectory(magnifier)
|
add_subdirectory(magnifier)
|
||||||
add_subdirectory(maximize)
|
add_subdirectory(maximize)
|
||||||
add_subdirectory(minimizeall)
|
add_subdirectory(minimizeall)
|
||||||
add_subdirectory(morphingpopups)
|
|
||||||
add_subdirectory(mouseclick)
|
add_subdirectory(mouseclick)
|
||||||
add_subdirectory(mousemark)
|
add_subdirectory(mousemark)
|
||||||
add_subdirectory(nightlight)
|
add_subdirectory(nightlight)
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
kwin_add_scripted_effect(morphingpopups package)
|
|
|
@ -1,137 +0,0 @@
|
||||||
/*
|
|
||||||
This file is part of the KDE project.
|
|
||||||
|
|
||||||
SPDX-FileCopyrightText: 2012 Martin Gräßlin <mgraesslin@kde.org>
|
|
||||||
SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
*/
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var morphingEffect = {
|
|
||||||
duration: animationTime(150),
|
|
||||||
loadConfig: function () {
|
|
||||||
morphingEffect.duration = animationTime(150);
|
|
||||||
},
|
|
||||||
|
|
||||||
handleFrameGeometryAboutToChange: function (window) {
|
|
||||||
var couldRetarget = false;
|
|
||||||
if (window.fadeAnimation) {
|
|
||||||
couldRetarget = retarget(window.fadeAnimation[0], 1.0, morphingEffect.duration);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!couldRetarget) {
|
|
||||||
window.fadeAnimation = animate({
|
|
||||||
window: window,
|
|
||||||
duration: morphingEffect.duration,
|
|
||||||
curve: QEasingCurve.InOutCubic,
|
|
||||||
animations: [{
|
|
||||||
type: Effect.CrossFadePrevious,
|
|
||||||
to: 1.0,
|
|
||||||
from: 0.0
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleFrameGeometryChanged: function (window, oldGeometry) {
|
|
||||||
var newGeometry = window.geometry;
|
|
||||||
|
|
||||||
//only do the transition for near enough tooltips,
|
|
||||||
//don't cross the whole screen: ugly
|
|
||||||
var distance = Math.abs(oldGeometry.x - newGeometry.x) + Math.abs(oldGeometry.y - newGeometry.y);
|
|
||||||
|
|
||||||
if (distance > (newGeometry.width + newGeometry.height) * 2) {
|
|
||||||
if (window.moveAnimation) {
|
|
||||||
delete window.moveAnimation;
|
|
||||||
}
|
|
||||||
if (window.fadeAnimation) {
|
|
||||||
delete window.fadeAnimation;
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//don't resize it "too much", set as four times
|
|
||||||
if ((newGeometry.width / oldGeometry.width) > 4 ||
|
|
||||||
(oldGeometry.width / newGeometry.width) > 4 ||
|
|
||||||
(newGeometry.height / oldGeometry.height) > 4 ||
|
|
||||||
(oldGeometry.height / newGeometry.height) > 4) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.setData(Effect.WindowForceBackgroundContrastRole, true);
|
|
||||||
window.setData(Effect.WindowForceBlurRole, true);
|
|
||||||
|
|
||||||
var couldRetarget = false;
|
|
||||||
|
|
||||||
if (window.moveAnimation) {
|
|
||||||
if (window.moveAnimation[0]) {
|
|
||||||
couldRetarget = retarget(window.moveAnimation[0], {
|
|
||||||
value1: newGeometry.width,
|
|
||||||
value2: newGeometry.height
|
|
||||||
}, morphingEffect.duration);
|
|
||||||
}
|
|
||||||
if (couldRetarget && window.moveAnimation[1]) {
|
|
||||||
couldRetarget = retarget(window.moveAnimation[1], {
|
|
||||||
value1: newGeometry.x + newGeometry.width/2,
|
|
||||||
value2: newGeometry.y + newGeometry.height / 2
|
|
||||||
}, morphingEffect.duration);
|
|
||||||
}
|
|
||||||
if (!couldRetarget) {
|
|
||||||
cancel(window.moveAnimation[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!couldRetarget) {
|
|
||||||
window.moveAnimation = animate({
|
|
||||||
window: window,
|
|
||||||
duration: morphingEffect.duration,
|
|
||||||
curve: QEasingCurve.InOutCubic,
|
|
||||||
animations: [{
|
|
||||||
type: Effect.Size,
|
|
||||||
to: {
|
|
||||||
value1: newGeometry.width,
|
|
||||||
value2: newGeometry.height
|
|
||||||
},
|
|
||||||
from: {
|
|
||||||
value1: oldGeometry.width,
|
|
||||||
value2: oldGeometry.height
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
type: Effect.Position,
|
|
||||||
to: {
|
|
||||||
value1: newGeometry.x + newGeometry.width / 2,
|
|
||||||
value2: newGeometry.y + newGeometry.height / 2
|
|
||||||
},
|
|
||||||
from: {
|
|
||||||
value1: oldGeometry.x + oldGeometry.width / 2,
|
|
||||||
value2: oldGeometry.y + oldGeometry.height / 2
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
manage: function (window) {
|
|
||||||
//only tooltips and notifications
|
|
||||||
if (!window.tooltip && !window.notification && !window.criticalNotification) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.windowFrameGeometryAboutToChange.connect(morphingEffect.handleFrameGeometryAboutToChange);
|
|
||||||
window.windowFrameGeometryChanged.connect(morphingEffect.handleFrameGeometryChanged);
|
|
||||||
},
|
|
||||||
|
|
||||||
init: function () {
|
|
||||||
effect.configChanged.connect(morphingEffect.loadConfig);
|
|
||||||
effects.windowAdded.connect(morphingEffect.manage);
|
|
||||||
|
|
||||||
for (const window of effects.stackingOrder) {
|
|
||||||
morphingEffect.manage(window);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
morphingEffect.init();
|
|
|
@ -1,144 +0,0 @@
|
||||||
{
|
|
||||||
"KPackageStructure": "KWin/Effect",
|
|
||||||
"KPlugin": {
|
|
||||||
"Authors": [
|
|
||||||
{
|
|
||||||
"Email": "mart@kde.org",
|
|
||||||
"Name": "Marco Martin",
|
|
||||||
"Name[ar]": "ماركو مارتن",
|
|
||||||
"Name[ast]": "Marco Martin",
|
|
||||||
"Name[az]": "Marco Martin",
|
|
||||||
"Name[be]": "Marco Martin",
|
|
||||||
"Name[bg]": "Marco Martin",
|
|
||||||
"Name[ca@valencia]": "Marco Martin",
|
|
||||||
"Name[ca]": "Marco Martin",
|
|
||||||
"Name[cs]": "Marco Martin",
|
|
||||||
"Name[de]": "Marco Martin",
|
|
||||||
"Name[en_GB]": "Marco Martin",
|
|
||||||
"Name[eo]": "Marco Martin",
|
|
||||||
"Name[es]": "Marco Martin",
|
|
||||||
"Name[et]": "Marco Martin",
|
|
||||||
"Name[eu]": "Marco Martin",
|
|
||||||
"Name[fi]": "Marco Martin",
|
|
||||||
"Name[fr]": "Marco Martin",
|
|
||||||
"Name[gl]": "Marco Martin",
|
|
||||||
"Name[he]": "מרקו מרטין",
|
|
||||||
"Name[hu]": "Marco Martin",
|
|
||||||
"Name[ia]": "Marco Martin",
|
|
||||||
"Name[id]": "Marco Martin",
|
|
||||||
"Name[is]": "Marco Martin",
|
|
||||||
"Name[it]": "Marco Martin",
|
|
||||||
"Name[ja]": "Marco Martin",
|
|
||||||
"Name[ka]": "Marco Martin",
|
|
||||||
"Name[ko]": "Marco Martin",
|
|
||||||
"Name[lt]": "Marco Martin",
|
|
||||||
"Name[lv]": "Marco Martin",
|
|
||||||
"Name[nl]": "Marco Martin",
|
|
||||||
"Name[nn]": "Marco Martin",
|
|
||||||
"Name[pl]": "Marco Martin",
|
|
||||||
"Name[pt]": "Marco Martin",
|
|
||||||
"Name[pt_BR]": "Marco Martin",
|
|
||||||
"Name[ro]": "Marco Martin",
|
|
||||||
"Name[ru]": "Marco Martin",
|
|
||||||
"Name[sk]": "Marco Martin",
|
|
||||||
"Name[sl]": "Marco Martin",
|
|
||||||
"Name[sv]": "Marco Martin",
|
|
||||||
"Name[ta]": "மார்கோ மார்ட்டின்",
|
|
||||||
"Name[tr]": "Marco Martin",
|
|
||||||
"Name[uk]": "Marco Martin",
|
|
||||||
"Name[vi]": "Marco Martin",
|
|
||||||
"Name[x-test]": "xxMarco Martinxx",
|
|
||||||
"Name[zh_CN]": "Marco Martin",
|
|
||||||
"Name[zh_TW]": "Marco Martin"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"Category": "Appearance",
|
|
||||||
"Description": "Cross fade animation when Tooltips or Notifications change their geometry",
|
|
||||||
"Description[ar]": "تحريك التلاشي المتقاطع عندما يغير التلميح أو الإشعار من أبعاده",
|
|
||||||
"Description[be]": "Анімацыя згасання пры змене геаметрыі выплыўных падказак і апавяшчэнняў",
|
|
||||||
"Description[bg]": "Кръстосано преливане, когато подсказките или известията променят геометрията си",
|
|
||||||
"Description[ca@valencia]": "Animació d'esvaïment creuat quan els consells d'eines o les notificacions canvien la seua geometria",
|
|
||||||
"Description[ca]": "Animació d'esvaïment creuat quan els consells d'eines o les notificacions canvien la seva geometria",
|
|
||||||
"Description[de]": "Überblendende Animationen, wenn Kurzinfos oder Benachrichtigungen ihre Geometrie ändern",
|
|
||||||
"Description[en_GB]": "Cross fade animation when Tooltips or Notifications change their geometry",
|
|
||||||
"Description[eo]": "Krucfada animacio kiam Konsiletoj aŭ Sciigoj ŝanĝas sian geometrion",
|
|
||||||
"Description[es]": "Animación cruzada cuando las ayudas emergentes o las notificaciones cambian su geometría",
|
|
||||||
"Description[et]": "Animatsioon hääbumisega, kui kohtspikrid või märguanded muudavad geomeetriat",
|
|
||||||
"Description[eu]": "Desagertze gurutzatua tresnen argibideek edo jakinarazpenek geometria aldatzen dutenean",
|
|
||||||
"Description[fi]": "Häivytysanimaatio työkaluvihjeiden tai ilmoitusten muutettua muotoaan",
|
|
||||||
"Description[fr]": "Animation en fondu enchaîné lorsque des infobulles ou des notifications modifient leurs géométries",
|
|
||||||
"Description[gl]": "Usar unha animación de esvaemento cando a xeometría das mensaxes emerxentes de axuda ou notificación cambia.",
|
|
||||||
"Description[he]": "הנפשת עמעום צולבת כשחלוניות עצה או התראות משנים את גודלם/מיקומם",
|
|
||||||
"Description[hu]": "Keresztbe halványulás animáció, amikor a buboréksúgók vagy az értesítések megváltoztatják a geometriájukat",
|
|
||||||
"Description[ia]": "Transversa animation distingite quando Consilios o Notificationes cambia le lor geometria",
|
|
||||||
"Description[is]": "Láta dofna á milli þegar vísbendingar eða tilkynningar breyta stærð sinni og/eða stöðu",
|
|
||||||
"Description[it]": "Animazione in dissolvenza quando i suggerimenti e le notifiche cambiano la loro geometria",
|
|
||||||
"Description[ja]": "ツールチップや通知ポップアップのジオメトリ変更時のクロスフェードアニメーション",
|
|
||||||
"Description[ka]": "ჯვროვანი მინავლება, როცა მინიშნებები ან გაფრთხილებები გეომეტრიას იცვლიან",
|
|
||||||
"Description[ko]": "풍선 도움말이나 알림 크기가 변경될 때 크로스페이드 애니메이션 사용",
|
|
||||||
"Description[lt]": "Užplūdimo animacija, kai paaiškinimai ar pranešimai pakeičia savo geometriją",
|
|
||||||
"Description[lv]": "Abpusējas izgaišanas animācija, kad ģeometriju maina paskaidres vai paziņojumi",
|
|
||||||
"Description[nl]": "Verwissel animatie van opkomen/vervagen wanneer tekstballonnen of meldingen hun geometrie wijzigen",
|
|
||||||
"Description[nn]": "Krysstoningsanimasjon når hjelpebobler eller varslingar endrar form",
|
|
||||||
"Description[pl]": "Efekt zmiany kształtu podpowiedzi i powiadomień przy zmianie ich geometrii",
|
|
||||||
"Description[pt]": "Animações desvanecidas quando as dicas ou notificações mudam de tamanho",
|
|
||||||
"Description[ru]": "При изменении формы всплывающих подсказок или уведомлений они плавно растягиваются или сжимаются",
|
|
||||||
"Description[sk]": "Animácia krížového prelínania, keď sa zmení geometria nápovedy k nástrojom alebo oznámení",
|
|
||||||
"Description[sl]": "Animacija navzkrižnega preliva, ko se orodnim namigom ali obvestilom spremeni geometrija",
|
|
||||||
"Description[ta]": "கருவித்துப்புகளின் மற்றும் அறிவிப்புகளின் அளவை மாற்றும்போது அவற்றை மங்கசெய்து மாற்றும்",
|
|
||||||
"Description[tr]": "Araç ipuçları veya bildirimler boyutları değiştiğinde gösterilecek çapraz geçiş canlandırması",
|
|
||||||
"Description[uk]": "Анімація зі зміною освітленості під час зміни геометрії панелей підказок і сповіщень",
|
|
||||||
"Description[vi]": "Hiệu ứng động mờ dần khi các chú giải hay thông báo thay đổi hình dạng",
|
|
||||||
"Description[x-test]": "xxCross fade animation when Tooltips or Notifications change their geometryxx",
|
|
||||||
"Description[zh_CN]": "工具提示/通知信息框大小变化时呈现过渡动效",
|
|
||||||
"Description[zh_TW]": "當工具提示或通知變更位置時交錯淡出動畫",
|
|
||||||
"EnabledByDefault": true,
|
|
||||||
"Icon": "preferences-system-windows-effect-morphingpopups",
|
|
||||||
"Id": "morphingpopups",
|
|
||||||
"License": "GPL",
|
|
||||||
"Name": "Morphing Popups",
|
|
||||||
"Name[ar]": "المنبثقات المتحورة",
|
|
||||||
"Name[be]": "Трансфармаванне выплыўных акон",
|
|
||||||
"Name[bg]": "Променящи се изскачащи прозорци",
|
|
||||||
"Name[ca@valencia]": "Missatges emergents en metamorfosi",
|
|
||||||
"Name[ca]": "Missatges emergents en metamorfosi",
|
|
||||||
"Name[cs]": "Morfující vyskakovací okna",
|
|
||||||
"Name[de]": "Verformende Aufklappfenster",
|
|
||||||
"Name[en_GB]": "Morphing Popups",
|
|
||||||
"Name[eo]": "Morphing Ŝprucfenestroj",
|
|
||||||
"Name[es]": "Transformación de ventanas emergentes",
|
|
||||||
"Name[eu]": "Eraldatzen diren gainerakorrak",
|
|
||||||
"Name[fi]": "Ponnahdusikkunoiden muodonmuutos",
|
|
||||||
"Name[fr]": "Effectuer un fondu enchaîné des infobulles",
|
|
||||||
"Name[gl]": "Xanelas emerxentes cambiantes",
|
|
||||||
"Name[he]": "חלוניות צצות משתנות",
|
|
||||||
"Name[hu]": "Alakváltó felugrók",
|
|
||||||
"Name[ia]": "Popups de Morphing",
|
|
||||||
"Name[is]": "Myndbrigði svarglugga",
|
|
||||||
"Name[it]": "Finestre a comparsa che si trasformano",
|
|
||||||
"Name[ja]": "変形するポップアップ",
|
|
||||||
"Name[ka]": "ტრანსფორმირებადი მხტუნარები",
|
|
||||||
"Name[ko]": "변형되는 팝업",
|
|
||||||
"Name[lt]": "Persikeičiantys iškylantieji langai",
|
|
||||||
"Name[lv]": "Transformēt uzlecošos logus",
|
|
||||||
"Name[nl]": "Morphing pop-ups",
|
|
||||||
"Name[nn]": "Formendring for sprettoppvindauge",
|
|
||||||
"Name[pl]": "Zmiennokształtne okna",
|
|
||||||
"Name[pt]": "Janelas Mutantes",
|
|
||||||
"Name[pt_BR]": "Mensagens com mudança de forma",
|
|
||||||
"Name[ro]": "Indicii în schimbare",
|
|
||||||
"Name[ru]": "Анимация преобразования всплывающих окон",
|
|
||||||
"Name[sk]": "Postupne sa meniace vyskakovacie okná",
|
|
||||||
"Name[sl]": "Pogovorna okna pretvorb",
|
|
||||||
"Name[ta]": "தெரித்தெழுபவை திரிவது",
|
|
||||||
"Name[tr]": "Dönüşen Açılır Pencereler",
|
|
||||||
"Name[uk]": "Аморфні контекстні панелі",
|
|
||||||
"Name[vi]": "Ô bật lên biến dạng",
|
|
||||||
"Name[x-test]": "xxMorphing Popupsxx",
|
|
||||||
"Name[zh_CN]": "气泡大小渐变动画",
|
|
||||||
"Name[zh_TW]": "交錯彈出視窗"
|
|
||||||
},
|
|
||||||
"X-KDE-Ordering": 60,
|
|
||||||
"X-KWin-Video-Url": "https://files.kde.org/plasma/kwin/effect-videos/morphingpopups.ogv",
|
|
||||||
"X-Plasma-API": "javascript"
|
|
||||||
}
|
|
Loading…
Reference in a new issue