* Initial PianoRoll razor feature
* Restore PianoRoll edit mode after focusOut and in razor mode.
* Show changes directly after cut.
* Fix hanging note after adjusting vol/pan with razor action.
* Extract the split action to a separate method
This PR addresses some suggestions from a review, the most
important ones being:
- Extracting the note split action to a separate method, called
Pattern::splitNotes
- Removing getMouseTickPos method
- Adding a variable that holds the current razor position and a
method to update it (quantizing if CTRL is not pressed)
- Using [this] to capture "this" on the lambda function instead
of [=], since the latter doesn't work as intended from C++20 forward
- Fixing some code style and adding comments
* Removes an extra call to noteUnderMouse
By removing "&& noteUnderMouse()" from the mousePressEvent
conditional, we avoid an extra call to noteUnderMouse. The only
difference in the behavior of the tool is that now clicking on a place
that doesn't have a note will exit Razor mode.
* Style change suggested by @russiankumar
* Cancel razor action on SHIFT release.
* Make razor cut-line (color) themable.
* Add razor cut-line color to classic theme style.css
* Rename razor to knife.
* Change pixmap from razor to knife (from https://github.com/LMMS/lmms/pull/5524)
* Remove SHIFT behavior.
* Change knife shortcut to SHIFT+K
Co-authored-by: CYBERDEViL <cyberdevil@notabug.org>
Co-authored-by: Ian Caio <iancaio_dev@hotmail.com>
Lets you set a melody pattern as visible in the background of the Piano Roll
as support when building a new pattern. The pattern is visible throughout
the session or until cleared via the provided button.
* Give our threads names
It helps with debugging.
* Use Q_OBJECT macro to automatically name threads.
By default, QThread sets its name based on the Qt meta class. To get an
accurate metaclass, the class which inherits QThread must declare
Q_OBJECT in its header. Futhermore, Qt's MOC requires that a Qt type be
the primary base class when declaring Q_OBJECT, hence the order of
base classes has been rearranged for some classes.
Moving empty destructors out of the .cpp files and into headers
allows them to be devirtualized in certain cases.
(When the compiler can't "see" a function in a header, it must largely
assume it's some black box that the linker will resolve.)
While we're at it, use C++11's `= default` to define empty virtual
desturctors for us.
For some classes (e.g., Piano), nothing is derived from it, so we can
mark the class as final and remove any explicit virtual dtor.
There are many other places where this can be done, but this is a large
enough patch as-is.
Expose properties to set the colors for note borders and note fills for
patterns to the style sheets. Both properties are exposed for the muted
and not muted case. Use these new properties during rendering.
Adjust the style sheets for the classic and default theme.
Added a new button to the action bar, using step_btn_duplicate.png
The new button, aswell as adding a bar to the patten, then
copies the first bar to the last.
fixes#457
BBEditor Duplicate Pattern. updated image, changed function name
Have updated the new image step_button_duplicate.png
Renamed the function from duplicateFirstBarAtEnd to duplicateSteps.
BBEditor renamed function duplicateSteps
renamed duplicateSteps() to cloneSteps() as requested
BBEditor rechange duplicateSteps to cloneSteps
BB Editor changed actionBtn text from duplicate to clone
This fixes a bug introduced when removing double click from
BB patterns. It Now checks if we use fixedTCO's (bb tomb stones),
only disable double clikc if so, leaving it working correcly in the
song editor