1010#include < QDir>
1111#include < QFileDialog>
1212#include < QFileSystemModel>
13+ #include < QMenu>
1314#include < QMessageBox>
1415#include < QResource>
1516#include < QScrollBar>
@@ -295,12 +296,19 @@ MainWindow::MainWindow()
295296 });
296297 connect (sortingOrderBtn, &QToolButton::clicked, this ,
297298 [this ](bool ) { pageOrderingChanged (m_stages->filterAt (m_curFilter)->selectedPageOrder ()); });
299+ connect (pauseSortingBtn, &QToolButton::toggled, this , [this ](bool ) {
300+ if (!isProjectLoaded ()) {
301+ return ;
302+ }
303+ resetThumbSequence (currentPageOrderProvider (), ThumbnailSequence::KEEP_SELECTION );
304+ });
298305 connect (deviationHighlightingBtn, &QToolButton::clicked, this , [this , &settings](bool checked) {
299306 settings.setHighlightDeviationEnabled (checked);
300307 m_thumbSequence->invalidateAllThumbnails ();
301308 });
302309
303310 connect (actionFixDpi, SIGNAL (triggered (bool )), SLOT (fixDpiDialogRequested ()));
311+ connect (actionReverseTwoPageOrder, SIGNAL (triggered (bool )), SLOT (toggleTwoPageSpreadReadingOrder ()));
304312 connect (actionRelinking, SIGNAL (triggered (bool )), SLOT (showRelinkingDialog ()));
305313#ifdef ENABLE_DEBUG_FEATURES
306314 connect (actionDebug, SIGNAL (toggled (bool )), SLOT (debugToggled (bool )));
@@ -599,6 +607,10 @@ bool MainWindow::compareFiles(const QString& fpath1, const QString& fpath2) {
599607}
600608
601609std::shared_ptr<const PageOrderProvider> MainWindow::currentPageOrderProvider () const {
610+ if (pauseSortingBtn->isChecked ()) {
611+ return nullptr ;
612+ }
613+
602614 const int idx = sortOptions->currentIndex ();
603615 if (idx < 0 ) {
604616 return nullptr ;
@@ -623,6 +635,11 @@ void MainWindow::updateSortOptions() {
623635
624636 sortOptions->setVisible (sortOptions->count () > 0 );
625637
638+ pauseSortingBtn->setEnabled (sortOptions->count () > 0 );
639+ if (sortOptions->count () == 0 ) {
640+ pauseSortingBtn->setChecked (false );
641+ }
642+
626643 if (sortOptions->count () > 0 ) {
627644 sortOptions->setCurrentIndex (filter->selectedPageOrder ());
628645 }
@@ -1016,7 +1033,8 @@ void MainWindow::pageContextMenuRequested(const PageInfo& pageInfo_, const QPoin
10161033 goToPage (pageInfo.id ());
10171034 }
10181035
1019- QMenu menu;
1036+ // Parent widget helps correct multi-monitor placement (issue #75).
1037+ QMenu menu (thumbView);
10201038
10211039 auto & iconProvider = IconProvider::getInstance ();
10221040 QAction* insBefore = menu.addAction (iconProvider.getIcon (" insert-before" ), tr (" Insert before ..." ));
@@ -1036,12 +1054,24 @@ void MainWindow::pageContextMenuRequested(const PageInfo& pageInfo_, const QPoin
10361054 }
10371055} // MainWindow::pageContextMenuRequested
10381056
1057+ void MainWindow::toggleTwoPageSpreadReadingOrder () {
1058+ if (!isProjectLoaded () || !m_pages) {
1059+ return ;
1060+ }
1061+ const Qt::LayoutDirection nextDir
1062+ = (m_pages->layoutDirection () == Qt::LeftToRight) ? Qt::RightToLeft : Qt::LeftToRight;
1063+ m_pages->setLayoutDirection (nextDir);
1064+ m_outFileNameGen.setLayoutDirection (nextDir);
1065+ resetThumbSequence (currentPageOrderProvider (), ThumbnailSequence::KEEP_SELECTION );
1066+ invalidateAllThumbnails ();
1067+ }
1068+
10391069void MainWindow::pastLastPageContextMenuRequested (const QPoint& screenPos) {
10401070 if (!isProjectLoaded ()) {
10411071 return ;
10421072 }
10431073
1044- QMenu menu;
1074+ QMenu menu (thumbView) ;
10451075 menu.addAction (IconProvider::getInstance ().getIcon (" insert-here" ), tr (" Insert here ..." ));
10461076
10471077 if (menu.exec (screenPos)) {
@@ -1579,6 +1609,7 @@ void MainWindow::updateProjectActions() {
15791609 actionSaveProjectAs->setEnabled (loaded);
15801610 actionFixDpi->setEnabled (loaded);
15811611 actionRelinking->setEnabled (loaded);
1612+ actionReverseTwoPageOrder->setEnabled (loaded);
15821613}
15831614
15841615bool MainWindow::isBatchProcessingInProgress () const {
@@ -2157,6 +2188,7 @@ void MainWindow::setupIcons() {
21572188 gotoPageBtn->setIcon (iconProvider.getIcon (" right-pointing" ));
21582189 selectionModeBtn->setIcon (iconProvider.getIcon (" checkbox-styled" ));
21592190 thumbColumnViewBtn->setIcon (iconProvider.getIcon (" column-view" ));
2191+ pauseSortingBtn->setIcon (iconProvider.getIcon (" stop" ));
21602192 sortingOrderBtn->setIcon (iconProvider.getIcon (" sorting-order" ));
21612193 deviationHighlightingBtn->setIcon (iconProvider.getIcon (" six-spoked-asterisk" ));
21622194 diminishThumbnailsBtn->setIcon (iconProvider.getIcon (" diminishing-glass" ));
0 commit comments