• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 #ifndef UI_VIEWS_WIDGET_NATIVE_WIDGET_H_
6 #define UI_VIEWS_WIDGET_NATIVE_WIDGET_H_
7 
8 #include "ui/views/widget/widget.h"
9 
10 namespace ui {
11 class EventHandler;
12 }
13 
14 namespace views {
15 namespace internal {
16 class NativeWidgetPrivate;
17 }
18 
19 ////////////////////////////////////////////////////////////////////////////////
20 // NativeWidget interface
21 //
22 //  An interface that serves as the public API base for the
23 //  internal::NativeWidget interface that Widget uses to communicate with a
24 //  backend-specific native widget implementation. This is the only component of
25 //  this interface that is publicly visible, and exists solely for exposure via
26 //  Widget's native_widget() accessor, which code occasionally static_casts to
27 //  a known implementation in platform-specific code.
28 //
29 class VIEWS_EXPORT NativeWidget {
30  public:
~NativeWidget()31   virtual ~NativeWidget() {}
32 
33   // Retrieves the event handler
34   virtual ui::EventHandler* GetEventHandler() = 0;
35 
36  private:
37   friend class Widget;
38 
39   virtual internal::NativeWidgetPrivate* AsNativeWidgetPrivate() = 0;
40 };
41 
42 }  // namespace views
43 
44 #endif  // UI_VIEWS_WIDGET_NATIVE_WIDGET_H_
45