Quellcode durchsuchen

Detect leaving window on zaphod systems

The coordinates we get are relative the root window of each screen, so
we can only trust them if we are on the same screen. So let's explicitly
check that we are still getting events from the expected screen by
checking the root window field of the event.
pull/1611/head
Pierre Ossman vor 1 Jahr
Ursprung
Commit
7a2af97447
1 geänderte Dateien mit 9 neuen und 1 gelöschten Zeilen
  1. 9
    1
      vncviewer/DesktopWindow.cxx

+ 9
- 1
vncviewer/DesktopWindow.cxx Datei anzeigen

@@ -844,12 +844,20 @@ int DesktopWindow::handle(int event)
case FL_LEAVE:
case FL_DRAG:
case FL_MOVE:
// We don't get FL_LEAVE with a grabbed pointer, so check manually
if (mouseGrabbed) {
// We don't get FL_LEAVE with a grabbed pointer, so check manually
if ((Fl::event_x() < 0) || (Fl::event_x() >= w()) ||
(Fl::event_y() < 0) || (Fl::event_y() >= h())) {
ungrabPointer();
}
// We also don't get sensible coordinates on zaphod setups
#if !defined(WIN32) && !defined(__APPLE__)
if ((fl_xevent != NULL) && (fl_xevent->type == MotionNotify) &&
(((XMotionEvent*)fl_xevent)->root !=
XRootWindow(fl_display, fl_screen))) {
ungrabPointer();
}
#endif
}
if (fullscreen_active()) {
// calculate width of "edge" regions

Laden…
Abbrechen
Speichern