// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/aura/client/visibility_client.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_property.h" DECLARE_WINDOW_PROPERTY_TYPE(aura::client::VisibilityClient*) namespace aura { namespace client { // A property key to store a client that handles window visibility changes. DEFINE_LOCAL_WINDOW_PROPERTY_KEY( VisibilityClient*, kWindowVisibilityClientKey, NULL); void SetVisibilityClient(Window* window, VisibilityClient* client) { window->SetProperty(kWindowVisibilityClientKey, client); } VisibilityClient* GetVisibilityClient(Window* window) { VisibilityClient* visibility_client = NULL; aura::Window* current = window; do { visibility_client = current->GetProperty(kWindowVisibilityClientKey); current = current->parent(); } while (current && !visibility_client); return visibility_client; } } // namespace client } // namespace aura