• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)20 void SetVisibilityClient(Window* window, VisibilityClient* client) {
21   window->SetProperty(kWindowVisibilityClientKey, client);
22 }
23 
GetVisibilityClient(Window * window)24 VisibilityClient* 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