I would have loved to split this apart, but there are just so many interrelated changes,
it makes little sense and would be a huge effort that would break future git bisect
use because so many intermediate commits would not compile
Key, Button and Focus In events in the editor+mixer windows cause the respective window to be noted
as the window to which focus should return after a dialog is closed with cmd/ctrl-w
GTK on OS X adds META when Command is pressed even though it also uses MOD2 to indicate COMMAND. So Cmd-w was actually META-MOD2-w and modifier_state_equals(MOD2)
would fail. This should have nothing but good side effects
This also removes Route::group_gain_control() and associated machinery.
Not yet tested with Mackie or other surfaces. More work to done to
start using the group capabilities, and also potentially to add
or derive more controls as RouteAutomationControls
This new design will work even when threads that need to receive
messages from RT threads are created *after* the RT threads. The
existing design would fail because the RT thread(s) would never
be known the later created threads, and so signals emitted by the
RT thread and causing call_slot() in the receiver would end up
being enqueued using a lock-protected list. The new design ensures
that communication always uses a lock-free FIFO instead
Not doing so can make source or object files appear multiple times in
the list of files to be compiled or linked, e.g. when doing './waf build
install', subsequently leading to linker errors.
Use gdk_pango_layout() for all text-size calculations.
In Canvas::Text always use the same context (local image surface)
for layouting (prior to this, local and window-context mix resulted in
different sizes).
the window needs to be moved in place before presenting it.
Otherwise it is displayed at mouse-pos and moving it triggers enter/leave,
which in turn re-start the timeout..
[Details] g_idle_add () which was used for this purpose used G_PRIORITY_DEFAULT_IDLE>=200 which was too low for correct main menu requests processing, like showing Mixer or Big Clock Window.
The priority was increased to G_PRIORITY_HIGH_IDLE = 100.
According to GTK manual (https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#G-PRIORITY-HIGH-IDLE:CAPS)
GTK+ uses G_PRIORITY_HIGH_IDLE + 10 = 110 for resizing operations, and G_PRIORITY_HIGH_IDLE + 20 = 120 for redrawing operations.
I assume that during record or playback on tracks there are too many redraw request which didn't give any chance for main menu request to be processed in time with old priority value.
This change must be considered as a hot fix so far.
The issue might be deeper. Will be investigated with Paul.
[Feature reviewed] AMishyn
[Reviewed by] PDavis, GZharun
[Feature reviewed] AMishyn
[Reviewed] VKamyshniy
Fixed up by Paul Davis to fix logic mistakes and unnecessary complexity,
and indentation.
Conflicts:
libs/gtkmm2ext/persistent_tooltip.cc
- clearing automation points sets control to "off" rather than touch.
- multiple touches on the same pass acts consistently (no more
fader jumps on mouse button press
- use actual value for initial point rather than some arbitrary
default. clarify new semantics of add () (with_default->with_initial).
- clean some whitespace
- add guard points as needed in stop.
- catch grab broken signal (i can't trigger it, but the docs seem
to think it is essential).
CF reports occasional “rendering icon 1 at size 1 x 1”
always followed by “rendering icon 1 at size 21 x 21”.
Probably a GTK bug with some specific version of GTK.
- Also makes "Mod4" Appear as "Windows" and adds new combination
"Alt-Windows" to the dropdown.
- Attempt to set a pair of default snap modifiers (without
knowing what it actually is for OSX)
- Copy modifier now saves
- Snap modifier modifier problem still remains.
- Copy modifier still doesn't save
- Testers please edit the Extra section of ~/.ardourN/config to allow
defaults to "take"
- Note that the current defaults overlap.
- warning - absolute snap modifier has no default and will be always
"on" unless you set it!
Note that no defaults are set - go to prefs->user interaction to
ensure that nothing is set to "no modifer"
also - the copy modifier doesn't actually save its state yet.
- user can abs/rel modifier key in prefs->user interaction
suggested for linux - absolute->alt ignore snap->alt-shift
- Constrained mode works the same as button 2 drag (initial move
sets constraint axis).
I attempted to preserve the "don't draw unless different" by ditching rounding for more
precise display_span, but that didn't work. An alternative solution would be
to draw on adjustment change if there's text, since then we need to redraw
regardless of slider position, but it seemed weird even just with respect to
the slider, so I opted for this, which really definitely redraws when the
adjustment changes, period.
If this proves to be a performance issue we'll have to figure that out.
for one, it can mess up the value when switching to
numeric-entry. It is also rather useless and not
Fader-like (faders are not scrollbars).
Besides, "stepvalue" is way to large and causes jumps
(sometimes step-value is even negative, see
"fast lookahead limiter", "release time"
-> some other bug)
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)
Prepare to allow BarController (with Spinbutton) to translate
internal/interface values for the SpinBox.
(The change is irrelevant for the fader/slider itself which
always use the [user-]interface value)
* change API to hide unity/default value line
* allow to override vertical scroll [1]
* allow changing button event forwarding [2]
[1] override scrolling in track-headers
[2] dbl-click is needed for BarControllers -> switch to SpinBtn
but a plain Slider on a track-header should not forward
these events to the TAV (they may trigger name-edit)
* update reserve so that round corners don't overlap
* draw complete 1px outline
* add API to hide/show the unity line
* don't show unity line at either end
* allow to shrink when the font-scaling changes
* re-introduce static pattern cache
(cairo's cache is not nearly large enough for A3 + plugins)
* only use cairo_clip on rectangles (not arbitrary paths
-> major performance boost
* re-add fader pixel reserve
* fix mouse + scroll interaction
* fix unity line display (1px wider, brighten by 150%)
* cache text size
* fix various other issues and consistent whitespace
This reverts large parts of commit d439e93b1e.
Always give ArdourButton a chance to handle Press or Release events if you override them.
This allows ArdourButtons to do the "Pressed" animation
And it now correctly eats the event so button clicks don't select the channelstrip.
It'd be nice if we could use 'ARDOUR::config_dir_name' for this purpose (or perhaps 'PROGRAM_VERSION'). However, neither is implemented widely enough at present to make this practical. Keep an eye on them though, as possible future strategies.
Consistent mixer strip button height.
The latter works by setting all the button size request heights to the
calculated height of the alphabet. Thus, all buttons of the same class will be
the same height regardless of their actual text.