13
0
Commit Graph

370 Commits

Author SHA1 Message Date
1c145ccfc3 Editor zooming: Config preference to define how much zooming will be easily allowed beyond the session_ui_extents() 2017-08-26 22:44:58 -05:00
49765f8897 Editor zooming:
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.
2017-08-26 22:44:58 -05:00
9b87279eca Editor zooming:
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)
2017-08-26 22:44:58 -05:00
601c317d70 Clean up library inheritance (colors.h, utils.h)
make libwidget independent of libcanvas.
Confine basics to pbd and gtkmm2ext.
2017-07-17 21:06:04 +02:00
Thomas Brand
63ea7b6516 NO-OP whitespace (updated GH PR #357) 2017-07-01 19:28:26 +02:00
5f30d87fd0 Changes to Editor::visual_changer to support Item/Canvas::prepare_for_render
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
2017-06-26 08:40:47 +10:00
265f52535a Coalesce visual changes to canvas/items and allow canvas to render
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.
2017-06-26 08:40:47 +10:00
de0e401214 Use NSGLView backed main editor canvas 2017-03-21 05:38:10 +01:00
d463720b6d simplify arguments to Editor::sensitize_the_right_region_actions() 2017-02-15 20:07:49 +01:00
3d3f2a79f6 use leave/enter from track canvas to be the primary driver of region action sensitivity
This works for context menus also, because GTK sends us leave/enter notify
events when they appear.
2017-02-15 20:07:49 +01:00
6e476c515d NO-OP: whitespace conversion 2017-02-09 16:27:34 +01:00
ab105314fb when considering whether or not to autoscroll teh canvas, first translate allocation boundary into toplevel coordinates 2017-02-09 16:27:16 +01:00
nick_m
59daffea1d rework snap
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.
2017-02-04 22:57:36 +11:00
ebc7eabea2 add arguments (unusued) to control whether or not SMF tempo map is used during import 2016-12-16 14:57:14 +00:00
9e4b972286 GUI changes to allow user to specify how/if to use SMF track/instrument names during import 2016-12-14 12:31:16 +00:00
nick_m
bf5933add6 Performance: store NoteBase UIConfiguration colors between config changes.
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
2016-10-17 03:19:02 +11:00
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
bf3719f63f get editor controls layout/midi track header/scroomer to be the correct height
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
2016-04-13 15:28:34 -04:00
9d5738dc55 reset autoscroll speed to minimum when scrolling stops
Reset the autoscroll counter when scrolling stops, and correct the check
when vertical autoscrolling is permitted for whether scrolling has stopped.
2016-03-19 13:44:18 +00:00
56770ff0af change GTKOSX macro constant to use __APPLE__ instead 2016-02-22 15:31:25 -05:00
6991a07902 remove all trace of SAE from source code.
This had become incoherent over time, and posed a development hazard and burden going forward
2016-02-22 15:31:24 -05:00
bc487bb4b0 replicate the remove-all-trailing whitespace commit(s) in master 2016-02-22 15:31:24 -05:00
9b9a7beb13 cleanup various merge conflict resolution errors/omissions 2016-02-22 15:31:24 -05:00
9010262bed first compilable version of tabbable design.
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
2016-02-22 15:31:21 -05:00
nick_m
bc15146560 Fix inoperative keyboard modifiers when leaving autoscroll. 2015-12-06 22:33:32 +11:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
6b019a4953 Move UIConfiguration Singleton into UIConfiguration header
This removes the direct dependence on ardour_ui.h from 39 files
2015-09-16 16:55:17 -04:00
fc1e7dbb55 Move DPIReset and ColorsChanged signals into UIConfiguration 2015-09-16 16:55:17 -04:00
8a8b5db2c3 add synth when drag/drop importing .mid - fixes #6474 2015-08-05 17:53:03 +02:00
46c8369328 merge fix 2015-07-16 16:13:24 -05:00
9370a80966 show selection trim cursors in Range mode 2015-06-28 00:52:49 -05:00
nick_m
e0a076d2b6 Mkae automation line / gain line cursors consistent. 2015-06-21 22:14:03 +10:00
42915c19a4 fix cursor in smart mode, when moving up and down the frame handles 2015-06-01 16:18:10 -05:00
22435bb53d make MouseCursors invalid cursor API be static; use to initialize default cursor value in Drag API; use C API to set canvas cursor 2015-01-24 12:26:58 -05:00
90c1e0ffd2 allow use of null pointer as a valid cursor (implies using cursor of parent window) 2015-01-23 15:19:36 -05:00
a58730e8f9 Revert "Kludgey fix for invisible playhead when scrolled."
This reverts commit 8f823388d9.
2015-01-16 22:06:10 -05:00
8f823388d9 Kludgey fix for invisible playhead when scrolled.
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.
2015-01-16 21:04:38 -05:00
b759fd5879 Put playhead on top of everything.
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.
2015-01-16 19:13:56 -05:00
cd15d27033 Put tempo lines below tracks. 2015-01-12 01:05:01 -05:00
43e58911a4 Remove unused vertical scroll group. 2015-01-12 01:05:01 -05:00
e79af77a18 Revert "hotfix z-stacking"
This reverts commit 03f0229bcf.

Mitigate the fallout from said overly aggressive revert: preserve the alpha
values to not break the color configuration for when the lines are fixed.
2015-01-12 01:03:17 -05:00
03f0229bcf hotfix z-stacking
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…
2015-01-11 14:17:47 +01:00
780c17620e Raise regions about tempo lines. 2015-01-10 19:38:21 -05:00
e70c9a3da1 Show tempo lines under marker bars. 2015-01-08 15:24:14 -05:00
58a4e01430 Update background color when theme is changed. 2015-01-07 01:23:13 -05:00
486d47db0e Fix smart mode cursor on audio regions. 2014-12-30 12:50:15 -05:00
62355de33a Fix cursor update on nested entry.
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.
2014-12-23 13:47:59 -05:00
e00c579fb2 Update canvas cursor on pop. 2014-12-23 13:47:59 -05:00
64fa63212f move all (G)UI related configuration parameters into UIConfiguration, not RCConfiguration 2014-12-22 13:39:46 -05:00
David Robillard
670938c8c4 Fix various cursor problems.
Add a new scoped cursor system that makes it much harder to screw up and end up
with stick cursors and so on.
2014-12-20 01:13:25 -05:00
5fef655380 Remove internal edit mode and add "content" tool. 2014-12-18 20:21:01 -05:00
e90ecdd5c5 Fix marker bars "gradient" colors. 2014-12-16 00:02:06 -05:00
5471ef8a79 make editor rubber band rect have appropriate transparency 2014-12-15 13:37:25 -05:00
7b023f4ee0 next modifier 2014-12-15 10:11:21 -05:00
ccbedaee51 next modifier 2014-12-15 10:00:20 -05:00
04a1893ffd next modifier, and remove color 102 since nothing uses it 2014-12-15 09:47:39 -05:00
56ca52651e fix up requested color names everywhere.
Thank <deity> for emacs ... space-uncamelcase-word-at-point FTW
2014-12-14 16:15:38 -05:00
48a7a11974 initial pass to replace all UIConfiguration::get_XXXXXX() calls with UIConfiguration::color(name).
IMPORTANT: names have not been downcased and spaced yet, so many colors are not found
2014-12-14 12:27:07 -05:00
603748d68a Unify gain and draw tools.
There might be a few special cases lingering around from attempts at magic tool
business, but this seems to work fine as far as I can tell.
2014-12-07 20:37:46 -05:00
8e54baa65f working compilation for new color code 2014-12-05 09:01:55 -05:00
bd577a0663 Avoid possible use of uninitialized values.
This could only happen with a broken widget, but it shuts up clang and doesn't
hurt.
2014-11-18 02:55:03 -05:00
5d5d9cb9e2 Fix various sticky/broken cursor issues.
This still isn't quite right, but it's a lot less broken than before, at least.
2014-11-14 02:37:36 -05:00
73e25ec571 redraw entire canvas when ColorsChanged is emitted 2014-11-10 10:45:33 -05:00
0960122686 set canvas background color 2014-11-10 10:45:18 -05:00
db98083f20 Remove unused variable. 2014-10-31 20:46:09 -04:00
ba4d1cd1c1 remove "canvasvar_" from all functions related to obtaining values from ARDOUR_UI::config() 2014-10-21 22:58:58 -04:00
b73f725676 remove mouse zoom mode; bind z to zoom-to-range 2014-10-21 12:47:53 -04:00
46f5c0c769 fix note 15897 on #5589 - only use fader cursor for region gain line when in mouse gain mode 2014-10-21 11:50:06 -04:00
4d0f30f5a8 fix note 0015900 on #5589 (cursor doesn't change when switching edit point 2014-10-13 15:19:07 -04:00
451e48de5f fix compiler warnings 2014-09-15 14:09:12 -04:00
885f1c71ec Remove unused variables (fix warnings). 2014-08-31 17:54:16 -04:00
b69870dfe6 add Editor::trackviews_height() convenience function to determine height of trackview area of canvas; use to help fix set_visible_track_count(); don't consider hidden tracks in that function; add "Selected" to that selector menu 2014-07-15 18:09:04 -04:00
d0bc4b55fa scroll up/down by tracks uses top edge as "focal point"; fix some other nasty code details 2014-07-14 12:36:51 -04:00
116a0ad327 fix inconsistency in smart mode where it shows a trim cursor in the top half of the region edge, but a click is actually going to start a range. It is arguable that we _should_ allow trimming in the top half, but that is complicated. This change is small and makes it consistent for now 2014-07-07 14:46:05 -05:00
7ec397c019 add basics of Cut mouse mode, no functionality yet. Icon images are still required 2014-07-07 07:05:43 -04:00
e3a6ea0273 give drop zone its own cursor-ability 2014-07-01 14:37:05 -04:00
4df566782c remove canvas cursor debug output 2014-06-30 09:20:26 -04:00
c706b1c4bb replace old implementation of Editor::_ensure_time_axis_view_is_visible() with the guts of Editor::ensure_track_is_visible(), then remove the latter.
Also change all users of ensure_track_is_visible() to use _ensure_time_axis_view_is_visible()
2014-06-27 10:49:05 -04:00
0a9595f74f make verbose canvas cursor color be set in its constructor rather than explicitly 2014-06-27 09:37:57 -04:00
a3c378cf62 move utility functions into a dedicated namespace 2014-06-25 21:47:54 +02:00
f147846863 add ability to save current action sensitivities and restore them, and to disable all action sensitivity.
This is needed to be able to lock the application fully on OS X, where the global menu bar would still allow interaction
even when a modal dialog is displayed.
2014-06-24 09:56:16 -04:00
6a5d805b38 more canvas refactoring.
Remove Canvas::Layout, use Canvas::Container for the same purpose, move child-rendering into Item::render_children() so that it
could theoretically be used by any derived type.
2014-06-22 11:41:05 -04:00
0796ccfb65 use newly factored canvas in gtk2_ardour 2014-06-21 11:44:22 -04:00
f5edb5a022 correct conversion of drop y-position into trackview for drag-n-drop of external files 2014-06-19 13:45:22 -04:00
f552c1cc5c fix potential crash in Editor::set_canvas_cursor() if inadvertently passed a null cursor (semantics are different on OS X vs. X Window) 2014-06-19 09:26:00 -04:00
e7895e1f80 more work on cursor tracking state 2014-06-18 21:03:25 -04:00
becf857f48 a whole slew of changes related to centralizing and rationalizing cursor management.
Debugging output left in place to help address the reports that will come in as people test this more
2014-06-18 10:24:59 -04:00
c30bda5173 a set of inter-related subtle changes to get vertical autoscrolling to work, or at least work better. 2014-06-17 08:08:14 -04:00
23b1c59630 fix erroneous start of autoscroll when mouse pointer is left or above the left/upper scrolling boundary but we're already scrolled to zero on the relevant axes 2014-06-13 18:43:53 -04:00
f7844f4893 do most of the work related to adding new anchored trim cursors (but debugging/analysis continues) 2014-06-13 18:43:53 -04:00
7a0b2e1c18 fix scrolling behaviour in track headers (event was stolen by rulers because event coordinates made it look as if the event happened there) 2014-06-13 14:27:59 -04:00
79c30ab766 make rulers color-sensitive (e.g. theme manager editable, etc) 2014-06-12 01:07:58 -04:00
22f45b5a78 Revert "do not allow canvas cursor changes while a drag is in progress". This
was a bad idea. There are lots of reasons to want to change cursors while
dragging, even if we don't do that yet.

This reverts commit 144033e55c.
2014-06-10 18:50:42 -04:00
144033e55c do not allow canvas cursor changes while a drag is in progress 2014-06-10 16:46:09 -04:00
d36afa6b8b forward scroll events from track control headers to the canvas, to get consistent scroll behaviour (whatever that behaviour is) 2014-06-09 10:02:38 -04:00
95f2b4ba17 change height of canvas drop so last 20 pixels of bottom track is still visible when fully scrolled down 2014-06-09 09:12:42 -04:00
b530e8649e rename Editor::_canvas_bottom_rect as Editor::_canvas_drop_zone; increase its size; remove debug message 2014-06-09 09:09:21 -04:00
5285bb587f fix position where rubberband rect is drawn 2014-06-06 08:33:13 -04:00
ad346dc638 reinstate a canvas group where we reparent regions while dragging, so that they are always on top.
I mistakenly removed this during the onecanvas changes.
2014-06-05 15:16:55 -04:00