Subject: bug#22549: 25.0.50; Tooltips placed outside of screen limits

From: martin rudalics <[email-masked]>
Date: Sat, 06 Feb 2016 10:30:43 +0100

> We can use the coordinates to determine the monitor. The patch below
 > works.

Good idea.  But do that only if ‘x-display-monitor-attributes-list’
returns more than one monitor so we do not needlessly loop in (and
possibly compromise) the one monitor case.  Or (tediously) assign

+              min_x = XINT (Fnth (make_number (1), geometry));
+              min_y = XINT (Fnth (make_number (2), geometry));
+              max_x = min_x + XINT (Fnth (make_number (3), geometry));
+              max_y = min_y + XINT (Fnth (make_number (4), geometry));

only if the subsequent test

+              if (min_x <= *root_x && *root_x < max_x
+                  && min_y <= *root_y && *root_y < max_y)

would succeed.

There's no guarantee that ‘x-display-monitor-attributes-list’ works on
all systems, especially on those where neither Xinerama nor XRandr are
installed.  IIRC older versions of the latter might also have problems
when a monitor is added/removed during a session.  The fallback should
always give the same results as the present code, but who knows ...

And just to make sure: Can we rely on the fact that XQueryPointer always
gives reliable results with multiple monitors and its present arguments?

martin