kcms/rules: Use window class and role with original casing
The window rules kcm uses lower-case window class and role, but kwin can use window class and role with other casing, which will break the ExactMatch match rule. BUG: 464190
This commit is contained in:
parent
ecf3fa9f10
commit
5963790b21
2 changed files with 13 additions and 13 deletions
|
@ -324,9 +324,9 @@ void KCMKWinRules::importFromFile(const QUrl &path)
|
||||||
// Code adapted from original `findRule()` method in `kwin_rules_dialog::main.cpp`
|
// Code adapted from original `findRule()` method in `kwin_rules_dialog::main.cpp`
|
||||||
QModelIndex KCMKWinRules::findRuleWithProperties(const QVariantMap &info, bool wholeApp) const
|
QModelIndex KCMKWinRules::findRuleWithProperties(const QVariantMap &info, bool wholeApp) const
|
||||||
{
|
{
|
||||||
const QString wmclass_class = info.value("resourceClass").toString().toLower();
|
const QString wmclass_class = info.value("resourceClass").toString();
|
||||||
const QString wmclass_name = info.value("resourceName").toString().toLower();
|
const QString wmclass_name = info.value("resourceName").toString();
|
||||||
const QString role = info.value("role").toString().toLower();
|
const QString role = info.value("role").toString();
|
||||||
const NET::WindowType type = static_cast<NET::WindowType>(info.value("type").toInt());
|
const NET::WindowType type = static_cast<NET::WindowType>(info.value("type").toInt());
|
||||||
const QString title = info.value("caption").toString();
|
const QString title = info.value("caption").toString();
|
||||||
const QString machine = info.value("clientMachine").toString();
|
const QString machine = info.value("clientMachine").toString();
|
||||||
|
@ -409,9 +409,9 @@ QModelIndex KCMKWinRules::findRuleWithProperties(const QVariantMap &info, bool w
|
||||||
// Code adapted from original `findRule()` method in `kwin_rules_dialog::main.cpp`
|
// Code adapted from original `findRule()` method in `kwin_rules_dialog::main.cpp`
|
||||||
void KCMKWinRules::fillSettingsFromProperties(RuleSettings *settings, const QVariantMap &info, bool wholeApp) const
|
void KCMKWinRules::fillSettingsFromProperties(RuleSettings *settings, const QVariantMap &info, bool wholeApp) const
|
||||||
{
|
{
|
||||||
const QString wmclass_class = info.value("resourceClass").toString().toLower();
|
const QString wmclass_class = info.value("resourceClass").toString();
|
||||||
const QString wmclass_name = info.value("resourceName").toString().toLower();
|
const QString wmclass_name = info.value("resourceName").toString();
|
||||||
const QString role = info.value("role").toString().toLower();
|
const QString role = info.value("role").toString();
|
||||||
const NET::WindowType type = static_cast<NET::WindowType>(info.value("type").toInt());
|
const NET::WindowType type = static_cast<NET::WindowType>(info.value("type").toInt());
|
||||||
const QString title = info.value("caption").toString();
|
const QString title = info.value("caption").toString();
|
||||||
const QString machine = info.value("clientMachine").toString();
|
const QString machine = info.value("clientMachine").toString();
|
||||||
|
|
|
@ -120,9 +120,9 @@ void Rules::readFromSettings(const RuleSettings *settings)
|
||||||
if (description.isEmpty()) {
|
if (description.isEmpty()) {
|
||||||
description = settings->descriptionLegacy();
|
description = settings->descriptionLegacy();
|
||||||
}
|
}
|
||||||
READ_MATCH_STRING(wmclass, .toLower());
|
READ_MATCH_STRING(wmclass, );
|
||||||
wmclasscomplete = settings->wmclasscomplete();
|
wmclasscomplete = settings->wmclasscomplete();
|
||||||
READ_MATCH_STRING(windowrole, .toLower());
|
READ_MATCH_STRING(windowrole, );
|
||||||
READ_MATCH_STRING(title, );
|
READ_MATCH_STRING(title, );
|
||||||
READ_MATCH_STRING(clientmachine, .toLower());
|
READ_MATCH_STRING(clientmachine, .toLower());
|
||||||
types = NET::WindowTypeMask(settings->types());
|
types = NET::WindowTypeMask(settings->types());
|
||||||
|
@ -345,10 +345,10 @@ bool Rules::matchWMClass(const QString &match_class, const QString &match_name)
|
||||||
if (wmclassmatch == RegExpMatch && !QRegularExpression(wmclass).match(cwmclass).hasMatch()) {
|
if (wmclassmatch == RegExpMatch && !QRegularExpression(wmclass).match(cwmclass).hasMatch()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (wmclassmatch == ExactMatch && wmclass != cwmclass) {
|
if (wmclassmatch == ExactMatch && cwmclass.compare(wmclass, Qt::CaseInsensitive) != 0) { // TODO Plasma 6: Make it case sensitive
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (wmclassmatch == SubstringMatch && !cwmclass.contains(wmclass)) {
|
if (wmclassmatch == SubstringMatch && !cwmclass.contains(wmclass, Qt::CaseInsensitive)) { // TODO Plasma 6: Make it case sensitive
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -361,10 +361,10 @@ bool Rules::matchRole(const QString &match_role) const
|
||||||
if (windowrolematch == RegExpMatch && !QRegularExpression(windowrole).match(match_role).hasMatch()) {
|
if (windowrolematch == RegExpMatch && !QRegularExpression(windowrole).match(match_role).hasMatch()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (windowrolematch == ExactMatch && windowrole != match_role) {
|
if (windowrolematch == ExactMatch && match_role.compare(windowrole, Qt::CaseInsensitive) != 0) { // TODO Plasma 6: Make it case sensitive
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (windowrolematch == SubstringMatch && !match_role.contains(windowrole)) {
|
if (windowrolematch == SubstringMatch && !match_role.contains(windowrole, Qt::CaseInsensitive)) { // TODO Plasma 6: Make it case sensitive
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -420,7 +420,7 @@ bool Rules::match(const Window *c) const
|
||||||
if (!matchWMClass(c->resourceClass(), c->resourceName())) {
|
if (!matchWMClass(c->resourceClass(), c->resourceName())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!matchRole(c->windowRole().toLower())) {
|
if (!matchRole(c->windowRole())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!matchClientMachine(c->clientMachine()->hostName(), c->clientMachine()->isLocal())) {
|
if (!matchClientMachine(c->clientMachine()->hostName(), c->clientMachine()->isLocal())) {
|
||||||
|
|
Loading…
Reference in a new issue