diff --git a/data/strings/en.ini b/data/strings/en.ini
index f53d04017..1c7863b7a 100644
--- a/data/strings/en.ini
+++ b/data/strings/en.ini
@@ -1033,6 +1033,7 @@ double_high = Double-high Pixels (1:2)
title = Notice
description = Do you want to load the following files as an animation?
repeat = Do the same for other files
+duration = Duration
agree = &Agree
skip = &Skip
diff --git a/data/widgets/open_sequence.xml b/data/widgets/open_sequence.xml
index be47668f0..3bb5d985c 100644
--- a/data/widgets/open_sequence.xml
+++ b/data/widgets/open_sequence.xml
@@ -8,6 +8,10 @@
+
+
+
+
diff --git a/src/app/file/file.cpp b/src/app/file/file.cpp
index 64245ac53..78596848f 100644
--- a/src/app/file/file.cpp
+++ b/src/app/file/file.cpp
@@ -385,6 +385,10 @@ FileOp* FileOp::createLoadDocumentOperation(Context* context,
window.files()->getSelectedChild() != nullptr);
});
+ window.duration()->setTextf("%d", fop->m_seq.duration);
+ window.duration()->Change.connect(
+ [&]() { fop->m_seq.duration = window.duration()->textInt(); });
+
window.openWindowInForeground();
// Don't show this alert again.
@@ -832,6 +836,8 @@ void FileOp::operate(IFileOpProgress* progress)
#endif
}
+ m_document->sprite()->setFrameDuration(frame, m_seq.duration);
+
++frame;
m_seq.progress_offset += m_seq.progress_fraction;
}
@@ -1395,6 +1401,7 @@ FileOp::FileOp(FileOpType type,
m_seq.frame = frame_t(0);
m_seq.layer = nullptr;
m_seq.last_cel = nullptr;
+ m_seq.duration = 100;
m_seq.flags = 0;
}
diff --git a/src/app/file/file.h b/src/app/file/file.h
index 93a0ca4b2..35c8d1aee 100644
--- a/src/app/file/file.h
+++ b/src/app/file/file.h
@@ -311,6 +311,7 @@ namespace app {
bool has_alpha;
LayerImage* layer;
Cel* last_cel;
+ int duration;
// Flags after the user choose what to do with the sequence.
int flags;
} m_seq;