| Index: ui/aura/window.cc
|
| diff --git a/ui/aura/window.cc b/ui/aura/window.cc
|
| index db48036f84dc875517ff0b947db2daa4eb65fb7f..dc384b7b9fbbedafb86e2fd654d092afa063e9e3 100644
|
| --- a/ui/aura/window.cc
|
| +++ b/ui/aura/window.cc
|
| @@ -124,13 +124,7 @@ Window::~Window() {
|
| layout_manager_.reset();
|
|
|
| // Clear properties.
|
| - for (std::map<const void*, Value>::const_iterator iter = prop_map_.begin();
|
| - iter != prop_map_.end();
|
| - ++iter) {
|
| - if (iter->second.deallocator)
|
| - (*iter->second.deallocator)(iter->second.value);
|
| - }
|
| - prop_map_.clear();
|
| + ClearProperties();
|
|
|
| // The layer will either be destroyed by |layer_owner_|'s dtor, or by whoever
|
| // acquired it.
|
| @@ -599,12 +593,13 @@ void Window::SuppressPaint() {
|
| layer()->SuppressPaint();
|
| }
|
|
|
| +/*
|
| std::set<const void*> Window::GetAllPropertKeys() const {
|
| std::set<const void*> keys;
|
| for (auto& pair : prop_map_)
|
| keys.insert(pair.first);
|
| return keys;
|
| -}
|
| +}*/
|
|
|
| // {Set,Get,Clear}Property are implemented in window_property.h.
|
|
|
| @@ -661,40 +656,35 @@ void Window::RemoveOrDestroyChildren() {
|
| }
|
| }
|
|
|
| +std::unique_ptr<ui::PropertyData> Window::BeforePropertyChange(
|
| + const void* key) {
|
| + return port_ ? port_->OnWillChangeProperty(key) : nullptr;
|
| +}
|
| +
|
| +void Window::AfterPropertyChange(const void* key,
|
| + int64_t old_value,
|
| + std::unique_ptr<ui::PropertyData> data) {
|
| + if (port_)
|
| + port_->OnPropertyChanged(key, std::move(data));
|
| + for (WindowObserver& observer : observers_)
|
| + observer.OnWindowPropertyChanged(this, key, old_value);
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // Window, private:
|
|
|
| int64_t Window::SetPropertyInternal(const void* key,
|
| const char* name,
|
| - PropertyDeallocator deallocator,
|
| + ui::PropertyDeallocator deallocator,
|
| int64_t value,
|
| int64_t default_value) {
|
| - // This code may be called before |port_| has been created.
|
| - std::unique_ptr<WindowPortPropertyData> data =
|
| - port_ ? port_->OnWillChangeProperty(key) : nullptr;
|
| - int64_t old = GetPropertyInternal(key, default_value);
|
| - if (value == default_value) {
|
| - prop_map_.erase(key);
|
| - } else {
|
| - Value prop_value;
|
| - prop_value.name = name;
|
| - prop_value.value = value;
|
| - prop_value.deallocator = deallocator;
|
| - prop_map_[key] = prop_value;
|
| - }
|
| - if (port_)
|
| - port_->OnPropertyChanged(key, std::move(data));
|
| - for (WindowObserver& observer : observers_)
|
| - observer.OnWindowPropertyChanged(this, key, old);
|
| - return old;
|
| + return PropertyHandler::SetPropertyInternal(key, name, deallocator, value,
|
| + default_value);
|
| }
|
|
|
| int64_t Window::GetPropertyInternal(const void* key,
|
| int64_t default_value) const {
|
| - std::map<const void*, Value>::const_iterator iter = prop_map_.find(key);
|
| - if (iter == prop_map_.end())
|
| - return default_value;
|
| - return iter->second.value;
|
| + return PropertyHandler::GetPropertyInternal(key, default_value);
|
| }
|
|
|
| bool Window::HitTest(const gfx::Point& local_point) {
|
|
|