From 7568c73062c7c98a8a8b217e794aa3503fa3420b Mon Sep 17 00:00:00 2001 From: deepend Date: Wed, 18 Feb 2026 01:30:45 -0700 Subject: [PATCH] Updated the Network List Connect button icon on GTK3 to use the bundled zc-menu-connect asset, which avoids theme-dependent missing network-connect behavior. Added a Help menu _Update entry with a dedicated zc-menu-update icon constant, so Windows builds can display an appropriate update icon in the Help menu. Extended icon mapping/fallback logic so emoji/update icons resolve correctly across stock/icon-name paths (zc-menu-emoji, zc-menu-update) including GTK2 stock fallback compatibility. Added zc-menu-emoji to the input entry fallback icon list so the emoji affordance has a deterministic built-in fallback when theme emoji icons are missing. Added new update and emoji icon assets in both SVG and PNG for light/dark variants, and registered the PNG resources in the gresource manifest for runtime loading. --- data/icons/menu/dark/emoji.png | Bin 0 -> 536 bytes data/icons/menu/dark/emoji.svg | 1 + data/icons/menu/dark/update.png | Bin 0 -> 499 bytes data/icons/menu/dark/update.svg | 1 + data/icons/menu/light/emoji.png | Bin 0 -> 589 bytes data/icons/menu/light/emoji.svg | 1 + data/icons/menu/light/update.png | Bin 0 -> 503 bytes data/icons/menu/light/update.svg | 1 + data/zoitechat.gresource.xml | 4 ++++ src/fe-gtk/gtkutil.c | 6 ++++++ src/fe-gtk/maingui.c | 1 + src/fe-gtk/menu.c | 2 ++ src/fe-gtk/servlistgui.c | 2 +- 13 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 data/icons/menu/dark/emoji.png create mode 100644 data/icons/menu/dark/emoji.svg create mode 100644 data/icons/menu/dark/update.png create mode 100644 data/icons/menu/dark/update.svg create mode 100644 data/icons/menu/light/emoji.png create mode 100644 data/icons/menu/light/emoji.svg create mode 100644 data/icons/menu/light/update.png create mode 100644 data/icons/menu/light/update.svg diff --git a/data/icons/menu/dark/emoji.png b/data/icons/menu/dark/emoji.png new file mode 100644 index 0000000000000000000000000000000000000000..c95918dd02f5ce754b03b94f79bcd5d98922c5df GIT binary patch literal 536 zcmV+z0_XjSP)Y+$ z)oN8t{H=#vF9;zfwd%bB$P(a8oL5yB&<*00*MlI4ZzM?5^dUv|i5-0z_mU4jJ^N|v z`Pdy~eBo49AD<{a_Jni(eS|;=QPZloS8BfDOzey(GmzmU-Jg09gZeXJ7$&Ahi%YF~ zYv$#fh7DNf8(~LZD;V_GiWU{ zy7xAq%J(nY&Dqopa_=snrLZ%F0tezXIH^@{ztr5|Ol*_ftzi(%+B;Y5f(~NHa8CE9Ru47tW~$X{Iz#{fNs>Hpi2Q6; zW!$!gS=rOb_~NMy=ekO>dCvKd5d{T0oesBqCRhe#!8wBz(Ad(Bzh1n2D@0K=ZsOJh a|AJpC#ljia%?}6w0000 \ No newline at end of file diff --git a/data/icons/menu/dark/update.png b/data/icons/menu/dark/update.png new file mode 100644 index 0000000000000000000000000000000000000000..83680b92ff283bda232c6947172218af8fdda593 GIT binary patch literal 499 zcmVh~+^@bKrTpZyzX};bvquyT`I8q!9<^@#Zn#H{Y8X;D1|D z6i>~Yn14%(G2R!EZ2)%wtO7V8xu&Y$N#0gf$+B$2a+lgbRlO8rd@dr7>!%rjDS&~h zHfd+hxo=J2T42T)4^`E`Uqocfd%v1xnJIV%U}z+&x~!^cgIj7YA%ty`TdMkYI-Nf3 z_xnFvwX)P>#|0f5T@CQT34?GTYuTx{1()ND2z&ztC+tJq223nAp@CcBG_F%AIS z1#q0_d6*L}+v002ovPDHLkV1ksO-M;_; literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/update.svg b/data/icons/menu/dark/update.svg new file mode 100644 index 00000000..61794d66 --- /dev/null +++ b/data/icons/menu/dark/update.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/menu/light/emoji.png b/data/icons/menu/light/emoji.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fe5cdb234a367e05c12f9c81e6fe3aa86c007c GIT binary patch literal 589 zcmV-T0Ca6c9+e%lT=RbIn*MaHR$D(HkjZ2YD{}1J^($g>I>R5BjA5 zaev2@0uVxIZ-Ppt(k48%jiw(I%r1A}?T7Hru<_mxIEGJKJ`>+zJuK$CMU#``qaBN; zPpX1&><9;ow=DSj&4)MZKHPp{!{UMnV<`@9KDN!xEqZ73(^U5vrh1PA51OYc2*e>yII!7z;A&lp{krfI4q;%l}l<~B2o!Dv!= z_`){V8eYq?;k2&n8$E;jcb&`Sl5EdxRj!9h;51Knki+}7!>?4U)gS#m1EH#Ff}Ou^ b_!sN}tv|ZzgE@_(00000NkvXXu0mjfhxQd0 literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/emoji.svg b/data/icons/menu/light/emoji.svg new file mode 100644 index 00000000..989062b8 --- /dev/null +++ b/data/icons/menu/light/emoji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/menu/light/update.png b/data/icons/menu/light/update.png new file mode 100644 index 0000000000000000000000000000000000000000..c06163f42d33c33ecc7d54c08503131e3e4ca3ef GIT binary patch literal 503 zcmVf3tflvI)X!B&|w{SP0_6Eh|^7jikz-p!R9> ze=wZ{TMH2z!N&GVPmtR^-ug$;O;x=I+yEAUPrwD>J8)f9XTamR0ZEda&GY<;s@^HD{s6y$)v88SC&0HV zcN+at6vaysvE~oJdJqH)S(X`tP2gi$=K<&DBt%hUl-Gg&cs#y68jXH6$pI@37XBOq z5qV&gMda>@W+s!#tyZgb-U8SW5ho18rJ6yz-8O@+0dLbZt*F)*4u__Dzhs(<$R*cx zZP?y11J`vgmbJV52O@IWRQSICwPrAz&GtpaKE|C+C$PIb&kxE!*NEeIRaM)-cCXj_ zS$i-T48GVLRlPEuPJdW|7z2yt*?f3ohcFC%&-2!bqId{g z1zu%Y_M(GW%WJacGdc5POh9h0mm`u_OpIQI_002ovPDHLkV1iJ}>N)@b literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/update.svg b/data/icons/menu/light/update.svg new file mode 100644 index 00000000..b423fa58 --- /dev/null +++ b/data/icons/menu/light/update.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/zoitechat.gresource.xml b/data/zoitechat.gresource.xml index b85d7163..93f45143 100644 --- a/data/zoitechat.gresource.xml +++ b/data/zoitechat.gresource.xml @@ -47,6 +47,8 @@ icons/menu/light/next.png icons/menu/light/help.png icons/menu/light/about.png + icons/menu/light/update.png + icons/menu/light/emoji.png icons/menu/dark/new.png icons/menu/dark/network-list.png @@ -74,5 +76,7 @@ icons/menu/dark/next.png icons/menu/dark/help.png icons/menu/dark/about.png + icons/menu/dark/update.png + icons/menu/dark/emoji.png diff --git a/src/fe-gtk/gtkutil.c b/src/fe-gtk/gtkutil.c index fd3c3617..21e53573 100644 --- a/src/fe-gtk/gtkutil.c +++ b/src/fe-gtk/gtkutil.c @@ -96,6 +96,7 @@ gtkutil_menu_custom_icon_from_stock (const char *stock_name) { "gtk-go-forward", "zc-menu-next" }, { "gtk-help", "zc-menu-help" }, { "gtk-about", "zc-menu-about" }, + { "gtk-convert", "zc-menu-emoji" }, }; size_t i; @@ -143,6 +144,9 @@ gtkutil_menu_custom_icon_from_icon_name (const char *icon_name) { "go-next", "zc-menu-next" }, { "help-browser", "zc-menu-help" }, { "help-about", "zc-menu-about" }, + { "face-smile", "zc-menu-emoji" }, + { "insert-emoticon", "zc-menu-emoji" }, + { "software-update-available", "zc-menu-update" }, { "network-workgroup", "zc-menu-chanlist" }, }; size_t i; @@ -195,6 +199,8 @@ gtkutil_stock_from_menu_custom_icon (const char *custom_icon) { "zc-menu-next", GTK_STOCK_GO_FORWARD }, { "zc-menu-help", GTK_STOCK_HELP }, { "zc-menu-about", GTK_STOCK_ABOUT }, + { "zc-menu-emoji", GTK_STOCK_CONVERT }, + { "zc-menu-update", GTK_STOCK_REFRESH }, }; size_t i; diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index 20dad6b8..522bf769 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -3545,6 +3545,7 @@ mg_create_entry (session *sess, GtkWidget *box) "face-smile", "insert-emoticon-symbolic", "insert-emoticon", + "zc-menu-emoji", NULL }; const char *emoji_fallback_icon_name; diff --git a/src/fe-gtk/menu.c b/src/fe-gtk/menu.c index 32364b53..3c1275b9 100644 --- a/src/fe-gtk/menu.c +++ b/src/fe-gtk/menu.c @@ -2014,6 +2014,7 @@ menu_about (GtkWidget *wid, gpointer sess) #define ICON_FIND "zc-menu-find" #define ICON_HELP "zc-menu-help" #define ICON_ABOUT "zc-menu-about" +#define ICON_UPDATE "zc-menu-update" static struct mymenu mymenu[] = { {N_("_ZoiteChat"), 0, 0, M_NEWMENU, MENU_ID_ZOITECHAT, 0, 1}, @@ -2109,6 +2110,7 @@ static struct mymenu mymenu[] = { {N_("_Help"), 0, 0, M_NEWMENU, 0, 0, 1}, /* 74 */ {N_("_Contents"), menu_docs, ICON_HELP, M_MENUSTOCK, 0, 0, 1, GDK_KEY_F1}, + {N_("_Update"), menu_docs, ICON_UPDATE, M_MENUSTOCK, 0, 0, 1}, {N_("_About"), menu_about, ICON_ABOUT, M_MENUSTOCK, 0, 0, 1}, {0, 0, 0, M_END, 0, 0, 0}, diff --git a/src/fe-gtk/servlistgui.c b/src/fe-gtk/servlistgui.c index 2a014be6..230238f7 100644 --- a/src/fe-gtk/servlistgui.c +++ b/src/fe-gtk/servlistgui.c @@ -40,7 +40,7 @@ #define SERVLIST_Y_PADDING 0 /* vertical padding in the network editor */ #if HAVE_GTK3 -#define ICON_SERVLIST_CONNECT "network-connect" +#define ICON_SERVLIST_CONNECT "zc-menu-connect" #define ICON_SERVLIST_ADD "list-add" #define ICON_SERVLIST_REMOVE "list-remove" #define ICON_SERVLIST_CLOSE "window-close"