src/solaris/classes/sun/awt/X11/XlibUtil.java

Print this page




  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      */