Standardized GTK3 menu-related icon constants to the bundled zc-menu-* namespace so menu actions stop depending on mixed system-theme icon names (edit-copy, view-refresh, etc.) and instead use the same internal set. This was updated in channel list, plugin manager, URL grabber, and spell-entry menu definitions.

Updated GTK3 icon rendering paths in affected UI helpers to call gtkutil_image_new_from_stock(...), which is the path that resolves zc-menu-* resources correctly and consistently from data/icons/menu (instead of raw theme lookup).

Added new icons to the shared bundled menu icon set (light/dark) for copy, delete, add, remove, spell-check, and refresh, and registered them in the GResource manifest so they are always available at runtime.
This commit is contained in:
2026-02-17 23:56:49 -07:00
parent bc2b1bd509
commit ebf695abdf
17 changed files with 60 additions and 12 deletions

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="4.8" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M8 5.8v4.4M5.8 8h4.4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 281 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M6 4.5h6.5v8H6z" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M3.5 2.5H10v1.8" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/><path d="M3.5 2.5v8.8H5.3" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 383 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M5.2 5.3h5.6v7.2H5.2z" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M4 5.3h8" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/><path d="M6.3 3.7h3.4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/><path d="M7.1 6.6v4.6M8.9 6.6v4.6" stroke="#e5e7eb" stroke-width="1.1" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 449 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M12.8 7.4A4.8 4.8 0 1 0 8 12.8" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round"/><path d="M13 3.5v3.7H9.3" fill="none" stroke="#e5e7eb" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 346 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="4.8" fill="none" stroke="#e5e7eb" stroke-width="1.3"/><path d="M5.8 8h4.4" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 271 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M4 4.2h4M6 4.2v7.4M3.2 7.2h5.6" fill="none" stroke="#e5e7eb" stroke-width="1.2" stroke-linecap="round"/><path d="m8.9 9.3 1.5 1.5 2.8-3" fill="none" stroke="#e5e7eb" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 353 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="4.8" fill="none" stroke="#1f2937" stroke-width="1.3"/><path d="M8 5.8v4.4M5.8 8h4.4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 281 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M6 4.5h6.5v8H6z" fill="none" stroke="#1f2937" stroke-width="1.3"/><path d="M3.5 2.5H10v1.8" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/><path d="M3.5 2.5v8.8H5.3" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 383 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M5.2 5.3h5.6v7.2H5.2z" fill="none" stroke="#1f2937" stroke-width="1.3"/><path d="M4 5.3h8" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/><path d="M6.3 3.7h3.4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/><path d="M7.1 6.6v4.6M8.9 6.6v4.6" stroke="#1f2937" stroke-width="1.1" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 449 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M12.8 7.4A4.8 4.8 0 1 0 8 12.8" fill="none" stroke="#1f2937" stroke-width="1.4" stroke-linecap="round"/><path d="M13 3.5v3.7H9.3" fill="none" stroke="#1f2937" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 346 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<circle cx="8" cy="8" r="4.8" fill="none" stroke="#1f2937" stroke-width="1.3"/><path d="M5.8 8h4.4" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 271 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true">
<path d="M4 4.2h4M6 4.2v7.4M3.2 7.2h5.6" fill="none" stroke="#1f2937" stroke-width="1.2" stroke-linecap="round"/><path d="m8.9 9.3 1.5 1.5 2.8-3" fill="none" stroke="#1f2937" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 353 B

View File

@@ -33,7 +33,13 @@
<file alias="menu/light/chanlist.svg">icons/menu/light/chanlist.svg</file>
<file alias="menu/light/preferences.svg">icons/menu/light/preferences.svg</file>
<file alias="menu/light/clear.svg">icons/menu/light/clear.svg</file>
<file alias="menu/light/copy.svg">icons/menu/light/copy.svg</file>
<file alias="menu/light/delete.svg">icons/menu/light/delete.svg</file>
<file alias="menu/light/add.svg">icons/menu/light/add.svg</file>
<file alias="menu/light/remove.svg">icons/menu/light/remove.svg</file>
<file alias="menu/light/spell-check.svg">icons/menu/light/spell-check.svg</file>
<file alias="menu/light/save.svg">icons/menu/light/save.svg</file>
<file alias="menu/light/refresh.svg">icons/menu/light/refresh.svg</file>
<file alias="menu/light/search.svg">icons/menu/light/search.svg</file>
<file alias="menu/light/find.svg">icons/menu/light/find.svg</file>
<file alias="menu/light/help.svg">icons/menu/light/help.svg</file>
@@ -51,7 +57,13 @@
<file alias="menu/dark/chanlist.svg">icons/menu/dark/chanlist.svg</file>
<file alias="menu/dark/preferences.svg">icons/menu/dark/preferences.svg</file>
<file alias="menu/dark/clear.svg">icons/menu/dark/clear.svg</file>
<file alias="menu/dark/copy.svg">icons/menu/dark/copy.svg</file>
<file alias="menu/dark/delete.svg">icons/menu/dark/delete.svg</file>
<file alias="menu/dark/add.svg">icons/menu/dark/add.svg</file>
<file alias="menu/dark/remove.svg">icons/menu/dark/remove.svg</file>
<file alias="menu/dark/spell-check.svg">icons/menu/dark/spell-check.svg</file>
<file alias="menu/dark/save.svg">icons/menu/dark/save.svg</file>
<file alias="menu/dark/refresh.svg">icons/menu/dark/refresh.svg</file>
<file alias="menu/dark/search.svg">icons/menu/dark/search.svg</file>
<file alias="menu/dark/find.svg">icons/menu/dark/find.svg</file>
<file alias="menu/dark/help.svg">icons/menu/dark/help.svg</file>