Fix drag-out losing audio and FX-container drops losing the capture; re-home ingest under shell/actions

This commit is contained in:
2026-07-29 23:49:53 -04:00
parent a689fb75eb
commit 0800760833
16 changed files with 269 additions and 45 deletions
+7
View File
@@ -48,4 +48,11 @@ PathList assemblePathList(const std::vector<ResolvedSample>& resolved) {
return out;
}
OsHandoff decideOsHandoff(const std::vector<std::string>& paths) {
OsHandoff out;
out.startOsDrag = !paths.empty();
out.releaseInternalDrag = out.startOsDrag;
return out;
}
} // namespace reasampler::ui
+15
View File
@@ -69,4 +69,19 @@ struct PathList {
// exact-string — the shell normalizes case/slashes upstream if it wants Windows-style dedup.
PathList assemblePathList(const std::vector<ResolvedSample>& resolved);
// --- OS hand-off ordering -----------------------------------------------------
// The two side effects the shell performs when a drag crosses out of REAPER. They are ONE
// decision, not two: winding the internal drag down (release capture, clear drag state) for a
// hand-off that then cannot happen consumes the gesture — the user sees a drag that silently
// did nothing and drags again. Never release without starting.
struct OsHandoff {
bool startOsDrag = false; // hand `paths` to the OS drag initiator
bool releaseInternalDrag = false; // first wind down mouse capture + panel drag state
};
// Decides the hand-off from the assembled path list. Empty (everything stale/unresolvable)
// means the internal drag stays live rather than dying half-torn-down.
OsHandoff decideOsHandoff(const std::vector<std::string>& paths);
} // namespace reasampler::ui