diff options
author | crupest <crupest@outlook.com> | 2022-02-24 16:35:08 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-02-24 16:35:08 +0800 |
commit | e80f44385dee8636b747848ecb6193c41a99d89c (patch) | |
tree | d004d27715d5bbaa3fd087dc8570787eae0549ca /src | |
parent | a7f5275267e1b504b119e2e3b7fcd46a88874821 (diff) | |
download | cru-e80f44385dee8636b747848ecb6193c41a99d89c.tar.gz cru-e80f44385dee8636b747848ecb6193c41a99d89c.tar.bz2 cru-e80f44385dee8636b747848ecb6193c41a99d89c.zip |
...
Diffstat (limited to 'src')
-rw-r--r-- | src/ui/controls/CheckBox.cpp | 6 | ||||
-rw-r--r-- | src/ui/mapper/style/StyleRuleMapper.cpp | 6 | ||||
-rw-r--r-- | src/ui/render/BorderRenderObject.cpp | 2 | ||||
-rw-r--r-- | src/ui/style/StyleRuleSet.cpp | 7 |
4 files changed, 16 insertions, 5 deletions
diff --git a/src/ui/controls/CheckBox.cpp b/src/ui/controls/CheckBox.cpp index cace3dbf..a28c4633 100644 --- a/src/ui/controls/CheckBox.cpp +++ b/src/ui/controls/CheckBox.cpp @@ -1,4 +1,5 @@ #include "cru/ui/controls/CheckBox.h" +#include "cru/ui/ThemeManager.h" #include "cru/ui/helper/ClickDetector.h" #include "cru/ui/render/BorderRenderObject.h" @@ -8,6 +9,11 @@ CheckBox::CheckBox() click_detector_(this) { container_render_object_->SetAttachedControl(this); + container_render_object_->SetBorderEnabled(true); + auto default_checkbox_style = + ThemeManager::GetInstance()->GetResourceStyleRuleSet(u"checkbox.style"); + GetStyleRuleSet()->SetParent(std::move(default_checkbox_style)); + click_detector_.ClickEvent()->AddHandler( [this](const helper::ClickEventArgs&) { Toggle(); }); } diff --git a/src/ui/mapper/style/StyleRuleMapper.cpp b/src/ui/mapper/style/StyleRuleMapper.cpp index 1ca45a6e..2ab13c90 100644 --- a/src/ui/mapper/style/StyleRuleMapper.cpp +++ b/src/ui/mapper/style/StyleRuleMapper.cpp @@ -1,5 +1,7 @@ #include "cru/ui/mapper/style/StyleRuleMapper.h" #include "cru/common/ClonablePtr.h" +#include "cru/common/Exception.h" +#include "cru/common/log/Logger.h" #include "cru/ui/mapper/MapperRegistry.h" #include "cru/ui/mapper/style/IConditionMapper.h" #include "cru/ui/mapper/style/IStylerMapper.h" @@ -45,6 +47,10 @@ ClonablePtr<ui::style::StyleRule> StyleRuleMapper::DoMapFromXml( } } } + + if (!resolved) { + throw Exception(u"Unknown element in StyleRule: " + c->GetTag()); + } } } diff --git a/src/ui/render/BorderRenderObject.cpp b/src/ui/render/BorderRenderObject.cpp index cbea4b81..abba47e9 100644 --- a/src/ui/render/BorderRenderObject.cpp +++ b/src/ui/render/BorderRenderObject.cpp @@ -118,7 +118,7 @@ Size BorderRenderObject::OnMeasureContent(const MeasureRequirement& requirement, child->Measure(requirement, preferred_size); return child->GetDesiredSize(); } else { - return Size{}; + return preferred_size.GetSizeOr0(); } } diff --git a/src/ui/style/StyleRuleSet.cpp b/src/ui/style/StyleRuleSet.cpp index c8d12500..6b475c8c 100644 --- a/src/ui/style/StyleRuleSet.cpp +++ b/src/ui/style/StyleRuleSet.cpp @@ -112,10 +112,9 @@ void StyleRuleSetBind::UpdateStyle() { // reverse. for (auto iter = ruleset_chain_cache_.crbegin(); iter != ruleset_chain_cache_.crend(); ++iter) { - for (const auto& rule : (*iter)->GetRules()) - if (rule.GetCondition()->Judge(control_)) { - rule.GetStyler()->Apply(control_); - } + for (const auto& rule : (*iter)->GetRules()) { + rule.CheckAndApply(control_); + } } } } // namespace cru::ui::style |