summaryrefslogtreecommitdiffstats
path: root/src/inkview-window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/inkview-window.cpp')
-rw-r--r--src/inkview-window.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/inkview-window.cpp b/src/inkview-window.cpp
index 7f4826ae6..6567828cd 100644
--- a/src/inkview-window.cpp
+++ b/src/inkview-window.cpp
@@ -23,17 +23,25 @@ InkviewWindow::InkviewWindow(const Gio::Application::type_vec_files files,
bool fullscreen,
bool recursive,
int timer,
- double scale)
+ double scale,
+ bool preload
+ )
: _files(files)
, _fullscreen(fullscreen)
, _recursive(recursive)
, _timer(timer)
, _scale(scale)
+ , _preload(preload)
, _index(-1)
, _view(nullptr)
, _controlwindow(nullptr)
{
_files = create_file_list(_files);
+
+ if (_preload) {
+ preload_documents();
+ }
+
_documents.resize( _files.size(), nullptr); // We keep _documents and _files in sync.
// Callbacks
@@ -167,6 +175,24 @@ InkviewWindow::load_document()
return document;
}
+
+
+void
+InkviewWindow::preload_documents()
+{
+ for (auto it =_files.begin(); it != _files.end(); ) {
+
+ SPDocument* document =
+ SPDocument::createNewDoc ((*it)->get_parse_name().c_str(), true, false);
+ if (document) {
+ _documents.push_back(document);
+ ++it;
+ } else {
+ it = _files.erase(it);
+ }
+ }
+}
+
static std::string window_markup = R"(
<interface>
<object class="GtkWindow" id="ControlWindow">