[packages/pinentry] - added qt4 patch (try with some adjustments for Qt4 compatibility)

qboosh qboosh at pld-linux.org
Sat Sep 4 21:28:49 CEST 2021


commit b01b3b2f9d4e846d307e793f9d00080d49c907c0
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sat Sep 4 21:33:16 2021 +0200

    - added qt4 patch (try with some adjustments for Qt4 compatibility)

 pinentry-qt4.patch | 304 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 pinentry.spec      |   2 +
 2 files changed, 306 insertions(+)
---
diff --git a/pinentry.spec b/pinentry.spec
index 850bc9d..f5621c6 100644
--- a/pinentry.spec
+++ b/pinentry.spec
@@ -19,6 +19,7 @@ Source0:	ftp://ftp.gnupg.org/gcrypt/pinentry/%{name}-%{version}.tar.bz2
 # Source0-md5:	32e09a982711d6e705f9d89020424c2d
 Patch0:		%{name}-info.patch
 Patch1:		%{name}-am.patch
+Patch2:		%{name}-qt4.patch
 URL:		http://www.gnupg.org/
 %{?with_qt5:BuildRequires:	Qt5Core-devel >= 5}
 %{?with_qt5:BuildRequires:	Qt5Gui-devel >= 5}
@@ -160,6 +161,7 @@ Prosta kontrolka dialogowa do wpisywania PIN-ów lub haseł dla Qt5.
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 %if 0
 cd qt4
