From 54b9952253cd08d41a5e41d5d418052b8acb814f Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Mon, 28 Jun 2021 19:30:47 +0200 Subject: [PATCH 1/8] YACReader: Show error when opening nonexistent open recent entry --- YACReader/main_window_viewer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index 375e3d13..553c10d2 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -810,6 +810,9 @@ void MainWindowViewer::openComicFromRecentAction(QAction *action) } else if (info1.isDir()) { openFolderFromPath(action->data().toString()); } + } else { + viewer->resetContent(); + viewer->showMessageErrorOpening(); } } From df32cf01fb6cdcaf9ac3472b327032b3e53f0ef7 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Tue, 6 Jul 2021 10:27:24 +0200 Subject: [PATCH 2/8] GoTo dialogs: Restrict input values to existing pages --- YACReader/goto_dialog.cpp | 8 +++----- YACReader/goto_flow_toolbar.cpp | 6 ++++-- YACReader/goto_flow_widget.cpp | 8 ++------ 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/YACReader/goto_dialog.cpp b/YACReader/goto_dialog.cpp index a35cbde0..cd640240 100644 --- a/YACReader/goto_dialog.cpp +++ b/YACReader/goto_dialog.cpp @@ -60,12 +60,10 @@ void GoToDialog::setupUI() void GoToDialog::goTo() { unsigned int page = pageNumber->text().toInt(); - pageNumber->clear(); - - if (page >= 1) + if (page >= 1 && page <= v->top()) { emit(goToPage(page - 1)); - - close(); + close(); + } } void GoToDialog::setNumPages(unsigned int numPages) diff --git a/YACReader/goto_flow_toolbar.cpp b/YACReader/goto_flow_toolbar.cpp index 2dc49566..3156c651 100644 --- a/YACReader/goto_flow_toolbar.cpp +++ b/YACReader/goto_flow_toolbar.cpp @@ -109,8 +109,10 @@ void GoToFlowToolBar::setTop(int numPages) void GoToFlowToolBar::goTo() { - if (edit->text().toInt() != 0) - emit(goTo(edit->text().toInt() - 1)); + unsigned int page = edit->text().toInt(); + if (page >= 1 && page <= v->top()) { + emit(goTo(page - 1)); + } } void GoToFlowToolBar::centerSlide() diff --git a/YACReader/goto_flow_widget.cpp b/YACReader/goto_flow_widget.cpp index 9b96efe6..b3178948 100644 --- a/YACReader/goto_flow_widget.cpp +++ b/YACReader/goto_flow_widget.cpp @@ -11,7 +11,7 @@ GoToFlowWidget::GoToFlowWidget(QWidget *parent) : QWidget(parent) { - mainLayout = new QVBoxLayout; + mainLayout = new QVBoxLayout(this); mainLayout->setMargin(0); mainLayout->setSpacing(0); @@ -22,11 +22,7 @@ GoToFlowWidget::GoToFlowWidget(QWidget *parent) //toolBar->installEventFilter(this); } -GoToFlowWidget::~GoToFlowWidget() -{ - delete toolBar; - delete mainLayout; -} +GoToFlowWidget::~GoToFlowWidget() { } void GoToFlowWidget::setPageNumber(int page) { From 40d4d224be48438b6e41d54d1f24e4bfefc343f9 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Tue, 6 Jul 2021 11:09:23 +0200 Subject: [PATCH 3/8] Viewer: Always start GoTo flow on correct page --- YACReader/viewer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index 9d96e5b6..eb34312e 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -846,9 +846,9 @@ void Viewer::animateShowGoToFlow() showGoToFlowAnimation->setStartValue(QPoint((width() - goToFlow->width()) / 2, height() - 10)); showGoToFlowAnimation->setEndValue(QPoint((width() - goToFlow->width()) / 2, height() - goToFlow->height())); showGoToFlowAnimation->start(); - goToFlow->centerSlide(render->getIndex()); - goToFlow->setPageNumber(render->getIndex()); goToFlow->show(); + goToFlow->setPageNumber(render->getIndex()); + goToFlow->centerSlide(render->getIndex()); goToFlow->setFocus(Qt::OtherFocusReason); } } From abcb4b1f2653cf2cc1472aeeb8d9892aac90e566 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Tue, 6 Jul 2021 11:18:31 +0200 Subject: [PATCH 4/8] GoTo flow: Sync slide and page index in quick navigation mode --- YACReader/goto_flow_toolbar.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/YACReader/goto_flow_toolbar.cpp b/YACReader/goto_flow_toolbar.cpp index 3156c651..469669bf 100644 --- a/YACReader/goto_flow_toolbar.cpp +++ b/YACReader/goto_flow_toolbar.cpp @@ -33,6 +33,7 @@ GoToFlowToolBar::GoToFlowToolBar(QWidget *parent) "}"); connect(slider, &QSlider::valueChanged, this, [&](int v) { emit(setCenter(v)); }); + connect(slider, &QSlider::valueChanged, this, [=](int v) { emit(setPage(v)); }); pageHint = new QLabel("" + tr("Page : ") + "", this); v = new QIntValidator(this); From 3d9873db75cd39de6c381a09474440a92ac43751 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Tue, 6 Jul 2021 15:00:55 +0200 Subject: [PATCH 5/8] Always export libraries as .ydb --- YACReaderLibrary/export_comics_info_dialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/YACReaderLibrary/export_comics_info_dialog.cpp b/YACReaderLibrary/export_comics_info_dialog.cpp index 171bd0c1..f440fa4d 100644 --- a/YACReaderLibrary/export_comics_info_dialog.cpp +++ b/YACReaderLibrary/export_comics_info_dialog.cpp @@ -65,7 +65,7 @@ void ExportComicsInfoDialog::findPath() { QString s = QFileDialog::getSaveFileName(this, tr("Destination database name"), ".", "*.ydb"); if (!s.isEmpty()) { - path->setText(s); + path->setText(s.endsWith(".ydb") ? s : s + ".ydb"); accept->setEnabled(true); } } From 22c2431cc5d392c4017cb01adfee787bc31c02ba Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Tue, 13 Jul 2021 18:58:22 +0200 Subject: [PATCH 6/8] Render: Remove obsolete debug messages --- YACReader/render.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/YACReader/render.cpp b/YACReader/render.cpp index 4e6f5a4f..11b4daf1 100644 --- a/YACReader/render.cpp +++ b/YACReader/render.cpp @@ -587,9 +587,6 @@ bool Render::nextPageIsDoublePage() bool Render::previousPageIsDoublePage() { - qWarning("Previous page is doublepage!"); - qWarning("%d", currentIndex); - qWarning("%d", currentPageBufferedIndex); if (currentIndex == 2 && Configuration::getConfiguration().getSettings()->value(COVER_IS_SP, true).toBool()) { return false; } From 0e51b3fdacf8c92d5277626a2984db1f03327861 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Sat, 17 Jul 2021 14:18:24 +0200 Subject: [PATCH 7/8] Update changelog --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3a496af..11a0ddc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ Version counting is based on semantic versioning (Major.Feature.Patch) ## WIP +### YACReaderLibrary +* Ensure that comic info exports use .ydb as file suffix + +### YACReader +* Show error when opening bad open recent entries +* GoTo page: Fix segfault when entering page numbers greater than comic's page count + (toolbar and page flow) +* Initialize GotoFlow on current page, not cover +* Quick navigation mode: Fix page index error when using both mouse and keyboard for navigation +* Remove obsolete double page mode debug messages + ## 9.8.2 ### YACReaderLibrary * Fix opening comics from the continue reading banner. From 53f92ba1f62e9be2438ad4f7bb38b8702b08dd32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Mon, 13 Sep 2021 17:34:15 +0200 Subject: [PATCH 8/8] Enable hdpi scaling --- YACReader/main.cpp | 9 ++++++++- YACReaderLibrary/main.cpp | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/YACReader/main.cpp b/YACReader/main.cpp index 228d1628..7a76640b 100644 --- a/YACReader/main.cpp +++ b/YACReader/main.cpp @@ -89,6 +89,13 @@ int main(int argc, char *argv[]) { qInstallMessageHandler(messageHandler); + static const char ENV_VAR_QT_DEVICE_PIXEL_RATIO[] = "QT_DEVICE_PIXEL_RATIO"; + if (!qEnvironmentVariableIsSet(ENV_VAR_QT_DEVICE_PIXEL_RATIO) && !qEnvironmentVariableIsSet("QT_AUTO_SCREEN_SCALE_FACTOR") && !qEnvironmentVariableIsSet("QT_SCALE_FACTOR") && !qEnvironmentVariableIsSet("QT_SCREEN_SCALE_FACTORS")) { + QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + } + + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + #if defined(_MSC_VER) && defined(_DEBUG) _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); #endif @@ -105,7 +112,7 @@ int main(int argc, char *argv[]) app.setApplicationName("YACReader"); app.setOrganizationName("YACReader"); - app.setAttribute(Qt::AA_UseHighDpiPixmaps); + if (QIcon::hasThemeIcon("YACReader")) { app.setWindowIcon(QIcon::fromTheme("YACReader")); } diff --git a/YACReaderLibrary/main.cpp b/YACReaderLibrary/main.cpp index a0c06e61..a2f3fbef 100644 --- a/YACReaderLibrary/main.cpp +++ b/YACReaderLibrary/main.cpp @@ -119,6 +119,14 @@ void messageHandler(QtMsgType type, const QMessageLogContext &context, const QSt int main(int argc, char **argv) { qInstallMessageHandler(messageHandler); + + static const char ENV_VAR_QT_DEVICE_PIXEL_RATIO[] = "QT_DEVICE_PIXEL_RATIO"; + if (!qEnvironmentVariableIsSet(ENV_VAR_QT_DEVICE_PIXEL_RATIO) && !qEnvironmentVariableIsSet("QT_AUTO_SCREEN_SCALE_FACTOR") && !qEnvironmentVariableIsSet("QT_SCALE_FACTOR") && !qEnvironmentVariableIsSet("QT_SCREEN_SCALE_FACTORS")) { + QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + } + + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + QApplication app(argc, argv); #ifdef FORCE_ANGLE @@ -128,7 +136,6 @@ int main(int argc, char **argv) app.setApplicationName("YACReaderLibrary"); app.setOrganizationName("YACReader"); app.setApplicationVersion(VERSION); - app.setAttribute(Qt::AA_UseHighDpiPixmaps); // Set window icon according to Freedesktop icon specification // This is mostly relevant for Linux and other Unix systems