mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-10-30 03:41:16 +00:00
config: allow negative to be used with tags. (#11779)
This commit is contained in:
parent
4f3dd1ddb4
commit
ae445606e2
48
hyprtester/src/tests/main/tags.cpp
Normal file
48
hyprtester/src/tests/main/tags.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
#include "../../shared.hpp"
|
||||
#include "../../hyprctlCompat.hpp"
|
||||
#include "../shared.hpp"
|
||||
#include "tests.hpp"
|
||||
|
||||
static int ret = 0;
|
||||
|
||||
static bool testTags() {
|
||||
NLog::log("{}Testing tags", Colors::GREEN);
|
||||
|
||||
EXPECT(Tests::windowCount(), 0);
|
||||
|
||||
NLog::log("{}Spawning kittyProcA&B on ws 1", Colors::YELLOW);
|
||||
auto kittyProcA = Tests::spawnKitty("tagged");
|
||||
auto kittyProcB = Tests::spawnKitty("untagged");
|
||||
|
||||
if (!kittyProcA || !kittyProcB) {
|
||||
NLog::log("{}Error: kitty did not spawn", Colors::RED);
|
||||
return false;
|
||||
}
|
||||
|
||||
NLog::log("{}Testing testTag tags", Colors::YELLOW);
|
||||
|
||||
OK(getFromSocket("/keyword windowrule tag +testTag, class:tagged"));
|
||||
OK(getFromSocket("/keyword windowrule noshadow, tag:negative:testTag"));
|
||||
OK(getFromSocket("/keyword windowrule noborder, tag:testTag"));
|
||||
|
||||
EXPECT(Tests::windowCount(), 2);
|
||||
OK(getFromSocket("/dispatch focuswindow class:tagged"));
|
||||
NLog::log("{}Testing tagged window for noborder & noshadow", Colors::YELLOW);
|
||||
EXPECT_CONTAINS(getFromSocket("/activewindow"), "testTag");
|
||||
EXPECT_CONTAINS(getFromSocket("/getprop activewindow noborder"), "true");
|
||||
EXPECT_CONTAINS(getFromSocket("/getprop activewindow noshadow"), "false");
|
||||
NLog::log("{}Testing untagged window for noborder & noshadow", Colors::YELLOW);
|
||||
OK(getFromSocket("/dispatch focuswindow class:untagged"));
|
||||
EXPECT_NOT_CONTAINS(getFromSocket("/activewindow"), "testTag");
|
||||
EXPECT_CONTAINS(getFromSocket("/getprop activewindow noborder"), "false");
|
||||
EXPECT_CONTAINS(getFromSocket("/getprop activewindow noshadow"), "true");
|
||||
|
||||
Tests::killAllWindows();
|
||||
EXPECT(Tests::windowCount(), 0);
|
||||
|
||||
OK(getFromSocket("/reload"));
|
||||
|
||||
return ret == 0;
|
||||
}
|
||||
|
||||
REGISTER_TEST_FN(testTags)
|
||||
@ -1,7 +1,10 @@
|
||||
#include "TagKeeper.hpp"
|
||||
|
||||
bool CTagKeeper::isTagged(const std::string& tag, bool strict) {
|
||||
return m_tags.contains(tag) || (!strict && m_tags.contains(tag + "*"));
|
||||
const bool NEGATIVE = tag.starts_with("negative");
|
||||
const auto MATCH = NEGATIVE ? tag.substr(9) : tag;
|
||||
const bool TAGGED = m_tags.contains(MATCH) || (!strict && m_tags.contains(MATCH + "*"));
|
||||
return NEGATIVE ? !TAGGED : TAGGED;
|
||||
}
|
||||
|
||||
bool CTagKeeper::applyTag(const std::string& tag, bool dynamic) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user