| 610 | } |
| 611 | |
| 612 | static X11::Window FindAppWindow(X11::Display* display, X11::Window w) |
| 613 | { |
| 614 | int nprops, i = 0; |
| 615 | X11::Atom* a; |
| 616 | if (w == 0) |
| 617 | return 0; |
| 618 | a = X11::XListProperties(display, w, &nprops); |
| 619 | for (i = 0; i < nprops; i++) |
| 620 | { |
| 621 | if (a[i] == xAtomXdndAware) |
| 622 | break; |
| 623 | } |
| 624 | if (nprops) |
| 625 | X11::XFree(a); |
| 626 | if (i != nprops) |
| 627 | return w; |
| 628 | X11::Window child, wtmp; |
| 629 | int tmp; |
| 630 | unsigned int utmp; |
| 631 | X11::XQueryPointer(display, w, &wtmp, &child, &tmp, &tmp, &tmp, &tmp, &utmp); |
| 632 | return FindAppWindow(display, child); |
| 633 | } |
| 634 | |
| 635 | static Float2 GetX11MousePosition() |
| 636 | { |