Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Side by Side Diff: base/gfx/native_widget_types.h

Issue 273017: Move native_widget_types and gtk_native_view_id_manager from base/gfx to... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/gfx/gtk_native_view_id_manager.cc ('k') | base/gfx/native_widget_types_gtk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2008 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 BASE_GFX_NATIVE_WIDGET_TYPES_H_
6 #define BASE_GFX_NATIVE_WIDGET_TYPES_H_
7
8 #include "base/basictypes.h"
9 #include "build/build_config.h"
10
11 // This file provides cross platform typedefs for native widget types.
12 // NativeWindow: this is a handle to a native, top-level window
13 // NativeView: this is a handle to a native UI element. It may be the
14 // same type as a NativeWindow on some platforms.
15 // NativeViewId: Often, in our cross process model, we need to pass around a
16 // reference to a "window". This reference will, say, be echoed back from a
17 // renderer to the browser when it wishes to query it's size. On Windows, a
18 // HWND can be used for this. On other platforms, we may wish to pass
19 // around X window ids, or maybe abstract identifiers.
20 //
21 // As a rule of thumb - if you're in the renderer, you should be dealing
22 // with NativeViewIds. This should remind you that you shouldn't be doing
23 // direct operations on platform widgets from the renderer process.
24 //
25 // If you're in the browser, you're probably dealing with NativeViews,
26 // unless you're in the IPC layer, which will be translating between
27 // NativeViewIds from the renderer and NativeViews.
28 //
29 // NativeEditView: a handle to a native edit-box. The Mac folks wanted this
30 // specific typedef.
31 //
32 // The name 'View' here meshes with OS X where the UI elements are called
33 // 'views' and with our Chrome UI code where the elements are also called
34 // 'views'.
35
36 #if defined(OS_WIN)
37 #include <windows.h>
38 #elif defined(OS_MACOSX)
39 struct CGContext;
40 #ifdef __OBJC__
41 @class NSView;
42 @class NSWindow;
43 @class NSTextField;
44 #else
45 class NSView;
46 class NSWindow;
47 class NSTextField;
48 #endif // __OBJC__
49 #elif defined(USE_X11)
50 typedef struct _GdkCursor GdkCursor;
51 typedef struct _GtkWidget GtkWidget;
52 typedef struct _GtkWindow GtkWindow;
53 typedef struct _cairo cairo_t;
54 #endif
55
56 namespace gfx {
57
58 #if defined(OS_WIN)
59 typedef HWND NativeView;
60 typedef HWND NativeWindow;
61 typedef HWND NativeEditView;
62 typedef HDC NativeDrawingContext;
63 typedef HCURSOR NativeCursor;
64 typedef HMENU NativeMenu;
65 #elif defined(OS_MACOSX)
66 typedef NSView* NativeView;
67 typedef NSWindow* NativeWindow;
68 typedef NSTextField* NativeEditView;
69 typedef CGContext* NativeDrawingContext;
70 typedef void* NativeCursor;
71 typedef void* NativeMenu;
72 #elif defined(USE_X11)
73 typedef GtkWidget* NativeView;
74 typedef GtkWindow* NativeWindow;
75 typedef GtkWidget* NativeEditView;
76 typedef cairo_t* NativeDrawingContext;
77 typedef GdkCursor* NativeCursor;
78 typedef GtkWidget* NativeMenu;
79 #endif
80
81 // Note: for test_shell we're packing a pointer into the NativeViewId. So, if
82 // you make it a type which is smaller than a pointer, you have to fix
83 // test_shell.
84 //
85 // See comment at the top of the file for usage.
86 typedef intptr_t NativeViewId;
87
88 // Convert a NativeViewId to a NativeView.
89 // On Windows, these are both HWNDS so it's just a cast.
90 // On Mac, for now, we pass the NSView pointer into the renderer
91 // On Linux we use an opaque id
92 #if defined(OS_WIN)
93 static inline NativeView NativeViewFromId(NativeViewId id) {
94 return reinterpret_cast<NativeView>(id);
95 }
96 #elif defined(OS_MACOSX)
97
98 // A recent CL removed the need for Mac to actually convert
99 // NativeViewId to NativeView. Until other platforms make changes,
100 // the platform-independent code cannot be removed. The following is
101 // to discourage new platform-independent uses.
102
103 #define NativeViewFromId(x) NATIVE_VIEW_FROM_ID_NOT_AVAILABLE_ON_MAC
104
105 #elif defined(USE_X11)
106 // A NativeView on Linux is a GtkWidget*. However, we can't go directly from an
107 // X window ID to a GtkWidget. Thus, functions which handle NativeViewIds from
108 // the renderer have to use Xlib. This is fine since these functions are
109 // generally performed on the BACKGROUND_X thread which can't use GTK anyway.
110
111 #define NativeViewFromId(x) NATIVE_VIEW_FROM_ID_NOT_AVAILIBLE_ON_X11
112
113 #endif // defined(USE_X11)
114
115 // Convert a NativeView to a NativeViewId. See the comments above
116 // NativeViewFromId.
117 #if defined(OS_WIN) || defined(OS_MACOSX)
118 static inline NativeViewId IdFromNativeView(NativeView view) {
119 return reinterpret_cast<NativeViewId>(view);
120 }
121 #elif defined(USE_X11)
122 // Not inlined because it involves pulling too many headers.
123 NativeViewId IdFromNativeView(NativeView view);
124 #endif // defined(USE_X11)
125
126
127 // PluginWindowHandle is an abstraction wrapping "the types of windows
128 // used by NPAPI plugins". On Windows it's an HWND, on X it's an X
129 // window id.
130 #if defined(OS_WIN)
131 typedef HWND PluginWindowHandle;
132 #elif defined(USE_X11)
133 typedef unsigned long PluginWindowHandle;
134 #else
135 // On OS X we don't have windowed plugins.
136 // We use a NULL/0 PluginWindowHandle in shared code to indicate there
137 // is no window present, so mirror that behavior here.
138 typedef bool PluginWindowHandle;
139 #endif
140
141 } // namespace gfx
142
143 #endif // BASE_GFX_NATIVE_WIDGET_TYPES_H_
OLDNEW
« no previous file with comments | « base/gfx/gtk_native_view_id_manager.cc ('k') | base/gfx/native_widget_types_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698