Add drag-and-drop regression test and build targets

This commit is contained in:
Armin 2026-10-04 23:58:44 +02:00
commit f28e4d37c5
7 changed files with 329 additions and 39 deletions

View file

@ -552,33 +552,18 @@ void MonoslicerEditor::comboBoxChanged(juce::ComboBox* comboBoxThatHasChanged)
}
}
// [EDITOR DIAG] temporary
static void ediag(const char* what, const juce::StringArray& files, int accept)
{
FILE* f = fopen("/tmp/monoslicer_drag.log", "a");
if (f == nullptr) return;
fprintf(f, "[editor] %s accept=%d files=%d", what, accept, (int)files.size());
for (const auto& x : files) fprintf(f, " \"%s\"", x.toUTF8().getAddress());
fprintf(f, "\n");
fclose(f);
}
bool MonoslicerEditor::isInterestedInFileDrag(const juce::StringArray& files)
{
for (const auto& f : files)
if (f.endsWithIgnoreCase(".wav") || f.endsWithIgnoreCase(".aiff") ||
f.endsWithIgnoreCase(".flac") || f.endsWithIgnoreCase(".ogg"))
{
ediag("isInterested", files, 1);
return true;
}
ediag("isInterested", files, 0);
return false;
}
void MonoslicerEditor::fileDragEnter(const juce::StringArray& files, int, int)
{
ediag("enter", files, isInterestedInFileDrag(files) ? 1 : 0);
if (isInterestedInFileDrag(files))
{
dropOverlay.setVisible(true);
@ -595,13 +580,11 @@ void MonoslicerEditor::fileDragMove(const juce::StringArray& files, int, int)
void MonoslicerEditor::fileDragExit(const juce::StringArray&)
{
ediag("exit", juce::StringArray(), 0);
dropOverlay.setVisible(false);
}
void MonoslicerEditor::filesDropped(const juce::StringArray& files, int, int)
{
ediag("drop", files, 1);
dropOverlay.setVisible(false);
for (const auto& f : files)
@ -611,7 +594,7 @@ void MonoslicerEditor::filesDropped(const juce::StringArray& files, int, int)
{
processorRef.loadAudioFile(file);
waveformDisplay.setSampleBuffer(&processorRef.getSampleBuffer(), processorRef.getSampleRateLoaded());
break;
}
}

View file

@ -101,7 +101,7 @@ private:
};
class MonoslicerEditor : public juce::AudioProcessorEditor,
private juce::FileDragAndDropTarget,
public juce::FileDragAndDropTarget,
private juce::Button::Listener,
private juce::ComboBox::Listener,
private juce::Timer