83 */
84 static boolean isRoot(long rootCandidate, long screenNumber)
85 {
86 long root;
87
88 XToolkit.awtLock();
89 try
90 {
91 root = XlibWrapper.RootWindow(XToolkit.getDisplay(),
92 screenNumber);
93 }
94 finally
95 {
96 XToolkit.awtUnlock();
97 }
98
99 return root == rootCandidate;
100 }
101
102 /**
103 * Returns the bounds of the given window, in absolute coordinates
104 */
105 static Rectangle getWindowGeometry(long window)
106 {
107 XToolkit.awtLock();
108 try
109 {
110 int res = XlibWrapper.XGetGeometry(XToolkit.getDisplay(),
111 window,
112 XlibWrapper.larg1, // root_return
113 XlibWrapper.larg2, // x_return
114 XlibWrapper.larg3, // y_return
115 XlibWrapper.larg4, // width_return
116 XlibWrapper.larg5, // height_return
117 XlibWrapper.larg6, // border_width_return
118 XlibWrapper.larg7); // depth_return
119 if (res == 0)
120 {
121 return null;
122 }
123
124 int x = Native.getInt(XlibWrapper.larg2);
125 int y = Native.getInt(XlibWrapper.larg3);
126 long width = Native.getUInt(XlibWrapper.larg4);
127 long height = Native.getUInt(XlibWrapper.larg5);
128
129 return new Rectangle(x, y, (int)width, (int)height);
130 }
131 finally
132 {
193 static long getParentWindow(long window)
194 {
195 XToolkit.awtLock();
196 try
197 {
198 XBaseWindow bw = XToolkit.windowToXWindow(window);
199 if (bw != null)
200 {
201 XBaseWindow pbw = bw.getParentWindow();
202 if (pbw != null)
203 {
204 return pbw.getWindow();
205 }
206 }
207
208 XQueryTree qt = new XQueryTree(window);
209 try
210 {
211 if (qt.execute() == 0)
212 {
213 return 0;
214 }
215 else
216 {
217 return qt.get_parent();
218 }
219 }
220 finally
221 {
222 qt.dispose();
223 }
224 }
225 finally
226 {
227 XToolkit.awtUnlock();
228 }
229 }
230
231 /**
232 * Returns all the children for the given window
233 */
|
83 */
84 static boolean isRoot(long rootCandidate, long screenNumber)
85 {
86 long root;
87
88 XToolkit.awtLock();
89 try
90 {
91 root = XlibWrapper.RootWindow(XToolkit.getDisplay(),
92 screenNumber);
93 }
94 finally
95 {
96 XToolkit.awtUnlock();
97 }
98
99 return root == rootCandidate;
100 }
101
102 /**
103 * Returns the bounds of the given window relative to its parent.
104 */
105 public static Rectangle getWindowGeometry(long window) {
106 XToolkit.awtLock();
107 try {
108 return getWindowGeometry(window, XlibWrapper.larg1);
109 } finally {
110 XToolkit.awtUnlock();
111 }
112 }
113
114 /**
115 * Returns the bounds of the given window relative to its parent.
116 * The unsafe memory pointed to by the rootWindowBuffer will
117 * contain the root window of the given window.
118 * WARNING: DO NOT USE XlibWrapper.larg[2..7] as the rootWindowBuffer!
119 * Only larg1 or larg8 can be used, or some other allocated memory block.
120 *
121 * @throws IllegalArgumentException if the rootWindowBuffer refers to
122 * unsupported values.
123 */
124 public static Rectangle getWindowGeometry(long window, long rootWindowBuffer)
125 {
126 if (rootWindowBuffer == XlibWrapper.larg2 ||
127 rootWindowBuffer == XlibWrapper.larg3 ||
128 rootWindowBuffer == XlibWrapper.larg4 ||
129 rootWindowBuffer == XlibWrapper.larg5 ||
130 rootWindowBuffer == XlibWrapper.larg6 ||
131 rootWindowBuffer == XlibWrapper.larg7)
132 {
133 throw new IllegalArgumentException(
134 "The rootWindowBuffer should not refer to XlibWrapper.larg[2..7]");
135 }
136 XToolkit.awtLock();
137 try
138 {
139 int res = XlibWrapper.XGetGeometry(XToolkit.getDisplay(),
140 window,
141 rootWindowBuffer, // root_return
142 XlibWrapper.larg2, // x_return
143 XlibWrapper.larg3, // y_return
144 XlibWrapper.larg4, // width_return
145 XlibWrapper.larg5, // height_return
146 XlibWrapper.larg6, // border_width_return
147 XlibWrapper.larg7); // depth_return
148 if (res == 0)
149 {
150 return null;
151 }
152
153 int x = Native.getInt(XlibWrapper.larg2);
154 int y = Native.getInt(XlibWrapper.larg3);
155 long width = Native.getUInt(XlibWrapper.larg4);
156 long height = Native.getUInt(XlibWrapper.larg5);
157
158 return new Rectangle(x, y, (int)width, (int)height);
159 }
160 finally
161 {
222 static long getParentWindow(long window)
223 {
224 XToolkit.awtLock();
225 try
226 {
227 XBaseWindow bw = XToolkit.windowToXWindow(window);
228 if (bw != null)
229 {
230 XBaseWindow pbw = bw.getParentWindow();
231 if (pbw != null)
232 {
233 return pbw.getWindow();
234 }
235 }
236
237 XQueryTree qt = new XQueryTree(window);
238 try
239 {
240 if (qt.execute() == 0)
241 {
242 return XConstants.None;
243 }
244 else
245 {
246 return qt.get_parent();
247 }
248 }
249 finally
250 {
251 qt.dispose();
252 }
253 }
254 finally
255 {
256 XToolkit.awtUnlock();
257 }
258 }
259
260 /**
261 * Returns all the children for the given window
262 */
|