You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
7.3 KiB
JavaScript
232 lines
7.3 KiB
JavaScript
/*
|
|
* Copyright 2017-2018 Michail Vourlakos <mvourlakos@gmail.com>
|
|
*
|
|
* This file is part of Latte-Dock
|
|
*
|
|
* Latte-Dock 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.
|
|
*
|
|
* Latte-Dock 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/>.
|
|
*/
|
|
|
|
//! applets that havent identified properly their Latte behavior and
|
|
//! create broken results when used in Latte
|
|
var blacklistedApplets = [];
|
|
|
|
function typeOf(obj, className){
|
|
var name = obj.toString();
|
|
//if (applet.pluginName === "org.kde.plasma.kicker") //"set a plugin name to debug"
|
|
// console.log(name);
|
|
return ((name.indexOf(className + "(") === 0) || (name.indexOf(className + "_QML") === 0));
|
|
}
|
|
|
|
function reconsiderAppletIconItem(){
|
|
if (container.appletIconItem || !applet || container.disableLatteParabolicIconHeuristics)
|
|
return;
|
|
|
|
//! searching to find for that applet the first IconItem
|
|
//! which is going to be used in order to deactivate its active
|
|
//! from our MouseArea
|
|
|
|
if (applet.pluginName === "org.kde.plasma.kickoff") {
|
|
identifyKickOff();
|
|
} else if (applet.pluginName === "org.kde.plasma.kicker") {
|
|
identifyKicker();
|
|
} else if (applet.pluginName === "org.kde.plasma.simplemenu") {
|
|
identifySimpleMenu();
|
|
} else if (applet.pluginName === "org.kde.plasma.userswitcher"&& !root.behaveAsPlasmaPanel && !container.lockZoom) {
|
|
identifyUserSwitcher();
|
|
} else if (applet.pluginName === "org.kde.comexpertise.plasma.kdeconnect.sms") {
|
|
identifyKdeConnectSms();
|
|
} else if (applet.pluginName === "org.kde.redshiftControl") {
|
|
//blacklist
|
|
} else {
|
|
identifyGeneric();
|
|
}
|
|
}
|
|
|
|
function identifyGeneric() {
|
|
if (blacklistedApplets.indexOf(applet.pluginName) >= 0) {
|
|
return;
|
|
}
|
|
|
|
var level0 = applet.children;
|
|
|
|
for(var i=0; i<level0.length; ++i){
|
|
var level1 = level0[i].children;
|
|
for(var j=0; j<level1.length; ++j){
|
|
if (typeOf(level1[j], "CompactRepresentation")) {
|
|
var level2 = level1[j].children;
|
|
for(var k=0; k<level2.length; ++k){
|
|
if (typeOf(level2[k], "IconItem")) {
|
|
container.appletIconItem = level2[k];
|
|
return;
|
|
}
|
|
}
|
|
} else if (typeOf(level1[j], "IconItem")) {
|
|
container.appletIconItem = level1[j];
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function identifyKdeConnectSms()
|
|
{
|
|
if (applet.pluginName !== "org.kde.comexpertise.plasma.kdeconnect.sms")
|
|
return;
|
|
|
|
var level0 = applet.children;
|
|
|
|
for(var i=0; i<level0.length; ++i){
|
|
var level1 = level0[i].children;
|
|
for(var j=0; j<level1.length; ++j){
|
|
var level2 = level1[j].children;
|
|
for(var k=0; k<level2.length; ++k){
|
|
if (typeOf(level2[k], "IconItem")) {
|
|
container.appletIconItem = level2[k];
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
function identifyKickOff() {
|
|
if (applet.pluginName !== "org.kde.plasma.kickoff")
|
|
return;
|
|
|
|
var level0 = applet.children;
|
|
|
|
for(var i=0; i<level0.length; ++i){
|
|
var level1 = level0[i].children;
|
|
for(var j=0; j<level1.length; ++j){
|
|
if (applet.pluginName === "org.kde.plasma.kickoff") {
|
|
if (typeOf(level1[j], "QQuickMouseArea")) {
|
|
var level2 = level1[j].children;
|
|
for(var k=0; k<level2.length; ++k){
|
|
if (typeOf(level2[k], "IconItem")) {
|
|
container.appletIconItem = level2[k];
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function identifyUserSwitcher() {
|
|
if (applet.pluginName !== "org.kde.plasma.userswitcher")
|
|
return;
|
|
|
|
var level0 = applet.children;
|
|
|
|
for(var i=0; i<level0.length; ++i){
|
|
var level1 = level0[i].children;
|
|
for(var j=0; j<level1.length; ++j){
|
|
if (applet.pluginName === "org.kde.plasma.userswitcher" && !root.behaveAsPlasmaPanel && !container.lockZoom) {
|
|
if (typeOf(level1[j], "QQuickMouseArea")) {
|
|
var level2 = level1[j].children;
|
|
for(var k=0; k<level2.length; ++k){
|
|
if (typeOf(level2[k], "QQuickRow")) {
|
|
var iconIt;
|
|
var labelIt;
|
|
var level3 = level2[k].children;
|
|
|
|
for(var r=0; r<level3.length; ++r){
|
|
if (typeOf(level3[r], "IconItem")) {
|
|
iconIt = level3[r];
|
|
} else if (typeOf(level3[r], "QQuickText")) {
|
|
labelIt = level3[r];
|
|
}
|
|
}
|
|
if (iconIt && labelIt && !labelIt.visible){
|
|
container.appletIconItem = iconIt;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function identifyKicker() {
|
|
if (applet.pluginName !== "org.kde.plasma.kicker")
|
|
return;
|
|
|
|
var level0 = applet.children;
|
|
|
|
for(var i=0; i<level0.length; ++i){
|
|
var level1 = level0[i].children;
|
|
for(var j=0; j<level1.length; ++j){
|
|
if (typeOf(level1[j], "CompactRepresentation")) {
|
|
var level2 = level1[j].children;
|
|
var iconIt;
|
|
var imageIt;
|
|
|
|
for(var k=0; k<level2.length; ++k){
|
|
if (typeOf(level2[k], "IconItem")) {
|
|
iconIt = level2[k];
|
|
} else if (typeOf(level2[k], "QQuickImage")) {
|
|
imageIt = level2[k];
|
|
}
|
|
}
|
|
|
|
if (iconIt) {
|
|
container.appletIconItem = iconIt;
|
|
}
|
|
|
|
if (imageIt){
|
|
container.appletImageItem = imageIt;
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function identifySimpleMenu() {
|
|
if (applet.pluginName !== "org.kde.plasma.simplemenu")
|
|
return;
|
|
|
|
var level0 = applet.children;
|
|
|
|
for(var i=0; i<level0.length; ++i){
|
|
var level1 = level0[i].children;
|
|
var iconIt;
|
|
var imageIt;
|
|
|
|
for(var j=0; j<level1.length; ++j){
|
|
if (typeOf(level1[j], "IconItem")) {
|
|
iconIt = level1[j];
|
|
} else if (typeOf(level1[j], "QQuickImage")) {
|
|
imageIt = level1[j];
|
|
}
|
|
}
|
|
|
|
if (iconIt) {
|
|
container.appletIconItem = iconIt;
|
|
}
|
|
|
|
if (imageIt){
|
|
container.appletImageItem = imageIt;
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|