GUI: new pattern cursor logic, part 1 - READ

this new pattern cursor logic will finally allow you to click on any
cell of the previous/next pattern and take you there
on top of that you'll be able to make selections that go beyond the
boundaries of a pattern

operations are not supported yet, so don't try it out!
it won't work properly until I adapt the code.
This commit is contained in:
tildearrow 2025-06-27 20:37:23 -05:00
parent eac8c03158
commit b9604c5729
5 changed files with 97 additions and 46 deletions

View file

@ -1006,11 +1006,11 @@ enum NoteCtrl {
struct SelectionPoint {
int xCoarse, xFine;
int y;
SelectionPoint(int xc, int xf, int yp):
xCoarse(xc), xFine(xf), y(yp) {}
int y, order;
SelectionPoint(int xc, int xf, int yp, int o):
xCoarse(xc), xFine(xf), y(yp), order(o) {}
SelectionPoint():
xCoarse(0), xFine(0), y(0) {}
xCoarse(0), xFine(0), y(0), order(0) {}
};
struct UndoRegion {
@ -2343,7 +2343,7 @@ class FurnaceGUI {
int curIns, curWave, curSample, curOctave, curOrder, playOrder, prevIns, oldRow, editStep, editStepCoarse, soloChan, orderEditMode, orderCursor;
int loopOrder, loopRow, loopEnd, isClipping, newSongCategory, latchTarget;
int wheelX, wheelY, dragSourceX, dragSourceXFine, dragSourceY, dragDestinationX, dragDestinationXFine, dragDestinationY, oldBeat, oldBar;
int wheelX, wheelY, dragSourceX, dragSourceXFine, dragSourceY, dragSourceOrder, dragDestinationX, dragDestinationXFine, dragDestinationY, dragDestinationOrder, oldBeat, oldBar;
int curGroove, exitDisabledTimer;
int curPaletteChoice, curPaletteType;
float soloTimeout;
@ -2983,8 +2983,8 @@ class FurnaceGUI {
void processDrags(int dragX, int dragY);
void processPoint(SDL_Event& ev);
void startSelection(int xCoarse, int xFine, int y, bool fullRow=false);
void updateSelection(int xCoarse, int xFine, int y, bool fullRow=false);
void startSelection(int xCoarse, int xFine, int y, int ord, bool fullRow=false);
void updateSelection(int xCoarse, int xFine, int y, int ord, bool fullRow=false);
void finishSelection();
void finishDrag();