From f6f518eacc7b5120d26bad129caedeebe55de019 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Mon, 22 Dec 2025 00:54:50 -0800 Subject: [PATCH] Use lock emoji to indicate write-protected recent disk images. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes the menu look a little more visually distinct and obvious when a recent disk image item is set to write-protected mode. While an icon does exist, I have found it to be small and visually indistinguisable enough that I didn't even know it existed before I dug into the code. This prefixes image names with U+1F512 LOCK (🔒). My first iteration also added U+1F513 OPEN LOCK (🔓) to read-write image names, but I quickly found that to be too visually distracting and confusing next to the write-protect symbols, so I have opted to only keep the first one. This might have a caveat that the symbol will fail to show up on systems without the lock emoji somewhere in their font set, but these days, I expect pretty much everyone to be on OSes that come with the full set of emoji fonts anyhow. --- src/qt/qt_mediamenu.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qt/qt_mediamenu.cpp b/src/qt/qt_mediamenu.cpp index b2dcf9c40..c5611ec2e 100644 --- a/src/qt/qt_mediamenu.cpp +++ b/src/qt/qt_mediamenu.cpp @@ -668,7 +668,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type) else fi.setFile(fn); if (!fi.fileName().isEmpty() && (fn.left(5) == "wp://")) { - menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn.right(fn.length() - 5); + menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : "🔒 " + fn.right(fn.length() - 5); imageHistoryUpdatePos->setIcon(getIconWithIndicator(menu_icon, pixmap_size, QIcon::Normal, WriteProtected)); } else { menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn; @@ -696,7 +696,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type) else fi.setFile(fn); if (!fi.fileName().isEmpty() && (fn.left(5) == "wp://")) { - menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn.right(fn.length() - 5); + menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : "🔒 " + fn.right(fn.length() - 5); imageHistoryUpdatePos->setIcon(getIconWithIndicator(menu_icon, pixmap_size, QIcon::Normal, WriteProtected)); } else { menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn; @@ -735,7 +735,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type) else fi.setFile(fn); if (!fi.fileName().isEmpty() && (fn.left(5) == "wp://")) { - menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn.right(fn.length() - 5); + menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : "🔒 " + fn.right(fn.length() - 5); imageHistoryUpdatePos->setIcon(getIconWithIndicator(menu_icon, pixmap_size, QIcon::Normal, WriteProtected)); } else { menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn; @@ -754,7 +754,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type) else fi.setFile(fn); if (!fi.fileName().isEmpty() && (fn.left(5) == "wp://")) { - menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn.right(fn.length() - 5); + menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : "🔒 " + fn.right(fn.length() - 5); imageHistoryUpdatePos->setIcon(getIconWithIndicator(menu_icon, pixmap_size, QIcon::Normal, WriteProtected)); } else { menu_item_name = fi.fileName().isEmpty() ? tr("Reload previous image") : fn;