Menus leaving bounds of monitor

Is it possible to constrain menus to the bounds of my monitors? I am using a dual monitor setup with a vertical offset, and I have to move windows back and forth between monitors to see full menus.

For example, I keep the mixer on my main monitor; if I want to change the output of a track from ‘master’ to a bus, I click at the bottom of the strip to change the output and the menu is written downwards out of bounds of the screen, such that only the first two menu items can be seen.

Ardour will do whatever GTK (the GUI toolkit we use) does; GTK will do whatever it thinks the right thing based on the information about the display it gets from X Window. So this is a GTK issue rather than an Ardour one. There’s nothing in Ardour that can address this issue.

Note that for menus that ardour itself popups (contrary to menu bar menus that are popped up by the menubar gtk widget), we try to be smart to operate within the bounds of the screens. In particular in latest Ardour the output selection popup position is handled by Ardour. The problem is that we rely on GTK to tell on which monitor is the button, and what are the monitor extents. If we get wrong information, we’re out of luck. Garbage in, garbage out.

Thank you kindly for the response. I’ll have to look into GTK then. Do you have any leads? I mean, do y’all have any ideas as to why GTK would be having this issue only with Ardour?

It probably doesn’t have the problem only with Ardour. Beware that Ardour is based on GTK 2, so maybe GTK 3 has fixed the problem. Then again, there could be a bug in Ardour’s implementation (though Ardour only computes the top-left x,y and GTK then “clamps” the menu to a single monitor by adding scrolling facilities to it if necessary).
The code from Ardour is here: https://github.com/Ardour/ardour/blob/master/libs/gtkmm2ext/utils.cc#L313 and the generic code from GTK is here: https://github.com/GNOME/gtk/blob/gtk-2-24/gtk/gtkmenu.c#L4240 (part of https://github.com/GNOME/gtk/blob/gtk-2-24/gtk/gtkmenu.c#L4180 which does more than calling our custom positioning when there is one)

I also use the similarly vertically stacked screen setup with a laptop and external screen and noticed this issue recently.

I think it would be good to fix this if possible, so can you please add a report to the bug tracker, Thanks.