Age | Commit message (Collapse) | Author |
|
|
|
allowed beyond the session_ui_extents()
|
|
Add config setting for playhead-scroll-speed.
Default to 100% for now, but for new users we might later default it to something slower.
If you want to scroll quickly, it is preferred to zoom out first, then scroll.
|
|
New function session_gui_extents() reports the extents of all playlists.
ToDo: include region playlists, when they become available.
also: slow-down autoscroll (ToDo: make a config variable for this)
|
|
make libwidget independent of libcanvas.
Confine basics to pbd and gtkmm2ext.
|
|
|
|
This is necessary to allow calculation of correct intersection of visible
canvas area and items for the new Item::prepare_for_render() API.
samples_per_pixel must be set first to calculate the new horizontal canvas
position in Editor::set_horizontal_position and then
WaveView::set_samples_per_pixel will eventually call
WaveView::prepare_for_render for those items that are visible on the new canvas
position at the new position.
Or if there is not a change to zoom state then call Canvas::prepare_for_render
explicitly.
Also changes so that each method is only called once during
Editor::visual_changer
|
|
First visual change will be processed as normal and then blocked until the
canvas renders the change. If further visual changes need processing then
Editor::pre_render callback will schedule another expose/redraw/render.
This prevents an issue where idle_visual_changer is called many times in
response to events(keys/motion/etc) but the canvas does not get a chance to
render any but the last one which results in a big pause/jump.
This results in a more responsive canvas and in particular a smoother and more
predictable zooming experience.
|
|
|
|
|
|
sensitivity
This works for context menus also, because GTK sends us leave/enter notify
events when they appear.
|
|
|
|
allocation boundary into toplevel coordinates
|
|
snap now fills in a struct (MusicFrame) which contins a snapped frame
along with a music divisor.
this gives useful information wrt magnetic snap which may or may not
have rounded to an exact musical position.
region position may now be set musically (using quarter notes for now).
this patch fixes several problems in the current code:
- dragging a list of music-locked regions now maintains correct
musical offsets within the list.
- splitting regions using magnetic snap works correctly (#7192)
- cut drag should now work correctly with magnetic snap.
- musical length of split midi regions is no longer frame based.
|
|
during import
|
|
names during import
|
|
Cumulative time in percent while wiggling the tempo lines rapidly.
Before:
MidiRegionview::update_sustained 12.02
NoteBase::base_color 6.43
MidiGhostRegion::update_note 3.12
Note::set 1.27
TempoMap::frame_at_quarter_note 0.59
_dynamic_cast 0.13
After:
MidiRegionview::update_sustained 10.49
MidiGhostRegion::update_note 5.57
Note::set 2.52
TempoMap::frame_at_quarter_note 1.13
NoteBase::base_color 0.17
_dynamic_cast 0.17
|
|
|
|
Using is_mapped() is wrong, since if the editor was not visible (i.e. program has not yet shown the editor
"tab", then _group_tabs will have is_visible() == true but is_mapped() == false
|
|
Reset the autoscroll counter when scrolling stops, and correct the check
when vertical autoscrolling is permitted for whether scrolling has stopped.
|
|
|
|
This had become incoherent over time, and posed a development hazard and burden going forward
|
|
|
|
|
|
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
|
|
|
|
|
|
Paul Davis was responsible for introducing almost all of this.
|
|
This removes the direct dependence on ardour_ui.h from 39 files
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cursor value in Drag API; use C API to set canvas cursor
|
|
window)
|
|
This reverts commit 8f823388d9bd5aa8e297ab05be8c9fb323518945.
|
|
The problem this is avoiding makes absolutely no sense. Either I'm dumb, or
something is more deeply wrong with scroll group bounding boxes, or both, but I
don't care anymore. This works. Viva release mode.
|
|
Achieve this by adding a new hscroll group just for cursors.
That requires a slightly smarter window_to_canvas() to deal with overlapping
sensitive scroll groups. New rule is that scroll groups can overlap, but the
most sensitive one found from the top down will be chosen to translate
coordinates. This basically means don't overlap scroll groups with different
sensitivities.
In the presence of scroll groups, having a canvas-wide window_to_canvas()
and/or canvas_to_window() fundamentally makes no sense. At some point in the
glorious future we should kill those and use only item-relative coordinate
translation.
|
|
|
|
|
|
This reverts commit 03f0229bcfc35916f81c6187948df3ea3b79a976.
Mitigate the fallout from said overly aggressive revert: preserve the alpha
values to not break the color configuration for when the lines are fixed.
|
|
This reverts commit 780c1762 and e70c9a3
Both combined introduced various bugs:
* rubberband-selection has a scroll-offset
* region drag/drop has wrong y-offset
* ranges (loop etc) are above the playhead
* possible scroll performance hit (long unclipped
lines in h_scroll_group)
on the downside: time-grid is now no longer visible behind
the rulers. Doing that will require a different approach…
|
|
|
|
|
|
|
|
|
|
For example, if you're in a note and something about the mode changes, it's the
underlying region context that needs to change. So, seems we need a stack of
entry contexts to deal with this sort of thing.
Switching in/out of smart mode still doesn't update immediately because we
don't have the y-coordinate needed to update it.
|
|
|