Skip to content

Commit 605ade4

Browse files
author
Onimock
committed
Fix: ":" when inside of the attribute
1 parent 6c92445 commit 605ade4

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/qss_parser/qss_parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,6 +1471,7 @@ def handle_rule(self, rule: QSSRule) -> None:
14711471
":" in rule.selector
14721472
and "::" not in rule.selector
14731473
and "," not in rule.selector
1474+
and not re.search(r"\[[^\]]*:[^\]]*\]", rule.selector)
14741475
):
14751476
base_rule = rule.clone_without_pseudo_elements()
14761477
self._merge_or_add_rule(base_rule)

tests/test_qss_parser.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1474,6 +1474,32 @@ def test_to_string_with_qproperty(self) -> None:
14741474
self.errors, [], "Valid qproperty QSS should produce no errors"
14751475
)
14761476

1477+
def test_event_qproperty_defined(self) -> None:
1478+
"""
1479+
Test the rule_added event for rules containing qproperty attributes.
1480+
"""
1481+
rules_added: List[QSSRule] = []
1482+
self.parser.on(ParserEvent.RULE_ADDED, lambda rule: rules_added.append(rule))
1483+
self.parser.parse(self.qss)
1484+
print(rules_added)
1485+
print("Teste", self.parser.to_string())
1486+
self.assertEqual(
1487+
len(rules_added), 3, "Should trigger rule_added for each qproperty rule"
1488+
)
1489+
selectors: set = {rule.selector for rule in rules_added}
1490+
self.assertEqual(
1491+
selectors,
1492+
{
1493+
"QPushButton",
1494+
"#customButton",
1495+
'.iconButton[qproperty-icon="url(:/icons/test.png)"]',
1496+
},
1497+
"Should capture all selectors with qproperty attributes",
1498+
)
1499+
self.assertEqual(
1500+
self.errors, [], "Valid qproperty QSS should produce no errors"
1501+
)
1502+
14771503

14781504
if __name__ == "__main__":
14791505
unittest.main()

0 commit comments

Comments
 (0)