GUI: new pattern cursor logic, part 2

now it automatically changes order so you can select very far
also fix a little bug
This commit is contained in:
tildearrow 2025-06-28 00:55:18 -05:00
parent 7527c7340f
commit 3cb9fbefaa

View file

@ -446,6 +446,7 @@ void FurnaceGUI::drawPattern() {
sel1.xFine^=sel2.xFine; sel1.xFine^=sel2.xFine;
sel2.xFine^=sel1.xFine; sel2.xFine^=sel1.xFine;
} }
ImVec2 origWinPadding=ImGui::GetStyle().WindowPadding; ImVec2 origWinPadding=ImGui::GetStyle().WindowPadding;
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,ImVec2(0.0f,0.0f)); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,ImVec2(0.0f,0.0f));
if (mobileUI) { if (mobileUI) {
@ -517,7 +518,17 @@ void FurnaceGUI::drawPattern() {
ImGui::TableSetupColumn("pos",ImGuiTableColumnFlags_WidthFixed,fourChars.x); ImGui::TableSetupColumn("pos",ImGuiTableColumnFlags_WidthFixed,fourChars.x);
if (nextAddScroll!=0.0f) { if (nextAddScroll!=0.0f) {
ImGui::SetScrollY(ImGui::GetScrollY()+nextAddScroll); float newScroll=ImGui::GetScrollY()+nextAddScroll;
// wrap around and go to previous/next pattern if we're about to overflow
if (newScroll<0.0f && curOrder>0) {
ImGui::SetScrollY(ImGui::GetScrollMaxY()+newScroll);
setOrder(curOrder-1);
} else if (newScroll>ImGui::GetScrollMaxY() && curOrder<(e->curSubSong->ordersLen-1)) {
ImGui::SetScrollY(newScroll-ImGui::GetScrollMaxY());
setOrder(curOrder+1);
} else {
ImGui::SetScrollY(newScroll);
}
nextScroll=-1.0f; nextScroll=-1.0f;
nextAddScroll=0.0f; nextAddScroll=0.0f;
} }
@ -1184,7 +1195,7 @@ void FurnaceGUI::drawPattern() {
} }
ImGui::PushStyleVar(ImGuiStyleVar_Alpha,ImGui::GetStyle().Alpha*ImGui::GetStyle().DisabledAlpha); ImGui::PushStyleVar(ImGuiStyleVar_Alpha,ImGui::GetStyle().Alpha*ImGui::GetStyle().DisabledAlpha);
for (int i=0; i<dummyRows-1; i++) { for (int i=0; i<dummyRows-1; i++) {
patternRow(e->curSubSong->patLen+i-dummyRows+1,e->isPlaying(),lineHeight,chans,ord-1,patCache,true); patternRow(e->curSubSong->patLen+i-dummyRows+1,e->isPlaying(),lineHeight,chans,ord-1,patCache,false);
} }
ImGui::PopStyleVar(); ImGui::PopStyleVar();
} else { } else {