1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/aura/client/visibility_client.h" 6 7#include "ui/aura/window_event_dispatcher.h" 8#include "ui/aura/window_property.h" 9 10DECLARE_WINDOW_PROPERTY_TYPE(aura::client::VisibilityClient*) 11 12namespace aura { 13namespace client { 14 15// A property key to store a client that handles window visibility changes. 16DEFINE_LOCAL_WINDOW_PROPERTY_KEY( 17 VisibilityClient*, kWindowVisibilityClientKey, NULL); 18 19 20void SetVisibilityClient(Window* window, VisibilityClient* client) { 21 window->SetProperty(kWindowVisibilityClientKey, client); 22} 23 24VisibilityClient* GetVisibilityClient(Window* window) { 25 VisibilityClient* visibility_client = NULL; 26 aura::Window* current = window; 27 do { 28 visibility_client = current->GetProperty(kWindowVisibilityClientKey); 29 current = current->parent(); 30 } while (current && !visibility_client); 31 return visibility_client; 32} 33 34} // namespace client 35} // namespace aura 36