GNOME Bugzilla – Bug 349613
Keep windows and cursor within the screens on multi-display systems.
Last modified: 2006-08-02 18:25:13 UTC
I have two monitors that show different parts of my (virtual) desktop. (If anyone's interested, xorg.conf: Option "MetaModes" "1600x1200 @1600x1200 +0+0,1280x1024 @1280x1024 +1600+1200") Metacity correctly shows the gnome taskbar and panels on only one of the monitors, and maximizing a window correctly maximizes it on only the monitor where the window is. However, when moving the pointer (or a window) metacity lets it go completely outside of the viewable areas of the monitors. This makes it hard to hit buttons that are along the edges (e.g., the close button, scrollbars, the taskbar, etc.) because it completely nullifies the reason why people put stuff along the edges and in corners, based on Fitt's law. Also, I often lose the pointer even though I'm using Geyes, because those non-visible areas are quite big in my case (in fact they are just as big as the visible areas). Since metacity already knows the bounds of the visible areas it should be more or less trivial to make sure that the pointer stays within those bounds. Other information:
As it is now it also shows popup lists (e.g., comboboxes) outside the visible areas, which is very annoying. I'm not very familiar with X, so this popup-outside-visible-areas might actually be the application's fault, but even if that's the case I still hope metacity could somehow prevent it.
afaik there's nothing metacity can do to trap the pointer within the screen if X is letting it go outside; that function is normally performed by the X server, and I don't know of any X API that would allow the window manager to compensate for X server behavior in this area. popups outside the visible area are as you suspect an application issue. Those combo popups are "override redirect" in X jargon, which essentially means "invisible to the window manager"
Marking as notgnome, as per Havoc's comments (feel free to file a bug against xorg at freedesktop.org). Note that the issue in comment #1 is filed as bug 329491 for trying to get API into gtk+ to help fix that issue. :)
Note that there is still an issue with window constraints and void areas that we should probably fix sometime (basically void areas need to count as offscreen in offscreen constraints). Not sure if there's already a bug about that.