Quellcode durchsuchen

XFCE's window manager did not interact well with the code that avoided

accidental legacy full screen requests. Seems we need to sort that
FIXME out sooner rather than later.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@5002 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v1.2.90
Pierre Ossman vor 11 Jahren
Ursprung
Commit
9e0e754307
1 geänderte Dateien mit 25 neuen und 16 gelöschten Zeilen
  1. 25
    16
      vncviewer/DesktopWindow.cxx

+ 25
- 16
vncviewer/DesktopWindow.cxx Datei anzeigen

@@ -281,26 +281,35 @@ void DesktopWindow::resize(int x, int y, int w, int h)
#if ! (defined(WIN32) || defined(__APPLE__))
// X11 window managers will treat a resize to cover the entire
// monitor as a request to go full screen. Make sure we avoid this.
//
// FIXME: If this is an external event then this code will get
// FLTK into a confused state about the window's position/size.
// Unfortunately FLTK doesn't offer an easy way to tell
// what kind of resize it is. Let's hope this corner case
// isn't too common...
#ifdef HAVE_FLTK_FULLSCREEN
if (!fullscreen_active())
#endif
{
for (int i = 0;i < Fl::screen_count();i++) {
int sx, sy, sw, sh;

Fl::screen_xywh(sx, sy, sw, sh, i);

if ((sx == x) && (sy == y) && (sw == w) && (sh == h)) {
vlog.info("Adjusting window size to avoid accidental full screen request");
// Assume a panel of some form and adjust the height
y += 20;
h -= 40;
// Get the real window coordinates, so we can determine if
// this is a request to resize, or a notification of a resize
// from the X server.
XWindowAttributes actual;
Window cr;
int wx, wy;

XGetWindowAttributes(fl_display, fl_xid(this), &actual);
XTranslateCoordinates(fl_display, fl_xid(this), actual.root,
0, 0, &wx, &wy, &cr);

// Actual resize request?
if ((wx != x) || (wy != y) ||
(actual.width != w) || (actual.height != h)) {
for (int i = 0;i < Fl::screen_count();i++) {
int sx, sy, sw, sh;

Fl::screen_xywh(sx, sy, sw, sh, i);

if ((sx == x) && (sy == y) && (sw == w) && (sh == h)) {
vlog.info("Adjusting window size to avoid accidental full screen request");
// Assume a panel of some form and adjust the height
y += 20;
h -= 40;
}
}
}
}

Laden…
Abbrechen
Speichern