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 }
@@ -1015,7 +1032,8 @@ void MainWindow::pageContextMenuRequested(const PageInfo& pageInfo_, const QPoin
10151032 goToPage (pageInfo.id ());
10161033 }
10171034
1018- QMenu menu;
1035+ // Parent widget helps correct multi-monitor placement (issue #75).
1036+ QMenu menu (thumbView);
10191037
10201038 auto & iconProvider = IconProvider::getInstance ();
10211039 QAction* insBefore = menu.addAction (iconProvider.getIcon (" insert-before" ), tr (" Insert before ..." ));
@@ -1035,12 +1053,24 @@ void MainWindow::pageContextMenuRequested(const PageInfo& pageInfo_, const QPoin
10351053 }
10361054} // MainWindow::pageContextMenuRequested
10371055
1056+ void MainWindow::toggleTwoPageSpreadReadingOrder () {
1057+ if (!isProjectLoaded () || !m_pages) {
1058+ return ;
1059+ }
1060+ const Qt::LayoutDirection nextDir
1061+ = (m_pages->layoutDirection () == Qt::LeftToRight) ? Qt::RightToLeft : Qt::LeftToRight;
1062+ m_pages->setLayoutDirection (nextDir);
1063+ m_outFileNameGen.setLayoutDirection (nextDir);
1064+ resetThumbSequence (currentPageOrderProvider (), ThumbnailSequence::KEEP_SELECTION );
1065+ invalidateAllThumbnails ();
1066+ }
1067+
10381068void MainWindow::pastLastPageContextMenuRequested (const QPoint& screenPos) {
10391069 if (!isProjectLoaded ()) {
10401070 return ;
10411071 }
10421072
1043- QMenu menu;
1073+ QMenu menu (thumbView) ;
10441074 menu.addAction (IconProvider::getInstance ().getIcon (" insert-here" ), tr (" Insert here ..." ));
10451075
10461076 if (menu.exec (screenPos)) {
@@ -1578,6 +1608,7 @@ void MainWindow::updateProjectActions() {
15781608 actionSaveProjectAs->setEnabled (loaded);
15791609 actionFixDpi->setEnabled (loaded);
15801610 actionRelinking->setEnabled (loaded);
1611+ actionReverseTwoPageOrder->setEnabled (loaded);
15811612}
15821613
15831614bool MainWindow::isBatchProcessingInProgress () const {
@@ -2156,6 +2187,7 @@ void MainWindow::setupIcons() {
21562187 gotoPageBtn->setIcon (iconProvider.getIcon (" right-pointing" ));
21572188 selectionModeBtn->setIcon (iconProvider.getIcon (" checkbox-styled" ));
21582189 thumbColumnViewBtn->setIcon (iconProvider.getIcon (" column-view" ));
2190+ pauseSortingBtn->setIcon (iconProvider.getIcon (" stop" ));
21592191 sortingOrderBtn->setIcon (iconProvider.getIcon (" sorting-order" ));
21602192 deviationHighlightingBtn->setIcon (iconProvider.getIcon (" six-spoked-asterisk" ));
21612193 diminishThumbnailsBtn->setIcon (iconProvider.getIcon (" diminishing-glass" ));
0 commit comments