aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2022-10-02 16:58:56 +0100
committerfanquake <fanquake@gmail.com>2022-10-02 17:00:30 +0100
commit45c9f4afa41472d9aadd65e9dfc7eb879d116ca4 (patch)
tree2dbb35a0f0adcf159bd22f1bbaaafe4ab33212e6
parent313ea18e5e72df185935d06491dd823163eefa87 (diff)
parent31ca698f2017c57aad8f9839a582c6864ede92bd (diff)
downloadbitcoin-45c9f4afa41472d9aadd65e9dfc7eb879d116ca4.tar.xz
Merge bitcoin/bitcoin#25828: [23.x] GUI backports
31ca698f2017c57aad8f9839a582c6864ede92bd Disallow encryption of watchonly wallets (Andrew Chow) da9578da800ba98c5763f28d5777cb4067df448e build, qt: bump Qt5 version to 5.15.3 (Pavol Rusnak) Pull request description: Backports: - ef20add4c98674183720d9631ac780f9a248b487 from bitcoin/bitcoin#24668 to address bitcoin/bitcoin#24939 and bitcoin-core/gui#638 - bitcoin-core/gui#631 Guix builds on `x86_64`: ``` 773f3555a1c6179d35a7a0b3971ced8eaf5a5e4bef5c08313216509506fe618d guix-build-31ca698f2017/output/aarch64-linux-gnu/SHA256SUMS.part ef3977b92daabffc2d153e15963a5703839bc04250d2784bc00dc1104112e79e guix-build-31ca698f2017/output/aarch64-linux-gnu/bitcoin-31ca698f2017-aarch64-linux-gnu-debug.tar.gz 65b2351c61d226a8b10fda36cc963fda1f5fb89ea6b463d7351fdcd67bd57c3e guix-build-31ca698f2017/output/aarch64-linux-gnu/bitcoin-31ca698f2017-aarch64-linux-gnu.tar.gz 41c3489300f81f714033aa45ca3a807c5005be0625ebf58234fd89f3cdc65a1d guix-build-31ca698f2017/output/arm-linux-gnueabihf/SHA256SUMS.part 45e6e4c9e2e35430c41bca6df36d5ed2f9a857934da46bfd920a499e03bddb61 guix-build-31ca698f2017/output/arm-linux-gnueabihf/bitcoin-31ca698f2017-arm-linux-gnueabihf-debug.tar.gz cf08e2a62c5a9bfdeaeee6ce69263dde8b56033aab650bb9ffafe8e9b9241519 guix-build-31ca698f2017/output/arm-linux-gnueabihf/bitcoin-31ca698f2017-arm-linux-gnueabihf.tar.gz 7d1f3e185fbb6843a1b5c47f7ff2a4452aa4a1f533bd7171f7fc8a13e65fde53 guix-build-31ca698f2017/output/arm64-apple-darwin/SHA256SUMS.part 6395ee2e17fd5a8891fc70d97e7d75810d677293b6ad8581334b2e289024210d guix-build-31ca698f2017/output/arm64-apple-darwin/bitcoin-31ca698f2017-arm64-apple-darwin-unsigned.dmg 1658de08323b366f0f39e9ed02d68072ee3bef2db2252235e71d8fd206b4e609 guix-build-31ca698f2017/output/arm64-apple-darwin/bitcoin-31ca698f2017-arm64-apple-darwin-unsigned.tar.gz c4fdf8d5563bdfc0390dec7adce2a0608f8e5b8d0d82b648ef38aed8ab72d996 guix-build-31ca698f2017/output/arm64-apple-darwin/bitcoin-31ca698f2017-arm64-apple-darwin.tar.gz 709470d5d1a4a44022cd3e7b162c8cf6c492c6bb9996eb31f12a121351ad081f guix-build-31ca698f2017/output/dist-archive/bitcoin-31ca698f2017.tar.gz 6f809a8bdd10fc62143b5d265ea9c2eae37a1b18cf573d4a3743b2b026c0d038 guix-build-31ca698f2017/output/powerpc64-linux-gnu/SHA256SUMS.part ff2f87a29f7581d9ce1fccb8749f4473d03532de2194373de0fcdcd3bf0d380a guix-build-31ca698f2017/output/powerpc64-linux-gnu/bitcoin-31ca698f2017-powerpc64-linux-gnu-debug.tar.gz ab5ec4203ff59c0d4885f5df1c91191a03a3c104ed8ca0e98e19f531914cd2ad guix-build-31ca698f2017/output/powerpc64-linux-gnu/bitcoin-31ca698f2017-powerpc64-linux-gnu.tar.gz beb0ed7d9940718351301cb27dda1ae7891092c85664e2f9473e81c02479c951 guix-build-31ca698f2017/output/powerpc64le-linux-gnu/SHA256SUMS.part 286121e5698b726abbfc24d972c00d9f16f6d841fab245980a376a51e8dd85bc guix-build-31ca698f2017/output/powerpc64le-linux-gnu/bitcoin-31ca698f2017-powerpc64le-linux-gnu-debug.tar.gz 04a12dfe6a036477d212877f301ee425dcf063abf0fd892b8fbc0497ee5612fc guix-build-31ca698f2017/output/powerpc64le-linux-gnu/bitcoin-31ca698f2017-powerpc64le-linux-gnu.tar.gz d229041d43c40a49bbebcb5b0700c540456e058e0cb7be0d3ac414a80018e4f9 guix-build-31ca698f2017/output/riscv64-linux-gnu/SHA256SUMS.part 981268b93caaf1c450f1f3cec4d70efd2b4779e17917a4ab424447743628519e guix-build-31ca698f2017/output/riscv64-linux-gnu/bitcoin-31ca698f2017-riscv64-linux-gnu-debug.tar.gz acfef50476d9141ec29855216e60974d6307307a02784e7217942ee281d69c76 guix-build-31ca698f2017/output/riscv64-linux-gnu/bitcoin-31ca698f2017-riscv64-linux-gnu.tar.gz 5482b0c34069be1e40a96a173f984c67eb983860a4f5f4d9d927638caf72eed5 guix-build-31ca698f2017/output/x86_64-apple-darwin/SHA256SUMS.part fe4847edbc3ad1c747663a67f0daf2ed8b38818d1d1960617d85c851b0dded2f guix-build-31ca698f2017/output/x86_64-apple-darwin/bitcoin-31ca698f2017-x86_64-apple-darwin-unsigned.dmg 2b1899804035508f90eef57e1f068120509e7680877c8ae6cb5cb5beed84607c guix-build-31ca698f2017/output/x86_64-apple-darwin/bitcoin-31ca698f2017-x86_64-apple-darwin-unsigned.tar.gz 7a82ab62d1db4141b13ac566bc985eca5fa1da982be29427dd74f7098059932c guix-build-31ca698f2017/output/x86_64-apple-darwin/bitcoin-31ca698f2017-x86_64-apple-darwin.tar.gz 3e943a6e11930ac1dcd7339bcdfbcf310b09f03d1e2544fce314e656b3552b7a guix-build-31ca698f2017/output/x86_64-linux-gnu/SHA256SUMS.part 0e0155ce76ffe8af19a74ecb74b813ce7ca4817bf3535a2b5813ae9e229804dc guix-build-31ca698f2017/output/x86_64-linux-gnu/bitcoin-31ca698f2017-x86_64-linux-gnu-debug.tar.gz b66f9a25e963db98b3b8eed79e6d280d0ae7902d1f7e2cdee8481bacfc94ed96 guix-build-31ca698f2017/output/x86_64-linux-gnu/bitcoin-31ca698f2017-x86_64-linux-gnu.tar.gz bdc9cdd0ba739c3aba3d355f6e9ea88af99b09dd666cf40c7986212b355d2a09 guix-build-31ca698f2017/output/x86_64-w64-mingw32/SHA256SUMS.part 815d4b70b257932a3e32e14d8bb53960efd5e71500e7349ac53d13303f4b5335 guix-build-31ca698f2017/output/x86_64-w64-mingw32/bitcoin-31ca698f2017-win64-debug.zip 4b248df85b0b5de00631756839bc53e9e64c764b4da900afad34f871e2afe995 guix-build-31ca698f2017/output/x86_64-w64-mingw32/bitcoin-31ca698f2017-win64-setup-unsigned.exe b26008ed9fa0db1d32220087c2f0828788f0f9f784c981622f5e76c63c98fb9a guix-build-31ca698f2017/output/x86_64-w64-mingw32/bitcoin-31ca698f2017-win64-unsigned.tar.gz 4dd03a68ac2d742681d6b8c42b15e6f9d4ce46084ff18ebb0f1313109a867205 guix-build-31ca698f2017/output/x86_64-w64-mingw32/bitcoin-31ca698f2017-win64.zip ``` ACKs for top commit: jarolrod: ACK 31ca698f2017c57aad8f9839a582c6864ede92bd Tree-SHA512: 596c2979e070d3574c744ac89961ba157e9e01c2e1a3ce7d33cc369ad2cf1c2e16aa23209b382667dbd100545b5c17530771855b380eeb7345deebfa695a3be6
-rw-r--r--.cirrus.yml6
-rw-r--r--build_msvc/README.md4
-rw-r--r--depends/packages/qt.mk16
-rw-r--r--depends/patches/qt/dont_use_avx_android_x86_64.patch32
-rw-r--r--depends/patches/qt/fix_android_jni_static.patch2
-rw-r--r--depends/patches/qt/fix_bigsur_style.patch90
-rw-r--r--depends/patches/qt/fix_limits_header.patch49
-rw-r--r--depends/patches/qt/use_android_ndk23.patch2
-rw-r--r--doc/dependencies.md2
-rw-r--r--src/qt/bitcoingui.cpp6
-rw-r--r--src/qt/walletmodel.cpp5
-rw-r--r--src/qt/walletmodel.h1
12 files changed, 36 insertions, 179 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index 9b0e2dbd2e..2e81177d3a 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -85,9 +85,9 @@ task:
CI_VCPKG_TAG: '2021.05.12'
VCPKG_DOWNLOADS: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\downloads'
VCPKG_DEFAULT_BINARY_CACHE: 'C:\Users\ContainerAdministrator\AppData\Local\vcpkg\archives'
- QT_DOWNLOAD_URL: 'https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.zip'
- QT_LOCAL_PATH: 'C:\qt-everywhere-src-5.15.2.zip'
- QT_SOURCE_DIR: 'C:\qt-everywhere-src-5.15.2'
+ QT_DOWNLOAD_URL: 'https://download.qt.io/official_releases/qt/5.15/5.15.3/single/qt-everywhere-opensource-src-5.15.3.zip'
+ QT_LOCAL_PATH: 'C:\qt-everywhere-opensource-src-5.15.3.zip'
+ QT_SOURCE_DIR: 'C:\qt-everywhere-src-5.15.3'
QTBASEDIR: 'C:\Qt_static'
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"'
IgnoreWarnIntDirInTempDetected: 'true'
diff --git a/build_msvc/README.md b/build_msvc/README.md
index cabe4d55ec..7feee6b766 100644
--- a/build_msvc/README.md
+++ b/build_msvc/README.md
@@ -28,7 +28,7 @@ Qt
---------------------
To build Bitcoin Core with the GUI, a static build of Qt is required.
-1. Download a single ZIP archive of Qt source code from https://download.qt.io/official_releases/qt/ (e.g., [`qt-everywhere-src-5.15.2.zip`](https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.zip)), and expand it into a dedicated folder. The following instructions assume that this folder is `C:\dev\qt-source`.
+1. Download a single ZIP archive of Qt source code from https://download.qt.io/official_releases/qt/ (e.g., [`qt-everywhere-opensource-src-5.15.3.zip`](https://download.qt.io/official_releases/qt/5.15/5.15.3/single/qt-everywhere-opensource-src-5.15.3.zip)), and expand it into a dedicated folder. The following instructions assume that this folder is `C:\dev\qt-source`.
2. Open "x64 Native Tools Command Prompt for VS 2019", and input the following commands:
```cmd
@@ -83,4 +83,4 @@ If is it enabled then in the output `Dynamic base` will be listed in the `DLL ch
Terminal Server Aware
```
-This may not disable all stack randomization as versions of windows employ additional stack randomization protections. These protections must be turned off in the OS configuration. \ No newline at end of file
+This may not disable all stack randomization as versions of windows employ additional stack randomization protections. These protections must be turned off in the OS configuration.
diff --git a/depends/packages/qt.mk b/depends/packages/qt.mk
index 9cdfd21d2c..e5fb135da0 100644
--- a/depends/packages/qt.mk
+++ b/depends/packages/qt.mk
@@ -1,25 +1,25 @@
package=qt
-$(package)_version=5.15.2
+$(package)_version=5.15.3
$(package)_download_path=https://download.qt.io/official_releases/qt/5.15/$($(package)_version)/submodules
-$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
+$(package)_suffix=everywhere-opensource-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
-$(package)_sha256_hash=909fad2591ee367993a75d7e2ea50ad4db332f05e1c38dd7a5a274e156a4e0f8
+$(package)_sha256_hash=26394ec9375d52c1592bd7b689b1619c6b8dbe9b6f91fdd5c355589787f3a0b6
$(package)_linux_dependencies=freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm
$(package)_qt_libs=corelib network widgets gui plugins testlib
$(package)_linguist_tools = lrelease lupdate lconvert
$(package)_patches = qt.pro qttools_src.pro
$(package)_patches += fix_qt_pkgconfig.patch mac-qmake.conf fix_no_printer.patch no-xlib.patch
-$(package)_patches += dont_use_avx_android_x86_64.patch dont_hardcode_x86_64.patch fix_montery_include.patch
+$(package)_patches += dont_hardcode_x86_64.patch fix_montery_include.patch
$(package)_patches += fix_android_jni_static.patch dont_hardcode_pwd.patch
$(package)_patches += qtbase-moc-ignore-gcc-macro.patch fix_limits_header.patch
-$(package)_patches += fix_bigsur_style.patch use_android_ndk23.patch
+$(package)_patches += use_android_ndk23.patch
$(package)_patches += rcc_hardcode_timestamp.patch
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
-$(package)_qttranslations_sha256_hash=d5788e86257b21d5323f1efd94376a213e091d1e5e03b45a95dd052b5f570db8
+$(package)_qttranslations_sha256_hash=5d7869f670a135ad0986e266813b9dd5bbae2b09577338f9cdf8904d4af52db0
$(package)_qttools_file_name=qttools-$($(package)_suffix)
-$(package)_qttools_sha256_hash=c189d0ce1ff7c739db9a3ace52ac3e24cb8fd6dbf234e49f075249b38f43c1cc
+$(package)_qttools_sha256_hash=463b2fe71a085e7ab4e39333ae360ab0ec857b966d7a08f752c427e5df55f90d
$(package)_extra_sources = $($(package)_qttranslations_file_name)
$(package)_extra_sources += $($(package)_qttools_file_name)
@@ -235,12 +235,10 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/fix_no_printer.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_android_jni_static.patch && \
patch -p1 -i $($(package)_patch_dir)/no-xlib.patch && \
- patch -p1 -i $($(package)_patch_dir)/dont_use_avx_android_x86_64.patch && \
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_x86_64.patch && \
patch -p1 -i $($(package)_patch_dir)/qtbase-moc-ignore-gcc-macro.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_limits_header.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_montery_include.patch && \
- patch -p1 -i $($(package)_patch_dir)/fix_bigsur_style.patch && \
patch -p1 -i $($(package)_patch_dir)/use_android_ndk23.patch && \
patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
diff --git a/depends/patches/qt/dont_use_avx_android_x86_64.patch b/depends/patches/qt/dont_use_avx_android_x86_64.patch
deleted file mode 100644
index b12ac8f4d0..0000000000
--- a/depends/patches/qt/dont_use_avx_android_x86_64.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Android: don't use avx and avx2 when building for Android x86_64
-
-AVX and AVX2 are not supported on x86_64 ABI.
-See:
- - https://developer.android.com/ndk/guides/abis#86-64
- - https://bugreports.qt.io/browse/QTBUG-86785
-
-Upstream commits:
- - Qt 6.0: ff1a44be33f4bc05d502a2ca49171e0408992f61
- - Qt 5.15: 8b2cc0f6deb038a4c9d4f0d9b690c7726bd809a9
-
-
---- old/qtbase/configure.json
-+++ new/qtbase/configure.json
-@@ -1098,7 +1098,7 @@
- },
- "avx": {
- "label": "AVX",
-- "condition": "features.sse4_2 && tests.avx",
-+ "condition": "features.sse4_2 && tests.avx && (!config.android || !arch.x86_64)",
- "output": [
- "privateConfig",
- { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX", "value": 1 }
-@@ -1114,7 +1114,7 @@
- },
- "avx2": {
- "label": "AVX2",
-- "condition": "features.avx && tests.avx2",
-+ "condition": "features.avx && tests.avx2 && (!config.android || !arch.x86_64)",
- "output": [
- "privateConfig",
- "privateFeature",
diff --git a/depends/patches/qt/fix_android_jni_static.patch b/depends/patches/qt/fix_android_jni_static.patch
index bb64661761..22a4d5ab0e 100644
--- a/depends/patches/qt/fix_android_jni_static.patch
+++ b/depends/patches/qt/fix_android_jni_static.patch
@@ -1,6 +1,6 @@
--- old/qtbase/src/plugins/platforms/android/androidjnimain.cpp
+++ new/qtbase/src/plugins/platforms/android/androidjnimain.cpp
-@@ -914,6 +914,14 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/)
+@@ -934,6 +934,14 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/)
__android_log_print(ANDROID_LOG_FATAL, "Qt", "registerNatives failed");
return -1;
}
diff --git a/depends/patches/qt/fix_bigsur_style.patch b/depends/patches/qt/fix_bigsur_style.patch
deleted file mode 100644
index 0f6c848bb0..0000000000
--- a/depends/patches/qt/fix_bigsur_style.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-Fix rendering in macOS BigSur
-
-See: https://bugreports.qt.io/browse/QTBUG-86513.
-
-Upstream commits (combined in this patch):
- - Qt 6.0: 40fb97e97f550b8afd13ecc3a038d9d0c2d82bbb
- - Qt 6.0: 3857f104cac127f62e64e55a20613f0ac2e6b843
- - Qt 6.1: abee4cdd5925a8513f51784754fca8fa35031732
-
---- old/qtbase/src/plugins/styles/mac/qmacstyle_mac.mm
-+++ new/qtbase/src/plugins/styles/mac/qmacstyle_mac.mm
-@@ -3870,6 +3870,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
- const auto cs = d->effectiveAquaSizeConstrain(opt, w);
- // Extra hacks to get the proper pressed appreance when not selected or selected and inactive
- const bool needsInactiveHack = (!isActive && isSelected);
-+ const bool isBigSurOrAbove = QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSBigSur;
- const auto ct = !needsInactiveHack && (isSelected || tp == QStyleOptionTab::OnlyOneTab) ?
- QMacStylePrivate::Button_PushButton :
- QMacStylePrivate::Button_PopupButton;
-@@ -3878,6 +3879,12 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
- auto *pb = static_cast<NSButton *>(d->cocoaControl(cw));
-
- auto vOffset = isPopupButton ? 1 : 2;
-+ if (isBigSurOrAbove) {
-+ // Make it 1, otherwise, offset is very visible compared
-+ // to selected tab (which is not a popup button).
-+ vOffset = 1;
-+ }
-+
- if (tabDirection == QMacStylePrivate::East)
- vOffset -= 1;
- const auto outerAdjust = isPopupButton ? 1 : 4;
-@@ -3894,9 +3901,22 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
- frameRect = frameRect.adjusted(-innerAdjust, 0, outerAdjust, 0);
- else
- frameRect = frameRect.adjusted(-outerAdjust, 0, innerAdjust, 0);
-+
-+ if (isSelected && isBigSurOrAbove) {
-+ // 1 pixed of 'roundness' is still visible on the right
-+ // (the left is OK, it's rounded).
-+ frameRect = frameRect.adjusted(0, 0, 1, 0);
-+ }
-+
- break;
- case QStyleOptionTab::Middle:
- frameRect = frameRect.adjusted(-innerAdjust, 0, innerAdjust, 0);
-+
-+ if (isSelected && isBigSurOrAbove) {
-+ // 1 pixel of 'roundness' is still visible on both
-+ // sides - left and right.
-+ frameRect = frameRect.adjusted(-1, 0, 1, 0);
-+ }
- break;
- case QStyleOptionTab::End:
- // Pressed state hack: tweak adjustments in preparation for flip below
-@@ -3904,6 +3924,11 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
- frameRect = frameRect.adjusted(-innerAdjust, 0, outerAdjust, 0);
- else
- frameRect = frameRect.adjusted(-outerAdjust, 0, innerAdjust, 0);
-+
-+ if (isSelected && isBigSurOrAbove) {
-+ // 1 pixel of 'roundness' is still visible on the left.
-+ frameRect = frameRect.adjusted(-1, 0, 0, 0);
-+ }
- break;
- case QStyleOptionTab::OnlyOneTab:
- frameRect = frameRect.adjusted(-outerAdjust, 0, outerAdjust, 0);
-@@ -3951,7 +3976,10 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
- NSPopUpArrowPosition oldPosition = NSPopUpArrowAtCenter;
- NSPopUpButtonCell *pbCell = nil;
- auto rAdjusted = r;
-- if (isPopupButton && tp == QStyleOptionTab::OnlyOneTab) {
-+ if (isPopupButton && (tp == QStyleOptionTab::OnlyOneTab || isBigSurOrAbove)) {
-+ // Note: starting from macOS BigSur NSPopupButton has this
-+ // arrow 'button' in a different place and it became
-+ // quite visible 'in between' inactive tabs.
- pbCell = static_cast<NSPopUpButtonCell *>(pb.cell);
- oldPosition = pbCell.arrowPosition;
- pbCell.arrowPosition = NSPopUpNoArrow;
-@@ -3959,6 +3987,10 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
- // NSPopUpButton in this state is smaller.
- rAdjusted.origin.x -= 3;
- rAdjusted.size.width += 6;
-+ if (isBigSurOrAbove) {
-+ if (tp == QStyleOptionTab::End)
-+ rAdjusted.origin.x -= 2;
-+ }
- }
- }
-
diff --git a/depends/patches/qt/fix_limits_header.patch b/depends/patches/qt/fix_limits_header.patch
index cb5a8cd1b5..258128c0ca 100644
--- a/depends/patches/qt/fix_limits_header.patch
+++ b/depends/patches/qt/fix_limits_header.patch
@@ -1,46 +1,9 @@
Fix compiling with GCC 11
-See: https://bugreports.qt.io/browse/QTBUG-90395.
+Upstream:
+ - bug report: https://bugreports.qt.io/browse/QTBUG-89977
+ - fix in Qt 6.1: 813a928c7c3cf98670b6043149880ed5c955efb9
-Upstream commits:
- - Qt 5.15 -- unavailable as open source
- - Qt 6.0: b2af6332ea37e45ab230a7a5d2d278f86d961b83
- - Qt 6.1: 9c56d4da2ff631a8c1c30475bd792f6c86bda53c
-
---- old/qtbase/src/corelib/global/qendian.h
-+++ new/qtbase/src/corelib/global/qendian.h
-@@ -44,6 +44,8 @@
- #include <QtCore/qfloat16.h>
- #include <QtCore/qglobal.h>
-
-+#include <limits>
-+
- // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems
- #include <stdlib.h>
- #include <string.h>
-
---- old/qtbase/src/corelib/global/qfloat16.h
-+++ new/qtbase/src/corelib/global/qfloat16.h
-@@ -43,6 +43,7 @@
-
- #include <QtCore/qglobal.h>
- #include <QtCore/qmetatype.h>
-+#include <limits>
- #include <string.h>
-
- #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)
-
---- old/qtbase/src/tools/moc/generator.cpp
-+++ new/qtbase/src/tools/moc/generator.cpp
-@@ -40,6 +40,8 @@
- #include <QtCore/qplugin.h>
- #include <QtCore/qstringview.h>
-
-+#include <limits>
-+
- #include <math.h>
- #include <stdio.h>
-
--- old/qtbase/src/corelib/text/qbytearraymatcher.h
+++ new/qtbase/src/corelib/text/qbytearraymatcher.h
@@ -42,6 +42,8 @@
@@ -52,6 +15,12 @@ Upstream commits:
QT_BEGIN_NAMESPACE
+
+Upstream fix and backports:
+ - Qt 6.1: 3eab20ad382569cb2c9e6ccec2322c3d08c0f716
+ - Qt 6.2: 380294a5971da85010a708dc23b0edec192cbf27
+ - Qt 6.3: 2b2b3155d9f6ba1e4f859741468fbc47db09292b
+
--- old/qtbase/src/corelib/tools/qoffsetstringarray_p.h
+++ new/qtbase/src/corelib/tools/qoffsetstringarray_p.h
@@ -55,6 +55,7 @@
diff --git a/depends/patches/qt/use_android_ndk23.patch b/depends/patches/qt/use_android_ndk23.patch
index 85b8690218..f22367d527 100644
--- a/depends/patches/qt/use_android_ndk23.patch
+++ b/depends/patches/qt/use_android_ndk23.patch
@@ -2,7 +2,7 @@ Use Android NDK r23 LTS
--- old/qtbase/mkspecs/features/android/default_pre.prf
+++ new/qtbase/mkspecs/features/android/default_pre.prf
-@@ -73,7 +73,7 @@ else: equals(QT_ARCH, x86_64): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/x86_64-linux-
+@@ -76,7 +76,7 @@ else: equals(QT_ARCH, x86_64): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/x86_64-linux-
else: equals(QT_ARCH, arm64-v8a): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/aarch64-linux-android-
else: CROSS_COMPILE = $$NDK_LLVM_PATH/bin/arm-linux-androideabi-
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 99ff26f457..57d2b994df 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -20,7 +20,7 @@ These are the dependencies currently used by Bitcoin Core. You can find instruct
| PCRE | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
| Python (tests) | | [3.6](https://www.python.org/downloads) | | | |
| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | |
-| Qt | [5.15.2](https://download.qt.io/official_releases/qt/) | [5.9.5](https://github.com/bitcoin/bitcoin/issues/20104) | No | | |
+| Qt | [5.15.3](https://download.qt.io/official_releases/qt/) | [5.9.5](https://github.com/bitcoin/bitcoin/issues/20104) | No | | |
| SQLite | [3.32.1](https://sqlite.org/download.html) | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | | | |
| XCB | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Linux only) |
| systemtap ([tracing](tracing.md))| [4.5](https://sourceware.org/systemtap/ftp/releases/) | | | | |
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp
index 7c22880dd1..548f77c74d 100644
--- a/src/qt/bitcoingui.cpp
+++ b/src/qt/bitcoingui.cpp
@@ -1316,6 +1316,12 @@ void BitcoinGUI::setEncryptionStatus(int status)
{
switch(status)
{
+ case WalletModel::NoKeys:
+ labelWalletEncryptionIcon->hide();
+ encryptWalletAction->setChecked(false);
+ changePassphraseAction->setEnabled(false);
+ encryptWalletAction->setEnabled(false);
+ break;
case WalletModel::Unencrypted:
labelWalletEncryptionIcon->hide();
encryptWalletAction->setChecked(false);
diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp
index 5ee32e79d5..13579e644e 100644
--- a/src/qt/walletmodel.cpp
+++ b/src/qt/walletmodel.cpp
@@ -308,6 +308,11 @@ WalletModel::EncryptionStatus WalletModel::getEncryptionStatus() const
{
if(!m_wallet->isCrypted())
{
+ // A previous bug allowed for watchonly wallets to be encrypted (encryption keys set, but nothing is actually encrypted).
+ // To avoid misrepresenting the encryption status of such wallets, we only return NoKeys for watchonly wallets that are unencrypted.
+ if (m_wallet->privateKeysDisabled()) {
+ return NoKeys;
+ }
return Unencrypted;
}
else if(m_wallet->isLocked())
diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h
index ad1239ccdc..7f941142ea 100644
--- a/src/qt/walletmodel.h
+++ b/src/qt/walletmodel.h
@@ -72,6 +72,7 @@ public:
enum EncryptionStatus
{
+ NoKeys, // wallet->IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS)
Unencrypted, // !wallet->IsCrypted()
Locked, // wallet->IsCrypted() && wallet->IsLocked()
Unlocked // wallet->IsCrypted() && !wallet->IsLocked()