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.
5 #include "ui/aura/client/visibility_client.h"
7 #include "ui/aura/window_event_dispatcher.h"
8 #include "ui/aura/window_property.h"
10 DECLARE_WINDOW_PROPERTY_TYPE(aura::client::VisibilityClient
*)
15 // A property key to store a client that handles window visibility changes.
16 DEFINE_LOCAL_WINDOW_PROPERTY_KEY(
17 VisibilityClient
*, kWindowVisibilityClientKey
, NULL
);
20 void SetVisibilityClient(Window
* window
, VisibilityClient
* client
) {
21 window
->SetProperty(kWindowVisibilityClientKey
, client
);
24 VisibilityClient
* GetVisibilityClient(Window
* window
) {
25 VisibilityClient
* visibility_client
= NULL
;
26 aura::Window
* current
= window
;
28 visibility_client
= current
->GetProperty(kWindowVisibilityClientKey
);
29 current
= current
->parent();
30 } while (current
&& !visibility_client
);
31 return visibility_client
;