OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef UI_BASE_X_X11_UTIL_H_ | 5 #ifndef UI_BASE_X_X11_UTIL_H_ |
6 #define UI_BASE_X_X11_UTIL_H_ | 6 #define UI_BASE_X_X11_UTIL_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 // This file declares utility functions for X11 (Linux only). | 9 // This file declares utility functions for X11 (Linux only). |
10 // | 10 // |
11 // These functions do not require the Xlib headers to be included (which is why | 11 // These functions do not require the Xlib headers to be included (which is why |
12 // we use a void* for Visual*). The Xlib headers are highly polluting so we try | 12 // we use a void* for Visual*). The Xlib headers are highly polluting so we try |
13 // hard to limit their spread into the rest of the code. | 13 // hard to limit their spread into the rest of the code. |
14 | 14 |
15 #include <string> | 15 #include <string> |
16 #include <vector> | 16 #include <vector> |
17 | 17 |
18 #include "base/basictypes.h" | 18 #include "base/basictypes.h" |
19 | 19 |
| 20 typedef unsigned long Atom; |
20 typedef struct _GdkDrawable GdkWindow; | 21 typedef struct _GdkDrawable GdkWindow; |
21 typedef struct _GtkWidget GtkWidget; | 22 typedef struct _GtkWidget GtkWidget; |
22 typedef struct _GtkWindow GtkWindow; | 23 typedef struct _GtkWindow GtkWindow; |
23 typedef unsigned long XID; | 24 typedef unsigned long XID; |
24 typedef unsigned long XSharedMemoryId; // ShmSeg in the X headers. | 25 typedef unsigned long XSharedMemoryId; // ShmSeg in the X headers. |
25 typedef struct _XDisplay Display; | 26 typedef struct _XDisplay Display; |
26 | 27 |
27 namespace gfx { | 28 namespace gfx { |
28 class Rect; | 29 class Rect; |
29 } | 30 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 XID GetX11WindowFromGdkWindow(GdkWindow* window); | 70 XID GetX11WindowFromGdkWindow(GdkWindow* window); |
70 // Get a Visual from the given widget. Since we don't include the Xlib | 71 // Get a Visual from the given widget. Since we don't include the Xlib |
71 // headers, this is returned as a void*. | 72 // headers, this is returned as a void*. |
72 void* GetVisualFromGtkWidget(GtkWidget* widget); | 73 void* GetVisualFromGtkWidget(GtkWidget* widget); |
73 // Return the number of bits-per-pixel for a pixmap of the given depth | 74 // Return the number of bits-per-pixel for a pixmap of the given depth |
74 int BitsPerPixelForPixmapDepth(Display* display, int depth); | 75 int BitsPerPixelForPixmapDepth(Display* display, int depth); |
75 // Returns true if |window| is visible. | 76 // Returns true if |window| is visible. |
76 bool IsWindowVisible(XID window); | 77 bool IsWindowVisible(XID window); |
77 // Returns the bounds of |window|. | 78 // Returns the bounds of |window|. |
78 bool GetWindowRect(XID window, gfx::Rect* rect); | 79 bool GetWindowRect(XID window, gfx::Rect* rect); |
79 // Get the value of an int, int array, or string property. On | 80 // Return true if |window| has any property with |property_name|. |
| 81 bool PropertyExists(XID window, const std::string& property_name); |
| 82 // Get the value of an int, int array, atom array or string property. On |
80 // success, true is returned and the value is stored in |value|. | 83 // success, true is returned and the value is stored in |value|. |
81 bool GetIntProperty(XID window, const std::string& property_name, int* value); | 84 bool GetIntProperty(XID window, const std::string& property_name, int* value); |
82 bool GetIntArrayProperty(XID window, const std::string& property_name, | 85 bool GetIntArrayProperty(XID window, const std::string& property_name, |
83 std::vector<int>* value); | 86 std::vector<int>* value); |
| 87 bool GetAtomArrayProperty(XID window, const std::string& property_name, |
| 88 std::vector<Atom>* value); |
84 bool GetStringProperty( | 89 bool GetStringProperty( |
85 XID window, const std::string& property_name, std::string* value); | 90 XID window, const std::string& property_name, std::string* value); |
86 | 91 |
87 // Get |window|'s parent window, or None if |window| is the root window. | 92 // Get |window|'s parent window, or None if |window| is the root window. |
88 XID GetParentWindow(XID window); | 93 XID GetParentWindow(XID window); |
89 | 94 |
90 // Walk up |window|'s hierarchy until we find a direct child of |root|. | 95 // Walk up |window|'s hierarchy until we find a direct child of |root|. |
91 XID GetHighestAncestorWindow(XID window, XID root); | 96 XID GetHighestAncestorWindow(XID window, XID root); |
92 | 97 |
93 static const int kAllDesktops = -1; | 98 static const int kAllDesktops = -1; |
(...skipping 10 matching lines...) Expand all Loading... |
104 virtual bool ShouldStopIterating(XID xid) = 0; | 109 virtual bool ShouldStopIterating(XID xid) = 0; |
105 | 110 |
106 protected: | 111 protected: |
107 virtual ~EnumerateWindowsDelegate() {} | 112 virtual ~EnumerateWindowsDelegate() {} |
108 }; | 113 }; |
109 | 114 |
110 // Enumerates all windows in the current display. Will recurse into child | 115 // Enumerates all windows in the current display. Will recurse into child |
111 // windows up to a depth of |max_depth|. | 116 // windows up to a depth of |max_depth|. |
112 bool EnumerateAllWindows(EnumerateWindowsDelegate* delegate, int max_depth); | 117 bool EnumerateAllWindows(EnumerateWindowsDelegate* delegate, int max_depth); |
113 | 118 |
114 // Returns a list of top-level windows in top-to-bottom stacking order. | 119 // Returns all children windows of a given window in top-to-bottom stacking |
115 bool GetXWindowStack(std::vector<XID>* windows); | 120 // order. |
| 121 bool GetXWindowStack(XID window, std::vector<XID>* windows); |
116 | 122 |
117 // Restack a window in relation to one of its siblings. If |above| is true, | 123 // Restack a window in relation to one of its siblings. If |above| is true, |
118 // |window| will be stacked directly above |sibling|; otherwise it will stacked | 124 // |window| will be stacked directly above |sibling|; otherwise it will stacked |
119 // directly below it. Both windows must be immediate children of the same | 125 // directly below it. Both windows must be immediate children of the same |
120 // window. | 126 // window. |
121 void RestackWindow(XID window, XID sibling, bool above); | 127 void RestackWindow(XID window, XID sibling, bool above); |
122 | 128 |
123 // Return a handle to a X ShmSeg. |shared_memory_key| is a SysV | 129 // Return a handle to a X ShmSeg. |shared_memory_key| is a SysV |
124 // IPC key. The shared memory region must contain 32-bit pixels. | 130 // IPC key. The shared memory region must contain 32-bit pixels. |
125 XSharedMemoryId AttachSharedMemory(Display* display, int shared_memory_support); | 131 XSharedMemoryId AttachSharedMemory(Display* display, int shared_memory_support); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 std::vector<unsigned char>* png_representation); | 177 std::vector<unsigned char>* png_representation); |
172 | 178 |
173 // Change desktop for |window| to the desktop of |destination| window. | 179 // Change desktop for |window| to the desktop of |destination| window. |
174 bool ChangeWindowDesktop(XID window, XID destination); | 180 bool ChangeWindowDesktop(XID window, XID destination); |
175 | 181 |
176 // Enable the default X error handlers. These will log the error and abort | 182 // Enable the default X error handlers. These will log the error and abort |
177 // the process if called. Use SetX11ErrorHandlers() from x11_util_internal.h | 183 // the process if called. Use SetX11ErrorHandlers() from x11_util_internal.h |
178 // to set your own error handlers. | 184 // to set your own error handlers. |
179 void SetDefaultX11ErrorHandlers(); | 185 void SetDefaultX11ErrorHandlers(); |
180 | 186 |
| 187 // Return true if a given window is in full-screen mode. |
| 188 bool IsX11WindowFullScreen(XID window); |
| 189 |
181 } // namespace ui | 190 } // namespace ui |
182 | 191 |
183 #endif // UI_BASE_X_X11_UTIL_H_ | 192 #endif // UI_BASE_X_X11_UTIL_H_ |
OLD | NEW |