Commit graph

25 commits

Author SHA1 Message Date
Paul Davis
e2e9ad173b pianoroll header: clean up left over use of evy as ev->y
This dated to when it was thought that we needed a transform for the event
y coordinate, which was incorrect.
2025-11-03 12:28:13 -07:00
Robin Gareus
33f1681c76
Fix scrommer handle drags
Previously this could get stuck at max zoom level
when note_height was >= max_note_height
2025-11-03 00:26:13 +01:00
Paul Davis
f12c328b63 avoid unintended note highlighting in MIDI pianoroll header 2025-11-02 14:24:52 -07:00
Paul Davis
6836c93f21 only switch pianroll to UserRange after a drag actually changed things 2025-10-09 16:25:01 -06:00
Paul Davis
df564f132b new pianoroll note range enum, denoting "user selected range" 2025-10-09 16:25:01 -06:00
Paul Davis
ee6356d9df remove crashing assert() when rendering scroomer
Too hard to get a floating point assert correct, but I think this is still a little
incorrect because we do not scale the kbd size when rendering it.
2025-08-19 10:53:06 -06:00
Paul Davis
cf14fe75f2 add some debugging info to help diagnose a crash 2025-08-16 12:01:20 -06:00
Paul Davis
ea4737079d region tempo and meter are optional (gui) 2025-08-10 07:55:39 -06:00
Paul Davis
0811ad2a3a NO-OP: no double semicolons 2025-08-06 11:14:58 -06:00
Paul Davis
f09ed269d0 use correct default scroomer size in initializer
this really has no effect but it's more consistent.
2025-08-06 11:12:38 -06:00
Paul Davis
ffa0e3547b pianoroll header: parametize kbd width and use when rendering 2025-08-06 11:11:39 -06:00
Paul Davis
298df2029b remove unused variable 2025-07-30 15:28:46 -06:00
Paul Davis
b93a61998d fix arithmetic/offset when determining if mouse is inside scroomer 2025-07-11 23:03:31 -06:00
Paul Davis
b5dada592d remove unused variable 2025-07-10 23:22:55 -06:00
Paul Davis
2b008400c7 do not double-transform event coords for piano roll headers
the canvas PRH alreadys transforms event coordinates before deliverying the event
to a handler; the non-canvas version always gets item-centric coordinates from
the GUI toolkit
2025-07-09 10:21:00 -06:00
Paul Davis
d847266cd5 more work on scroomer behavior, close to as intended but still a little bit meh 2025-07-07 16:21:52 -06:00
Paul Davis
d9fda4ce7a click on pianoroll header note always does selection, no modifiers or middle button required
Plus minor related code cleanups
2025-06-30 18:20:21 -06:00
Paul Davis
73f4378a51 more adjustments to scroomer drag logic
1. use an idle callback
2. MidiViewBackground::apply_note_range() now returns true/false
depending on whether or not it was able to make the requested change.
It might fail due to out of bounds note line size, for example.
2025-06-16 23:01:10 -06:00
Paul Davis
f48fe3f740 numerous fix ups to the behavior of button presses in any pianoroll header 2025-06-13 17:20:09 -06:00
Paul Davis
5208fdce2c the continuing saga of MIDI note line geometry and the scroomer 2025-06-10 12:28:33 -06:00
Paul Davis
06593d1a79 pianoroll note labelling: pixel pushing, crash prevent, theme utilization for fonts 2025-06-03 23:17:53 -06:00
Paul Davis
024dedc446 pianoroll: clarify and resolve some issues caused by confusion over what type the _view member has 2025-06-03 12:14:21 -06:00
Paul Davis
e23fdd5b8c horrific hack to deal with pianoroll header (widget) single pixel misalignment currently not understood 2025-06-03 11:34:21 -06:00
Paul Davis
362672ac34 single pixel line, in themed "black" color, to divide B/C and E/F on piano roll header 2025-06-03 11:33:48 -06:00
Paul Davis
48dde40b4f share piano roll header across both GTK widget and Canvas item implementations
This also uses the new API exposed by MidiViewBackground so that the header simply re-uses
the same exact position & height values computed by the background for its note lines.

PianoRollHeaderBase is the base class with the shared implementation.

PianoRollHeader is the GTK widget derived class.

ArdourCanvas::PianoRollHeader is the canvas item derived class.

Both PianoRollHeader implementations have to implement various methods that gloss
over the differences between drawing and event handling in a GTK widget context
or in a canvas item context
2025-06-02 19:53:34 -06:00