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 10 DECLARE_WINDOW_PROPERTY_TYPE(aura::client::VisibilityClient*) 11 12 namespace aura { 13 namespace client { 14 15 // A property key to store a client that handles window visibility changes. 16 DEFINE_LOCAL_WINDOW_PROPERTY_KEY( 17 VisibilityClient*, kWindowVisibilityClientKey, NULL); 18 19 SetVisibilityClient(Window * window,VisibilityClient * client)20void SetVisibilityClient(Window* window, VisibilityClient* client) { 21 window->SetProperty(kWindowVisibilityClientKey, client); 22 } 23 GetVisibilityClient(Window * window)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