Should finally resolve bug #7002
The reason 95e3f766 didn't resolve this is because OptionEditorContainer ctor
is called before adding all the widgets in RCOptionEditor so they will still be
hidden.
This is a common operation used for zooming in other DAWs like Ableton Live and
Cubase. To support such a usage pattern without changing the existing behaviour
of the ruler area I've made it an option that is false by default.
The behaviour of RulerDragZoom is intentionally different than a CursorDrag
that occurs in the rest of the ruler area in that it doesn't follow the snap to
grid setting and no locate related stuff occurs until button release.
There are some issues with responsiveness with more than a few hundred regions
or a large amount of MIDI events/notes.
Implements feature #6768
GTK+ apparently unpacks/hides a widget whose requistion at window show/packing time is negative for x or y axes. The RC option editor
was being created AFTER its Tabbable self packed it into its own window (when detached), and GTK+ rejected it because the
treeview had a size requisition with -1 for width.
So build it first, then call Tabbable::set_state() later
- Holding the constraint modifier at the time of grab gives constrained x.
- Holding the constraint modifier after the grab but before the first motion
constrains to the direction of first movement.
- it is currently dual use (move both ends of a range marker
during drag / push control points at the beginning of a drag).
this may have to be separated, but as it is called the push
points modifier, it belongs here.
This fixes a Glib::ConvertError that occured when using Glib::ustring::operator<<
inside a compose operation. This implicitly uses Glib::locale_from_utf8(), and if the string
is not legal UTF-8, an exception will be thrown.
std::string should be used EVERYWHERE unless glyph-by-glyph iteration is required. This is
very rare in the Ardour codebase, so you really shouldn't see Glib::ustring anywhere. The
main exception is handling user-input for a few specific cases.