diff --git a/pinentry-qt4.patch b/pinentry-qt4.patch
new file mode 100644
index 0000000..8da8f9c
--- /dev/null
+++ b/pinentry-qt4.patch
@@ -0,0 +1,304 @@
+Revert fefd730651b6881aba374c548ff253517063747a when building for qt4
+--- pinentry-1.2.0/qt/pinentrydialog.cpp.orig	2021-08-25 12:01:31.000000000 +0200
++++ pinentry-1.2.0/qt/pinentrydialog.cpp	2021-09-03 20:48:27.041273145 +0200
+@@ -51,7 +51,9 @@
+ #include <QHBoxLayout>
+ #include <QVBoxLayout>
+ #include <QMessageBox>
++#if QT_VERSION >= 0x050000
+ #include <QRegularExpression>
++#endif
+ #include <QAccessible>
+ 
+ #include <QDebug>
+@@ -687,6 +689,7 @@ PinEntryDialog::PassphraseCheckResult Pi
+         return PassphraseOk;
+     }
+ 
++#if QT_VERSION >= 0x050000
+     const auto messageLines = QString::fromUtf8(QByteArray::fromPercentEncoding(error.get())).split(QChar{'\n'});
+     if (messageLines.isEmpty()) {
+         // shouldn't happen because pinentry_inq_checkpin() either returns NULL or a non-empty string
+@@ -702,6 +705,10 @@ PinEntryDialog::PassphraseCheckResult Pi
+     messageBox.setInformativeText(additionalLines);
+     messageBox.setStandardButtons(QMessageBox::Ok);
+     messageBox.exec();
++#else
++    const auto message = QString::fromUtf8(QByteArray::fromPercentEncoding(error.get()));
++    QMessageBox::warning(this, mConstraintsErrorTitle, message);
++#endif
+     return PassphraseNotOk;
+ }
+ 
+Qt4 requires SIGNAL() and SLOT() wrappers.
+--- pinentry-1.2.0/qt/pinentrydialog.cpp.orig	2021-09-03 22:02:40.073815665 +0200
++++ pinentry-1.2.0/qt/pinentrydialog.cpp	2021-09-03 22:03:02.357028280 +0200
+@@ -159,7 +159,7 @@ PinEntryDialog::PinEntryDialog(QWidget *
+         mGenerateButton = new QPushButton{this};
+         mGenerateButton->setIcon(QIcon::fromTheme(QLatin1String("password-generate")));
+         mGenerateButton->setVisible(false);
+-        connect(mGenerateButton, &QPushButton::clicked, this, &PinEntryDialog::generatePin);
++        connect(mGenerateButton, SIGNAL(&QPushButton::clicked), this, SLOT(&PinEntryDialog::generatePin));
+     }
+ 
+     if (!repeatString.isNull()) {
+@@ -206,8 +206,8 @@ PinEntryDialog::PinEntryDialog(QWidget *
+     connect(_edit, SIGNAL(backspacePressed()),
+             this, SLOT(onBackspace()));
+     if (mRepeat) {
+-        connect(_edit, &QLineEdit::returnPressed,
+-                this, [this] { mRepeat->setFocus(); });
++        connect(_edit, SIGNAL(&QLineEdit::returnPressed),
++                this, SLOT([this] { mRepeat->setFocus(); }));
+     }
+ 
+     auto *const mainLayout = new QVBoxLayout{this};
+@@ -284,10 +284,10 @@ PinEntryDialog::PinEntryDialog(QWidget *
+     mainLayout->addWidget(buttons);
+ 
+     auto capsLockWatcher = new CapsLockWatcher{this};
+-    connect(capsLockWatcher, &CapsLockWatcher::stateChanged,
+-            this, [this] (bool locked) {
++    connect(capsLockWatcher, SIGNAL(&CapsLockWatcher::stateChanged),
++            this, SLOT([this] (bool locked) {
+                 mCapsLockHint->setVisible(locked);
+-            });
++            }));
+ 
+     connect(qApp, SIGNAL(focusChanged(QWidget *, QWidget *)),
+             this, SLOT(focusChanged(QWidget *, QWidget *)));
+Qt4 needs other interfeaces instead of toHtmlEscapes and fromPercentEncoding().
+--- pinentry-1.2.0/qt/pinentrydialog.cpp.orig	2021-09-03 22:02:40.073815665 +0200
++++ pinentry-1.2.0/qt/pinentrydialog.cpp	2021-09-04 09:48:52.387598499 +0200
+@@ -55,6 +55,10 @@
+ #include <QRegularExpression>
+ #endif
+ #include <QAccessible>
++#if QT_VERSION < 0x050000
++#include <QTextDocument>
++#include <QUrl>
++#endif
+ 
+ #include <QDebug>
+ 
+@@ -435,7 +439,13 @@ void PinEntryDialog::setCapsLockHint(con
+ void PinEntryDialog::setFormattedPassphrase(const PinEntryDialog::FormattedPassphraseOptions &options)
+ {
+     mFormatPassphrase = options.formatPassphrase;
+-    mFormattedPassphraseHint->setText(QLatin1String("<html>") + options.hint.toHtmlEscaped() + QLatin1String("</html>"));
++    mFormattedPassphraseHint->setText(QLatin1String("<html>") + 
++#if QT_VERSION >= 0x050000
++                    options.hint.toHtmlEscaped()
++#else
++                    Qt::escape(options.hint)
++#endif
++                    + QLatin1String("</html>"));
+     Accessibility::setName(mFormattedPassphraseHint, options.hint);
+     toggleFormattedPassphrase();
+ }
+@@ -445,8 +455,12 @@ void PinEntryDialog::setConstraintsOptio
+     mEnforceConstraints = options.enforce;
+     mConstraintsHint->setText(options.shortHint);
+     mConstraintsHint->setToolTip(QLatin1String("<html>") +
+-                                 options.longHint.toHtmlEscaped().replace(QLatin1String("\n\n"), QLatin1String("<br>")) +
+-                                 QLatin1String("</html>"));
++#if QT_VERSION >= 0x050000
++                    options.longHint.toHtmlEscaped().replace(QLatin1String("\n\n"), QLatin1String("<br>"))
++#else
++                    Qt::escape(options.longHint).replace(QLatin1String("\n\n"), QLatin1String("<br>"))
++#endif
++                    + QLatin1String("</html>"));
+     Accessibility::setDescription(mConstraintsHint, options.longHint);
+     mConstraintsErrorTitle = options.errorTitle;
+ 
+@@ -706,7 +720,7 @@ PinEntryDialog::PassphraseCheckResult Pi
+     messageBox.setStandardButtons(QMessageBox::Ok);
+     messageBox.exec();
+ #else
+-    const auto message = QString::fromUtf8(QByteArray::fromPercentEncoding(error.get()));
++    const auto message = QString::fromUtf8(QUrl::fromPercentEncoding(error.get()).toAscii());
+     QMessageBox::warning(this, mConstraintsErrorTitle, message);
+ #endif
+     return PassphraseNotOk;
+Qt4 doesn't have qCDebug and QLoggingCategory.
+--- pinentry-1.2.0/qt/pinentry_debug.h.orig	2021-08-13 13:22:25.000000000 +0200
++++ pinentry-1.2.0/qt/pinentry_debug.h	2021-09-04 14:02:20.145211013 +0200
+@@ -21,8 +21,15 @@
+ #ifndef __PINENTRY_QT_DEBUG_H__
+ #define __PINENTRY_QT_DEBUG_H__
+ 
++#include <QtCore/qglobal.h>
++#if QT_VERSION >= 0x050000
+ #include <QLoggingCategory>
+ 
+ Q_DECLARE_LOGGING_CATEGORY(PINENTRY_LOG)
++#else
++#include <QDebug>
++#define PINENTRY_LOG
++#define qCDebug(x) qDebug()
++#endif
+ 
+ #endif // __PINENTRY_QT_DEBUG_H__
+--- pinentry-1.2.0/qt/pinentry_debug.cpp.orig	2021-08-13 13:22:25.000000000 +0200
++++ pinentry-1.2.0/qt/pinentry_debug.cpp	2021-09-04 13:59:33.362781218 +0200
+@@ -24,8 +24,10 @@
+ 
+ #include "pinentry_debug.h"
+ 
++#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+ #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
+ Q_LOGGING_CATEGORY(PINENTRY_LOG, "gpg.pinentry", QtWarningMsg)
+ #else
+ Q_LOGGING_CATEGORY(PINENTRY_LOG, "gpg.pinentry")
+ #endif
++#endif
+Qt4 doesn't have qEnvironmentVariableIsSet().
+--- pinentry-1.2.0/qt/main.cpp.orig	2021-08-25 12:01:31.000000000 +0200
++++ pinentry-1.2.0/qt/main.cpp	2021-09-04 20:10:12.895632674 +0200
+@@ -356,7 +356,11 @@ main(int argc, char *argv[])
+ #ifdef FALLBACK_CURSES
+ #if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
+     // check a few environment variables that are usually set on X11 or Wayland sessions
++#if QT_VERSION >= 0x050000
+     const bool hasWaylandDisplay = qEnvironmentVariableIsSet("WAYLAND_DISPLAY");
++#else
++    const bool hasWaylandDisplay = !qgetenv("WAYLAND_DISPLAY").isNull();
++#endif
+     const bool isWaylandSessionType = qgetenv("XDG_SESSION_TYPE") == "wayland";
+     const bool hasX11Display = pinentry_have_display(argc, argv);
+     const bool isX11SessionType = qgetenv("XDG_SESSION_TYPE") == "x11";
+Qt4 doesn't have QGuiApplication.
+--- pinentry-1.2.0/qt/pinlineedit.cpp.orig	2021-08-25 12:01:31.000000000 +0200
++++ pinentry-1.2.0/qt/pinlineedit.cpp	2021-09-04 21:21:29.425798054 +0200
+@@ -22,7 +22,11 @@
+ #include "pinlineedit.h"
+ 
+ #include <QClipboard>
++#if QT_VERSION >= 0x050000
+ #include <QGuiApplication>
++#else
++#include <QApplication>
++#endif
+ #include <QKeyEvent>
+ 
+ static const int FormattedPassphraseGroupSize = 5;
+@@ -94,7 +98,11 @@ public:
+             text.remove(FormattedPassphraseSeparator);
+         }
+         if (!text.isEmpty()) {
++#if QT_VERSION >= 0x050000
+             QGuiApplication::clipboard()->setText(text);
++#else
++            QApplication::clipboard()->setText(text);
++#endif
+         }
+     }
+ 
+@@ -118,7 +126,11 @@ void PinLineEdit::setFormattedPassphrase
+         return;
+     }
+     d->mFormattedPassphrase = on;
++#if QT_VERSION >= 0x050000
+     Selection selection{selectionStart(), selectionEnd()};
++#else
++    Selection selection{selectionStart(), selectionStart() + selectedText().length()};
++#endif
+     if (d->mFormattedPassphrase) {
+         setText(d->formatted(text()));
+         selection = d->formattedSelection(selection);
+@@ -179,6 +191,7 @@ void PinLineEdit::keyPressEvent(QKeyEven
+         }
+         return;
+     }
++#if QT_VERSION >= 0x050000
+     else if (e == QKeySequence::DeleteCompleteLine) {
+         if (!isReadOnly()) {
+             setSelection(0, text().size());
+@@ -187,6 +200,7 @@ void PinLineEdit::keyPressEvent(QKeyEven
+         }
+         return;
+     }
++#endif
+ 
+     QLineEdit::keyPressEvent(e);
+ 
+--- pinentry-1.2.0/qt/capslock.cpp.orig	2021-08-12 16:30:43.000000000 +0200
++++ pinentry-1.2.0/qt/capslock.cpp	2021-09-04 21:23:26.751829111 +0200
+@@ -25,14 +25,18 @@
+ #include "capslock.h"
+ #include "capslock_p.h"
+ 
++#if QT_VERSION >= 0x050000
+ #include <QGuiApplication>
++#else
++#include <QApplication>
++#endif
+ 
+ #include <QDebug>
+ 
+ CapsLockWatcher::Private::Private(CapsLockWatcher *q)
+     : q{q}
+ {
+-#ifdef PINENTRY_QT_WAYLAND
++#if defined(PINENTRY_QT_WAYLAND) && (QT_VERSION >= 0x050000)
+     if (qApp->platformName() == QLatin1String("wayland")) {
+         watchWayland();
+     }
+@@ -43,11 +47,13 @@ CapsLockWatcher::CapsLockWatcher(QObject
+     : QObject{parent}
+     , d{new Private{this}}
+ {
++#if defined(PINENTRY_QT_WAYLAND) && (QT_VERSION >= 0x050000)
+     if (qApp->platformName() == QLatin1String("wayland")) {
+ #ifndef PINENTRY_QT_WAYLAND
+         qWarning() << "CapsLockWatcher was compiled without support for Wayland";
+ #endif
+     }
++#endif
+ }
+ 
+ #include "capslock.moc"
+--- pinentry-1.2.0/qt/capslock_unix.cpp.orig	2021-08-12 16:30:43.000000000 +0200
++++ pinentry-1.2.0/qt/capslock_unix.cpp	2021-09-04 21:29:12.206624289 +0200
+@@ -32,7 +32,11 @@
+ # include <KWayland/Client/seat.h>
+ #endif
+ 
++#if QT_VERSION >= 0x050000
+ #include <QGuiApplication>
++#else
++#include <QApplication>
++#endif
+ 
+ #ifdef PINENTRY_QT_X11
+ # include <QX11Info>
+@@ -54,12 +58,16 @@ LockState capsLockState()
+ {
+     static bool reportUnsupportedPlatform = true;
+ #ifdef PINENTRY_QT_X11
+-    if (qApp->platformName() == QLatin1String("xcb")) {
++#if QT_VERSION >= 0x050000
++    if (qApp->platformName() == QLatin1String("xcb"))
++#endif
++    {
+         unsigned int state;
+         XkbGetIndicatorState(QX11Info::display(), XkbUseCoreKbd, &state);
+         return (state & 0x01) == 1 ? LockState::On : LockState::Off;
+     }
+ #endif
++#if QT_VERSION >= 0x050000
+ #ifdef PINENTRY_QT_WAYLAND
+     if (qApp->platformName() == QLatin1String("wayland")) {
+         if (!watchingWayland && reportUnsupportedPlatform) {
+@@ -70,6 +78,11 @@ LockState capsLockState()
+     if (reportUnsupportedPlatform) {
+         qWarning() << "Checking for Caps Lock not possible on unsupported platform:" << qApp->platformName();
+     }
++#else
++    if (reportUnsupportedPlatform) {
++        qWarning() << "Checking for Caps Lock not possible on unsupported platform";
++    }
++#endif
+     reportUnsupportedPlatform = false;
+     return LockState::Unknown;
+ }
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/pinentry.git/commitdiff/b01b3b2f9d4e846d307e793f9d00080d49c907c0



More information about the pld-cvs-commit mailing list