Changeset View
Changeset View
Standalone View
Standalone View
client.cpp
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Line(s) | |||||
43 | #include <KWindowSystem> | 43 | #include <KWindowSystem> | ||
44 | #include <KColorScheme> | 44 | #include <KColorScheme> | ||
45 | // Qt | 45 | // Qt | ||
46 | #include <QApplication> | 46 | #include <QApplication> | ||
47 | #include <QDebug> | 47 | #include <QDebug> | ||
48 | #include <QFile> | 48 | #include <QFile> | ||
49 | #include <QMouseEvent> | 49 | #include <QMouseEvent> | ||
50 | #include <QProcess> | 50 | #include <QProcess> | ||
51 | #include <QStandardPaths> | | |||
52 | #include <QScriptEngine> | | |||
53 | #include <QScriptProgram> | | |||
54 | #include <QWhatsThis> | 51 | #include <QWhatsThis> | ||
55 | // XLib | 52 | // XLib | ||
56 | #include <X11/Xutil.h> | 53 | #include <X11/Xutil.h> | ||
57 | #include <fixx11h.h> | 54 | #include <fixx11h.h> | ||
58 | // system | 55 | // system | ||
59 | #include <unistd.h> | 56 | #include <unistd.h> | ||
60 | #include <signal.h> | 57 | #include <signal.h> | ||
61 | 58 | | |||
▲ Show 20 Lines • Show All 1367 Lines • ▼ Show 20 Line(s) | |||||
1429 | { | 1426 | { | ||
1430 | if (!force && _s == cap_normal) | 1427 | if (!force && _s == cap_normal) | ||
1431 | return; | 1428 | return; | ||
1432 | QString s(_s); | 1429 | QString s(_s); | ||
1433 | for (int i = 0; i < s.length(); ++i) | 1430 | for (int i = 0; i < s.length(); ++i) | ||
1434 | if (!s[i].isPrint()) | 1431 | if (!s[i].isPrint()) | ||
1435 | s[i] = QChar(u' '); | 1432 | s[i] = QChar(u' '); | ||
1436 | cap_normal = s; | 1433 | cap_normal = s; | ||
1437 | if (options->condensedTitle()) { | 1434 | if (!force) | ||
1438 | static QScriptEngine engine; | | |||
1439 | static QScriptProgram stripTitle; | | |||
1440 | static QScriptValue script; | | |||
1441 | if (stripTitle.isNull()) { | | |||
1442 | const QString scriptFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral(KWIN_NAME "/stripTitle.js")); | | |||
1443 | if (!scriptFile.isEmpty()) { | | |||
1444 | QFile f(scriptFile); | | |||
1445 | if (f.open(QIODevice::ReadOnly|QIODevice::Text)) { | | |||
1446 | f.reset(); | | |||
1447 | stripTitle = QScriptProgram(QString::fromLocal8Bit(f.readAll()), QStringLiteral("stripTitle.js")); | | |||
1448 | f.close(); | | |||
1449 | } | | |||
1450 | } | | |||
1451 | if (stripTitle.isNull()) | | |||
1452 | stripTitle = QScriptProgram(QStringLiteral("(function(title, wm_name, wm_class){ return title ; })"), QStringLiteral("stripTitle.js")); | | |||
1453 | script = engine.evaluate(stripTitle); | | |||
1454 | } | | |||
1455 | QScriptValueList args; | | |||
1456 | args << _s << QString::fromUtf8(resourceName()) << QString::fromUtf8(resourceClass()); | | |||
1457 | s = script.call(QScriptValue(), args).toString(); | | |||
1458 | } | | |||
1459 | if (!force && s == cap_deco) | | |||
1460 | return; | 1435 | return; | ||
1461 | cap_deco = s; | | |||
1462 | 1436 | | |||
1463 | bool reset_name = force; | 1437 | bool reset_name = force; | ||
1464 | bool was_suffix = (!cap_suffix.isEmpty()); | 1438 | bool was_suffix = (!cap_suffix.isEmpty()); | ||
1465 | cap_suffix.clear(); | 1439 | cap_suffix.clear(); | ||
1466 | QString machine_suffix; | 1440 | QString machine_suffix; | ||
1467 | if (!options->condensedTitle()) { // machine doesn't qualify for "clean" | 1441 | if (!options->condensedTitle()) { // machine doesn't qualify for "clean" | ||
1468 | if (clientMachine()->hostName() != ClientMachine::localhost() && !clientMachine()->isLocal()) | 1442 | if (clientMachine()->hostName() != ClientMachine::localhost() && !clientMachine()->isLocal()) | ||
1469 | machine_suffix = QLatin1String(" <@") + QString::fromUtf8(clientMachine()->hostName()) + QLatin1Char('>') + LRM; | 1443 | machine_suffix = QLatin1String(" <@") + QString::fromUtf8(clientMachine()->hostName()) + QLatin1Char('>') + LRM; | ||
1470 | } | 1444 | } | ||
1471 | QString shortcut_suffix = !shortcut().isEmpty() ? (QLatin1String(" {") + shortcut().toString() + QLatin1Char('}')) : QString(); | 1445 | QString shortcut_suffix = shortcutCaptionSuffix(); | ||
1472 | cap_suffix = machine_suffix + shortcut_suffix; | 1446 | cap_suffix = machine_suffix + shortcut_suffix; | ||
1473 | auto fetchNameInternalPredicate = [this](const Client *cl) { | 1447 | auto fetchNameInternalPredicate = [this](const Client *cl) { | ||
1474 | return (!cl->isSpecialWindow() || cl->isToolbar()) && | 1448 | return (!cl->isSpecialWindow() || cl->isToolbar()) && | ||
1475 | cl != this && cl->caption() == caption(); | 1449 | cl != this && cl->caption() == caption(); | ||
1476 | }; | 1450 | }; | ||
1477 | if ((!isSpecialWindow() || isToolbar()) && workspace()->findClient(fetchNameInternalPredicate)) { | 1451 | if ((!isSpecialWindow() || isToolbar()) && workspace()->findClient(fetchNameInternalPredicate)) { | ||
1478 | int i = 2; | 1452 | int i = 2; | ||
1479 | do { | 1453 | do { | ||
▲ Show 20 Lines • Show All 712 Lines • Show Last 20 Lines |