From 6ce7de23a38bb8f17f0fc7bc4423244cef2e774a Mon Sep 17 00:00:00 2001 From: deepend Date: Wed, 18 Feb 2026 01:16:03 -0700 Subject: [PATCH] Switched menu resource loading to use bundled PNG assets (instead of SVG paths) for zc-menu-* icons, so menu icon resolution is consistent and no longer depends on SVG/icon-theme availability on different platforms (including Win32 builds). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated the GResource manifest so all menu icons now come from data/icons/menu/{light,dark} PNG files and are embedded with to-pixdata preprocessing, ensuring the app uses one unified internal icon set across platforms. Generated and added PNG assets for both light and dark menu icon variants under data/icons/menu/ to back the new resource paths used by the GTK menu code. Fixed menu icon resource detection to fall back from PNG to SVG when probing zc-menu-* entries, so menu item icon lookup no longer fails just because one format is unavailable at runtime. Updated GTK menu icon loading to use gdk_pixbuf_new_from_resource (instead of ..._at_scale) and added explicit fallback order across variant/light and PNG/SVG resources, which addresses the “red no-entry square” missing-icon behavior you reported. Kept compatibility with your previous menu resource setup while making loading more resilient on Win32 and other environments where resource/pixbuf behavior differs. --- data/icons/menu/dark/about.png | Bin 0 -> 498 bytes data/icons/menu/dark/add.png | Bin 0 -> 462 bytes data/icons/menu/dark/chanlist.png | Bin 0 -> 409 bytes data/icons/menu/dark/clear.png | Bin 0 -> 362 bytes data/icons/menu/dark/close.png | Bin 0 -> 445 bytes data/icons/menu/dark/connect.png | Bin 0 -> 399 bytes data/icons/menu/dark/copy.png | Bin 0 -> 330 bytes data/icons/menu/dark/delete.png | Bin 0 -> 305 bytes data/icons/menu/dark/detach.png | Bin 0 -> 343 bytes data/icons/menu/dark/disconnect.png | Bin 0 -> 415 bytes data/icons/menu/dark/find.png | Bin 0 -> 360 bytes data/icons/menu/dark/help.png | Bin 0 -> 579 bytes data/icons/menu/dark/join.png | Bin 0 -> 360 bytes data/icons/menu/dark/load-plugin.png | Bin 0 -> 377 bytes data/icons/menu/dark/network-list.png | Bin 0 -> 409 bytes data/icons/menu/dark/new.png | Bin 0 -> 401 bytes data/icons/menu/dark/next.png | Bin 0 -> 245 bytes data/icons/menu/dark/preferences.png | Bin 0 -> 405 bytes data/icons/menu/dark/previous.png | Bin 0 -> 286 bytes data/icons/menu/dark/quit.png | Bin 0 -> 432 bytes data/icons/menu/dark/refresh.png | Bin 0 -> 457 bytes data/icons/menu/dark/remove.png | Bin 0 -> 424 bytes data/icons/menu/dark/save-as.png | Bin 0 -> 470 bytes data/icons/menu/dark/save.png | Bin 0 -> 398 bytes data/icons/menu/dark/search.png | Bin 0 -> 337 bytes data/icons/menu/dark/spell-check.png | Bin 0 -> 327 bytes data/icons/menu/light/about.png | Bin 0 -> 514 bytes data/icons/menu/light/add.png | Bin 0 -> 486 bytes data/icons/menu/light/chanlist.png | Bin 0 -> 407 bytes data/icons/menu/light/clear.png | Bin 0 -> 364 bytes data/icons/menu/light/close.png | Bin 0 -> 458 bytes data/icons/menu/light/connect.png | Bin 0 -> 425 bytes data/icons/menu/light/copy.png | Bin 0 -> 344 bytes data/icons/menu/light/delete.png | Bin 0 -> 306 bytes data/icons/menu/light/detach.png | Bin 0 -> 356 bytes data/icons/menu/light/disconnect.png | Bin 0 -> 448 bytes data/icons/menu/light/find.png | Bin 0 -> 401 bytes data/icons/menu/light/help.png | Bin 0 -> 587 bytes data/icons/menu/light/join.png | Bin 0 -> 369 bytes data/icons/menu/light/load-plugin.png | Bin 0 -> 388 bytes data/icons/menu/light/network-list.png | Bin 0 -> 407 bytes data/icons/menu/light/new.png | Bin 0 -> 415 bytes data/icons/menu/light/next.png | Bin 0 -> 349 bytes data/icons/menu/light/preferences.png | Bin 0 -> 426 bytes data/icons/menu/light/previous.png | Bin 0 -> 357 bytes data/icons/menu/light/quit.png | Bin 0 -> 452 bytes data/icons/menu/light/refresh.png | Bin 0 -> 458 bytes data/icons/menu/light/remove.png | Bin 0 -> 465 bytes data/icons/menu/light/save-as.png | Bin 0 -> 480 bytes data/icons/menu/light/save.png | Bin 0 -> 408 bytes data/icons/menu/light/search.png | Bin 0 -> 365 bytes data/icons/menu/light/spell-check.png | Bin 0 -> 355 bytes data/zoitechat.gresource.xml | 104 ++++++++++++------------- src/fe-gtk/gtkutil.c | 27 +++++-- src/fe-gtk/menu.c | 8 +- 55 files changed, 81 insertions(+), 58 deletions(-) create mode 100644 data/icons/menu/dark/about.png create mode 100644 data/icons/menu/dark/add.png create mode 100644 data/icons/menu/dark/chanlist.png create mode 100644 data/icons/menu/dark/clear.png create mode 100644 data/icons/menu/dark/close.png create mode 100644 data/icons/menu/dark/connect.png create mode 100644 data/icons/menu/dark/copy.png create mode 100644 data/icons/menu/dark/delete.png create mode 100644 data/icons/menu/dark/detach.png create mode 100644 data/icons/menu/dark/disconnect.png create mode 100644 data/icons/menu/dark/find.png create mode 100644 data/icons/menu/dark/help.png create mode 100644 data/icons/menu/dark/join.png create mode 100644 data/icons/menu/dark/load-plugin.png create mode 100644 data/icons/menu/dark/network-list.png create mode 100644 data/icons/menu/dark/new.png create mode 100644 data/icons/menu/dark/next.png create mode 100644 data/icons/menu/dark/preferences.png create mode 100644 data/icons/menu/dark/previous.png create mode 100644 data/icons/menu/dark/quit.png create mode 100644 data/icons/menu/dark/refresh.png create mode 100644 data/icons/menu/dark/remove.png create mode 100644 data/icons/menu/dark/save-as.png create mode 100644 data/icons/menu/dark/save.png create mode 100644 data/icons/menu/dark/search.png create mode 100644 data/icons/menu/dark/spell-check.png create mode 100644 data/icons/menu/light/about.png create mode 100644 data/icons/menu/light/add.png create mode 100644 data/icons/menu/light/chanlist.png create mode 100644 data/icons/menu/light/clear.png create mode 100644 data/icons/menu/light/close.png create mode 100644 data/icons/menu/light/connect.png create mode 100644 data/icons/menu/light/copy.png create mode 100644 data/icons/menu/light/delete.png create mode 100644 data/icons/menu/light/detach.png create mode 100644 data/icons/menu/light/disconnect.png create mode 100644 data/icons/menu/light/find.png create mode 100644 data/icons/menu/light/help.png create mode 100644 data/icons/menu/light/join.png create mode 100644 data/icons/menu/light/load-plugin.png create mode 100644 data/icons/menu/light/network-list.png create mode 100644 data/icons/menu/light/new.png create mode 100644 data/icons/menu/light/next.png create mode 100644 data/icons/menu/light/preferences.png create mode 100644 data/icons/menu/light/previous.png create mode 100644 data/icons/menu/light/quit.png create mode 100644 data/icons/menu/light/refresh.png create mode 100644 data/icons/menu/light/remove.png create mode 100644 data/icons/menu/light/save-as.png create mode 100644 data/icons/menu/light/save.png create mode 100644 data/icons/menu/light/search.png create mode 100644 data/icons/menu/light/spell-check.png diff --git a/data/icons/menu/dark/about.png b/data/icons/menu/dark/about.png new file mode 100644 index 0000000000000000000000000000000000000000..08b64db1e2a455b6371a4fab845ff09995f3956a GIT binary patch literal 498 zcmVU8H&IO)noc2RR((NdE zr{{v>bV>IAi=f?(R+y181)BgChwv$Z#$BKLg@WTvCGdjaD=fbQ3`I~ez>(sX{6xqO zfSee!o?puS!lcNa-;F#!tT&s@*_hDp{`5|wA9_~o#E%-DABKOz@O|QEMyX_^tdXxS z&$mmZ(oKvJH5gmdvtl>b7u#CSOdsVj0uf1R&6;-N9Gf+5TGL5Bi^bwKz=}XNMI`n$ zx^+6eWo;Nm4#$*$Z0H(mT6~AO<0x8s$RH~+NSRY*{k!q6WZ+|TD>zP|wOL^GDQ_Xy z0O`4|+Z_>*yi=V?>?R6KvR12=g~W2!N!k&CnhuHTJU72sO-KkH=t`Vtv#+Zl-egkP zn>a|Fp!bE=egkl(-An2y{l`_jU)l z(19e=2grpda;)NH7C*_>Y@T#vb{d?D%!)%(9Vfer&4Y;eZ3;-@)@@3;w5^fxt+r9cG z0gvuabd;y7wfTt6t75Yk$8ovAKUb>*IyU>7&5MeYnQxZxr4*ZK5^RGo=<;)(1qcA# zTVOd1a;LvukV+Tvna#Kb4W~oCy)EYRS43ogj`zRn4S`ayt1k3VnE(I)07*qoM6N<$ Ef`W9=C;$Ke literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/chanlist.png b/data/icons/menu/dark/chanlist.png new file mode 100644 index 0000000000000000000000000000000000000000..9aac1a2015210f0a2f9e1dccb3d3ac0c00f24451 GIT binary patch literal 409 zcmV;K0cQS*P)YRoW03!5aEJO z^o4~kFEY@KDT}?Lv^o!kU&7=Gk(yZ}m-AO}(VMke=;py-xc{Sp)DMU?gs&q% z3wRfxk<&QtOKi1TktTh@gol-_5w*c`>NG3&{s}$+1&f7c%xZU300000NkvXXu0mjf Dhk3Vh literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/clear.png b/data/icons/menu/dark/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a1c607504e2546e9a93547c0da9c46b3fcc5cb GIT binary patch literal 362 zcmV-w0hRuVP)WIfU?yOq7=IjsE=}r&~ ze=RT=Onf!TGXSrA%51u_)$MMKYXzcc6pCk$08!^tuo=r)Gcq<}lndwCswj$@5 zxqxcAM`#aZyL=jFoU?StFH63trgyGp%h@jub;ziu|0N%3(?yf+%7UEiP74E%R|0xmaXzc*C>umAu607*qo IM6N<$g6fx=)Bpeg literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/close.png b/data/icons/menu/dark/close.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9bb61ae0e031d0644b2b7676948fb753c5344b GIT binary patch literal 445 zcmV;u0Yd(XP)PQ=gd8mA^ImcU1+UK%v{M5L{aqW zI8J}T!1Kep!E_Fy{E9>S3_i5&^6kt(Yh8+=-T<8D74EXsG1LKo6ULxy+xCYc!bxxG1i+`uwAMFr zyswzANhO^i2sY-oCLMWqgCXq_Q>0Yvjp9w)zTeve<4PXMvU^D(0_eDAo0oG20@rnm ng+ig4r3MgKmi4~kkiX*_57Dg?Ml6J@00000NkvXXu0mjfC_u_p literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/connect.png b/data/icons/menu/dark/connect.png new file mode 100644 index 0000000000000000000000000000000000000000..d80b55aa62777465e18f4103d962ce481097ae8a GIT binary patch literal 399 zcmV;A0dW3_P)LU9yR_e8E6j>tQ^G6CJMW zKFs-23kHwJ8$1m(8nx?WEu|Tc#;oV9U5WfK6!AVB$9_ilhY;_rYE>ocDf#fcmsR16 t0|4=S8JO5GS8F!QgM}2Nk);6tz!&jNq$4)b=1u?r002ovPDHLkV1fj7u4@1Q literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/copy.png b/data/icons/menu/dark/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..f0dab355c8108e19b431afa17dfa8ac790a1ed4b GIT binary patch literal 330 zcmV-Q0k!^#P)cxiearLe85Vx!`(t@fL&>`Zc>V4BrgQ02@N};C{Y1+~(rFtx#2$&bf3w zZ^LIgeK|6a+ro2uE5#VVc~rnG`KnIj*jg-$0-b73b4iSyB*_lS@M*6*84`Uo1Qq5% zJVs=2hBe6Gw0zy{c>v%pBKYP?1s7FVPRaX9{<@yCh@p7v_j{`@fh5VwDH<>~g#Vv_ zt)4*9`>nu+kKgiQJin^ah!~>4P1t*53-Iw%#uu~4Yz+E&2LTlf!iHJ}X_~q`r`?#K ceu;n2CzD20^MauvumAu607*qoM6N<$g0M=F>;M1& literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/delete.png b/data/icons/menu/dark/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..511142cc98ccda95bbf4abc01d1e3614dedf7c5a GIT binary patch literal 305 zcmV-10nYx3P)Csl7wIL0T_hVJSI)7qF0= z!Q8>xRstbKBn(L(h?)NhyAe|C211J9tLA_6<{SP8{Cly^{EqPs&Ub)TIdYipFGKj) z3y3k^tP^{d*)3gHzP&dXgfRJglkWmHZhfPk;5rAP?e~>jG-9=JYXKNE zt}vS~9tk{<7)a=rA>vcQvw+u5`{HFcpEs4`LYqRTJOi<|tZKdEWG4sY4SoS|3G%BN zwFFcg0=OnL1XK=91=a%6x_Ha7pHW>nrDCy%bt3%&pif6k`pCWF00000NkvXXu0mjf DgoJ)~ literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/detach.png b/data/icons/menu/dark/detach.png new file mode 100644 index 0000000000000000000000000000000000000000..edbf3997882c816b917b7775de2caeba903dd2be GIT binary patch literal 343 zcmV-d0jU0oP)PSqpppv+ zVqu||5G-Pw8@T^(+@HeALfnzvAX&q18mmn4nt3yChW~-32lFu+X=QEQ_W^7XH01?B z8L5|Wqdg$`J#S$0QHY7NdGYiDjl@ego}AXkh?Dd#w&{H>Z~bHJ(kyoVq%r}rqKfL9 z>XX6{(6vq8du66sF9NLf2Oy3F>`vV^k$Cmy{6{woZf6Pp0kepVqTneCgF{Hqlo9|f zQ2pQQvkE4EEi~$_xGHJ~U~jY29+a78L1%asabcZ*sFDlX7tDD#Z2b`zTI35-!;RBp piF;KaNx(4a1UK8{*P_ZxiXWR5XJ2rC@v8s;002ovPDHLkV1lJ;lq~=N literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/disconnect.png b/data/icons/menu/dark/disconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..f77be0caa0038ef58ec7ebba2d3db894cc88070c GIT binary patch literal 415 zcmV;Q0bu@#P)yDM|i^ZHr zMA5GVlxkOm*a2hL%_KPWba>n^P_0t; z^`)}|;NF;#laUMabok`?!EVAm-8%GiD4q@n3wut(J*C5rh@`$9_`Y8Tu)rj@3Ac)c zIzUGNoM91Wxe*|%^+WH4red0tFQkV9cVSqXWuE(B@f9Pr$SjWXTlpv@^@?e#iT}WL z9~X^uHvrH(-v|iIZyD3Jv+c10qYi!$v9V1e?NVv^d^m@Hj(4%PsIN$05`O>y002ov JPDHLkV1ia9wDbS~ literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/find.png b/data/icons/menu/dark/find.png new file mode 100644 index 0000000000000000000000000000000000000000..43ab987623f526d04dcf30f92fc5b708f8915cb8 GIT binary patch literal 360 zcmV-u0hj)XP)$@i@_~sOFk5k@D1r;uc3D>z+(||3 z)(=iYnn z1O731*nx=H&0a5S_9fTdA{qP@L9^LA#e`HTm<5oDet#vf5(cc5N^bj5g0}Bpf#w>( zt_T)wg?1oxEDLEJ$~^#%C^b{eIqzbO8dr|MuLe8Y7XX$*!73ro!cgByCU~9TYihmr zx!W!LM!8PYF-ZvPX#nd<3{IwwErB?mu<+=>L2CK^%hY-mz&F!v1xah8qc|8T6DNdf zrkHo$A4p)r42khsfSUkLMwRzX+COd9&U#*F{QjRFleG~&rZcYV$2I@=_yrN;(qCyp RD#ZW*002ovPDHLkV1f_w2L1p5 literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/join.png b/data/icons/menu/dark/join.png new file mode 100644 index 0000000000000000000000000000000000000000..609076718aa5038ca215945116be57c125a541fd GIT binary patch literal 360 zcmV-u0hj)XP)0{fshAa}X2{7_!D z)M~Y7V71o><8%vH1ol8?`xThHVfO{}Fbhuw_Fy2vH#zet#%*Mm$#49`C`vX}*b(GP z(Q#mY#G_)ZZRZnwQK$2AX1qcPm=pBgiCM6=+#V+T_j(7^msk#6)V8ny0000Z;U7U$!H#f6wf$L7EQ*>G2GZ5M`zzeNY3S>zHkBU4K%7*>H zEem)F!*UzIt9OI>MlBNHR49=^7DuLH*F|K1oEx|&j^j`T;W>fQSpN;c8XyBGTIb_6 z_zw!ScSBL{UV~PvH2|=eZ}bv#3}6euGeA?X*FFH;ce`dK&r`l>z2wtf{e(jI$A4`W z_=*(u1z@MytX^qtDncCTB)xGxfm8tWi$x?OE+!y5@XP_h)vRI%mg;h0uKF-ZJ0YRoW03!5aEJO z^o4~kFEY@KDT}?Lv^o!kU&7=Gk(yZ}m-AO}(VMke=;py-xc{Sp)DMU?gs&q% z3wRfxk<&QtOKi1TktTh@gol-_5w*c`>NG3&{s}$+1&f7c%xZU300000NkvXXu0mjf Dhk3Vh literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/new.png b/data/icons/menu/dark/new.png new file mode 100644 index 0000000000000000000000000000000000000000..24e226c906f3cf289a11456a90d3572f0cebd30a GIT binary patch literal 401 zcmV;C0dD?@P){Zq!LyMk5F#K&d!D!SR}Suf&M4;xVw31EQeQxc91D2v3m=AB5}y#Y v`Ikmesl3i)vtM(=-nZMCmqKCoEhN4HT&95c;3e5StFu3c;`?(Gar)lhHa<*umtzpsRF{d$Z`NZ#KZ^g1$wFR&C|M(}I zc`GN#o)f?Xm-B59RZTC1}XGiZ{L*@dt<#F@O%k_QNbgg;AQhtVU&WVfqe*gPA q|Gkt>zVdKyWXW8aC0c?1Z1b!|I@k0THB1M(n!(f6&t;ucLK6UKbYn6A literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/preferences.png b/data/icons/menu/dark/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..c33104d32d10676c99a59ed306676aa2f875cb22 GIT binary patch literal 405 zcmV;G0c!qo*-+KEN(>Rh$noXT; zN6}iGd!T3$=dCDOHO{XBbGhz{cxi-TuR1zxSPZKP`@1tc!-=xPUR8-5fgUMj zZ@8(xrsM&Y7tZBQrwSNaoo+?I8-iEHQRo)cSDXv(Fb2j8Gt2&KC97hCV8$)xw(YFl z>0eTHK*3|oaSQq52@jI+KdSS#R-}Mwn_<{3DS4~VYZ8QVlPYEBviIX$NjK39lQO{% zC00000NkvXXu0mjfS2D1s literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/previous.png b/data/icons/menu/dark/previous.png new file mode 100644 index 0000000000000000000000000000000000000000..fbbe0dbfa59aea0459ff0cbbbcfa9ce10c943d0b GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_aJzX3_ zEPAg_vh`zjBe{oRI#EDbF#-mL5mQk8Fdp0fpB zySS`lk>D*x#g-qZ(tn<`=l>zTXBO{_!*|Y{+7k9;mNUomt8VY3cCe?-UG{a;`bd{! zx99F=FW_x2HI=ljt;`YJsc@}4$@EiUYTC`r{+f;$L2bcoZ<*;Y7W%Nhf4p?2Ewe>2 zUw4(!p0~ytADp{FR=j=~{kqJYVUgslJ6!vVk6bnvdVTt!%a)%y9w#occB5Y@5_YSAVlTC|B45xHqq z|44$`2lfXfauxLx6zt8LahfKgkYt=2V@f)s?xF(+-aYrc^X}yVe+i}3Y`{^T_^4(J z@ypI}XP8HX1;emcYnHXtX(j^(=RlLPzA`dETFy2T$}wM@g^g`ZQ2ANeTLS|e$C-lf zUxB#fzNXH@0iPdl7Xa=BaBZ6AcqE|FAYBrtM0@?z>FAMWy0S zC&s)YfHg3R43vKM#wLJW2JVsxv8QR;`@n$Co^h#OP6gqFf#pB~_=%Vbx}GW!kvD9` a|G_tt4VcF-n+)Xu0000M=eK`(HrlV(>rcn$ zqi>!ccCFw3GT>(hmu3*H8DLonR${LMJ`BTr@78>I1VI!%r)U0v5zRD)NG4$~9vdOP!NMAQYw-m>Kq7?r z2C)((gf$BiM5L;3kLvjYQ&-w6otf!aI!P_+-dp#ad+GxJ4R#BvYFWh1D1%7_G*EvR zhLtOltv?&sM!Kk8cLl5`HhkZ*CTsDZY)NuVa;W`APkUo#YS z5H^Z>tr52ofK&O$9(q#^d$z4O0ayoc(e8nQ-G3zyei^SF3QEMiR}2`_tY%DIJ+RG4 z;rj`_FEa7jO1f9X9?RQ7Ebg(Zi6q|<1Z#w@7;%S5lGJ{3uZ_l-P27=!%h@jE7mDpH zM%+9VJ0Qk0(rji0LI4jQSdYTWS(_)F$RvumX%9|(7M1+%KwsZANnbSH|KS5v2%_nu SFC^js0000p`$XNK+;8|2p9wYPEV%DA1034G?Qn8h#Iqdl`mdG9=7I!aj)iMU^5~{Wo>yLy{z6v4G(1 zor7p(0TzA0Y1tn+s~^5QfKux0n_)>%XjFJ=Gi=_hEz3|&d+Y7E_Zd*>p8|Aj$_y%U z^g(R>vG%g4S1?IL(fkeoAOD45l8EDvAYUx3fM@}lhgc^G z!EMBGw|?t#1<#m+Xe};O)**h)w>TE?P2{c<%9tu3th775w*sE!Tf`8yDLgmCuX_dP z*v#$wUl*}|0Rb1r;5>>dUvj;_7|lRLMk=&)p8)t6A#>S`HTEh=lBG0Lg~ah40VBN= zxR;8DcdkT()Q#rz8#1p(N8@=%N2jyp^3~(QxeU?sh9smFU literal 0 HcmV?d00001 diff --git a/data/icons/menu/dark/save.png b/data/icons/menu/dark/save.png new file mode 100644 index 0000000000000000000000000000000000000000..841b26c676cff836d8197413530b9e558276a803 GIT binary patch literal 398 zcmV;90df9`P)Aa}k~T%JSYg)rk_I=yyn zs|6B^OTrcv@IvAMq1Qjy}I z_XaIsTO(N)qfz<-Kv~(eF;q6+YT9)grnYG>oUGQOFB2i~+t?{p2 j@c0t71g-p4f8yLuZ-+V&`Sa?WZ)OEW7aOa2RG0Rq7<^|}! zpz_X4a9#cSZfWb_ri>V!?+~w!^cF%4{4gZUn_X8)}c^L zLt_O>)TCF>0AfI0yCW)W<%uZm1H;=G^D)wXR|E%HvV4Xi=(=txaFBWN Z@daDoWDE9+hcW;F002ovPDHLkV1h5okTL)O literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/about.png b/data/icons/menu/light/about.png new file mode 100644 index 0000000000000000000000000000000000000000..e1b584328988e6c517bbb2dadb79a3054d9f2e17 GIT binary patch literal 514 zcmV+d0{#7oP)XG`SOM<%3;GAT zl0Q&4uxEq7MmDU7-SMF;wLl1&rZq$ivP5m?U2~_MX8b6a$W7kl&3*Trd+)jL0sm?2 zc~UI)-9KsGvTc3PKSia|`X_>W4+=vfu0&!Mz|D^PtAZ;o;(X(9>r+pHV6^ZQbn76# z5L%8R|GoJ=i5@BRIe;8gr)vAVTM0(enGH_Uo$s%bhPo^d`d1WW!d(z?;UWOfJZe-|iBSqMg&;W9<^OV<>Hm*r$GQ z_p|jzx{0d@MEDrMS@_}IX-b3D$mXod7b7E+{k_1$!^MmOHqO@oT#5j&OJcpX{PU$Q ziMq9TCE(1(5)}g!_p&P!QWlI(6hOQIcy4NU1OtgDmYL8S1gFC4&h}pkVv_ih*qr$c zK(^yPYnR=cuT}R>((#w5KH~-X@P)ugK~y-6%~DNE8&MQJ_sxKRA+1TCsV&aL>?FJ~?INXG@CRhoeQ|Bq zMOwP`2MB^Iq3Bw1C0a<62whdfq@bN?jUPXtP)g?A@}`LyO+uG?;BvW_^X@zMya(Jh zXlS=wwsTj%N*ba-AdW~M{cOt5z*h9%0a@3ZBjQys9)WSzWu*Z=fxzqV_;4@D7s(>$ zsFwuZfyRL)Ix_Sd850851c9p1w42QrUkqQST(+gF0_l2dy_R&mB@@@`@@ie?)d^6s z1{6$O{(fdSQAEoLeKT=%5&gkiFmgFJc-rgPeX@3-seSgX)|QTXLqv)hDjx27o6Ot@ z{l_0-iFCRv;NBD$wD#HiI8HU z{Q(bx)L7Ld+s6C;P<)A_=RqVs0DSuIPh89CBkQVp0=5Bsgy!Y2b@<)%GlkNm=ycwJ zr~<(Y$-h8}^D*R
o?1Uvz7-sL<1&?2VAz_0Ho`6EoLSlQ_xvx0frRIIJ9pU0rf*?phQ<&s-cVtfz<9URDpi>O_32eTh|O#n&?Z1rt2L>FEu ztS)wME_13?s=x3?!&A~9HKL<>PMO*+5I`~pj{*1{j;KM=9; z9|$&n6*huGKm+1wAsWy^LT>Mk?A-}L?=X-e0}Hcn-p^+OE^rilW(QPVEQinc zSCQY_AA``cPROo6t7*YVr$3&Mm7KkWmNx*R!Y9lxuO4KKC*sU`%B-#f()9fC?sB`o z-4x#SV1llvMNoEdb)o%#ETbLv&Aj}ra=p`Up$_8?9?nXcLjkG>PwQall-yUus!Fe?gqQfW~uZ!p~>Iz4N)qV({pTr)&Kwi07*qoM6N<$f*AY8 AhX4Qo literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/connect.png b/data/icons/menu/light/connect.png new file mode 100644 index 0000000000000000000000000000000000000000..4f73f890218dac5517aa1ff3ac040948615e605a GIT binary patch literal 425 zcmV;a0apHrP)LO~QgGjENor&ZH?^>*GdD&up7H{rZ3pgf@11+@oI4lzBiOGuwk@Jf zcR{;PbAbjjneIppV%BOzN|6Rb3c$p7`W?W9FjTsHm#cZ}xi^TetZz#tii}|mpd(2< zp$%Zi0FqtFixDfi<*Oj3Usj?B;BscXdzjDXJKjRevH~9zItS5?lsr*?%r*uTNGZ|` zsQHmK9LI4@cj^E@(=gP@;0U%Yz_3T4GcP$F-wkT($EDKMClO8o>;oy|r@_)|I}9Mi z70Y?a9kW&Gn60w62{+U&fXSFu>1{~pqk4Z+^<61J5d#H-&(u#zaZ1xZL=@xeo39z5ab9V*ctPv1vzOW?Jxnof`bCj0f6X7MuwN7uaQ}pYr z_Bl<{>>I$#2wyBsLg3VUS}qDpo)qQuJ?a8@D9@u&ypGgeR2>Dk9WknUrWv4bPxm+F zEnc18ApCa-mX!QIKrS*=aO1ZCS>b>v#}C3|WKTak zPhv;mKY(4AZhv1=ng1;t;33>ZU!Se4@FZ-!=aLH36zHWpyPQ)*0000007*qoM6N<$ Ef*4|fX8-^I literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/detach.png b/data/icons/menu/light/detach.png new file mode 100644 index 0000000000000000000000000000000000000000..3f4a2e38b59f8e666c2aee3a3266c4ea69292780 GIT binary patch literal 356 zcmV-q0h|7bP)K}SiFOugDlQ^6$x zrC4C07Ql6u1})(HW4wVla%OzV{;M4#)gsEoR|P2 z1gZW-$8X+4{)ZAk!^nr?lYGj^z-S*Ka!7m^`iT$*F*-LNM zmAJCN0N|{W&9CXB6|7Z|C2uFS(*%~GXk_Vat0aCiq+D=QDN%&WK0vl?(IIyzbPd8D_<#&@Q7ufInYd+gHH)BSe;Ana`kgbJ0sbiZHWH1h zzDnI~UT=qc%Sa>|zXJI6NsV(g4nhn-f7AU8;6znK{Q4qOwB|Fb;R{aBbD?I5Fa^j} zE?LMt0IdOtG&sv@dStHa1b(x#P_rNyM09#*r1q_ex~})WNZT=_T;QCAN>|Bp+XS4e zaRQ2Fu@rJo3q-c80K+iqJ$1(lfQq7s?e-@`qbdlC67taOEFm|Du%iXStwdA#{MoCN zH~_E&#FQ4mdtdVaurWay(=J@5cRwH$?}RW#qygCd`px@>ev}prua5^KvJ+yJ(&-qR zm>nH-j=1bjw*wM6Fw}@>)9&&(2AtmWr^lkX((eDjqt6T}LOgT>Hzhb@u9A_gb_IM+ qK(gM4PBB^rW7R?~b@U~M|E)JJ&wb}dbf>2P0000PiiMq( zXk|L>1UoG(ZLA{Nd+BVvLr63sVi7^odp9yMfsmh3EPU`_-rLzXI}7|<#I1Q#_+1}$ z8itk35-0~C+O%F7yj$@K=e+_{yD%+hi$G@pZXy9^gi?!VTF&O+fK)01V4n!5WzWri zMAU*%YViOZG<$ll5Kqh`LZyApyc{T%2J_-q2i@v0%m+kQnmJMO3y*zQ=m!RO{Z&`M zQ*@*Va4jIUT7J0OmdQe?L((g9R`ShaX8^T}2|KyLOeY|^&>>%n7bwbrd5wVUXU|O! z3=o+1+&V(efe>pLj4BBC0G1dyu6XVahQZ|Y?6|O{4cj?1Er$)uIqEeS!$2-KLZ+O( vmZyIbP=9;LkB-F{ir(wBYT;L}_;Y*$nxSw0y&Nck00000NkvXXu0mjfE3c*? literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/help.png b/data/icons/menu/light/help.png new file mode 100644 index 0000000000000000000000000000000000000000..55032857ab7a7b883359dfb031403db462aef3b7 GIT binary patch literal 587 zcmV-R0<`^!P)?|3WAD5yL1xc(lkmpYpTTZ9!V)yYH>-EChvZ7-)n4A4G8*8_s4h6 z_kHKw3;biS>rFZx8Q5r?Fw1hEy@_0|`Bwz}=Tc{s(isxt0FLb)e;4qD_L;4G&aZbR zh@Veg2K79MZ-h*1t=1I~6N^!3eGfnkBBS2wyL=0y+AA9{A+PP--ixBu04Z}qc?vCe zdi>}$f^R_1$CJZ-zY!>?}2{b%J5i(epE1Le5u=4t?@0gkt@k+A*BDI=J`Dwus`C0_z?#lx5t zPg;)wT&1Xo=1v3!60vx4_@q}{-UwJoB|#&ma$B4oDo+Bu1@eZwntvOnggI0pMg=~9 zI{nqmM(U9ci$q@#@Rj#*X<=V0UIMV?uDsuD)8M6Vd=}wUB5}Q^m0YuHQ+2y~x3wP} zOgjSH2k;z#?r=f-%o?AY_V#Rx#MyOboW`LizrfDUEColX^rJ2hX(R<=4&Zj6ww7qv zH>;*HAx8<0y2ZlM9|;1I;E@=gc@seI-tku0b~9^~@6hQW!G0JE*MiUF6_<_3!OZ_X Zegb&{!EsU*rPlxe002ovPDHLkV1fbK1yuk5 literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/join.png b/data/icons/menu/light/join.png new file mode 100644 index 0000000000000000000000000000000000000000..29a7d38ffae6029589a3245ad9ea3464c7190d2d GIT binary patch literal 369 zcmV-%0gnEOP)Q-V%f6v#cv0|2)G!mI!T zzl5ca;js4xU?VLk&)*@iB7%JqZeDE$*Jb&sS(n2W%pqo_kVW^MfIOUW*suc*uulSy! i*=;v3P6m1Z2|fT3;%E76;crd=0000U0rf*?phQ<&s-cVtfz<9URDpi>O_32eTh|O#n&?Z1rt2L>FEu ztS)wME_(k z>m~YDdtP2|jw`+fTFlr4^NME-<54J>y1zbqZf=PNH^x3&GU6@(hamJx3+eDgGT3aO zGz1B%JQOa9Zcfva9{{BRM5V|=P#c;C-8x)vRtFOUdd>BVz^BMo;Qh38HfT1 zGb!sW8EE>%zMzVGe>BbI2 zZkO}tsb;M}hfuu8-=tLia{(ybW>?!XfDM+rtxv#gF%TRXn;vy2i?3>{nK~y-6V_+C)z>Fc{;J_l!CE>0jC;ssH^XLBv8Nh@tpz!*q3&a2a z+g^WT*&?d#z(cYD4@BAbF#P|&l#zkKjqBg{{mOb)V)zVT#3invWl{hC|NnXh28R28 z85rE3Tt9i6xG;c%53ipb;1`p9&&a?K&cwhF&MzXf|Kppd&l!kx0UXF{m_;!#GR|jU zVEDLL+hU@(}(-{G$i z76w8h5d#%-Uuz-h4~u$D3}R^_3=Q{_Tb^9)W93Uu^1l1NbM8IgIl#Y0G@f2H@ta23 z#BrSNm@_%72P01cy+V-42{NgzYTbu)=y3&hM0klTdXGq({cCy?`c#m#BRz7SjX zo^%xG!E;3^CcScgx7DAuNcFP2qckRr#?A@Zq*N+30bG4~_qjwqYB%n6kY|63cZ{lv UG}OsFI{*Lx07*qoM6N<$f(Z$5^7#=+Mhb+fLNVBN61JCPk zEL#}<|KFzY`lk!JJPSU}%6e8}e|~@8%D}*2!tnq9(g&jKd(hP|;?gXyZl=h<#JGcj zfkBP&Kf|O4H%=BZFfgDvAEy^&G%R%)m>7>RFfge8XZT(Y?`rpK|#$@<3HoS zqYMlT>QLaBeAn#yHNCOW5Urby1#LqSG00000NkvXXu0mjf D$+eZD literal 0 HcmV?d00001 diff --git a/data/icons/menu/light/quit.png b/data/icons/menu/light/quit.png new file mode 100644 index 0000000000000000000000000000000000000000..165393d0d1a7f35c3912867405a8abbd2cfe7cf3 GIT binary patch literal 452 zcmV;#0XzPQP)ZO~(4C_3E}5RjDxKr4O-v|}waVyqR#pfcYT zAW6zFF%B4%^9rxKR)97%vb_A?^0=_qsP236puS5p5L~a uX$#;ffb{pcW~Nka+>=5!+p_iit3Cl;!*qR@DUopi000098tNKVRjYFI zG{*v=y3aW8sSfPta=R~Xcc|Y8<@4!>t_g;HQ&9oh2Ez^DzAgvsV3Y;0S|h9&`-)m( z$(TjE*yWvx2&O$^Tr*>$pe5`DE#auK7-zzzB+BVJ-#Sv&P661FeAWBEuGag6mKcYz$h3IdV8rwlMeWt~_^as))389E0qAx5 z!x4OguE(E^3%8$WB3!<328=tZ*k+p>e?+v|5|WKS4zjIssEmcDzihNN=ySm61(4hV z-~sRm@J2yPuKzkggP6tX(^ZlpC`hK7h5VUysmXf&v9HXhf* zPj90NB1Rx~NS)ta8pptv^KXNYIXp$gNicfAxGS>)0B0dEm%ljKtK^HyARLj?1m1?i zfhInUyp;*MOF-);&=C~vgrY-}^~J>Fx?xJ&Fo!q1^oF8x(}>C}kkD!-=ze@3cR7wj zOI{6}4=jQa4x9GacTWEmqasjLxVugjjEGzyB3W6?%$dBESu;%e;IN1QIIQ-7K_0L2 z7X%R3PM|akq`LflGT`1+ud+8b6#R71$wFB*9@w2tNA9NUSoZY55i0=aN`ImR?dR0C zRdYw+k_f9U9fAIqcK>PdrSR$=1!JSVt!=(_5Y0efw)ni8tI&f#Fb3oV3nU5X2XJ5J z_yAlH)4Xk^_p1!4hlCayycrS9gKor1JIhU|(B(21S{s3_+UAy-m zxa@Ceai`+0;?hM43SwN8(AvaJiMmi!5W#4J&o`%BlZP+yX$lSucR0+PnKN^NSDJXi zz{tl=r{c7}l>9f+a(?kUTMi_MC(KoY zeZ#4)Kmr;m6SxMsq8jeD4l(bmiID@_9YEAoeD-R>frAUsU}DGS-|xkcq!beNo|9 z4LO0)B|s+ZhkTKMg01TK58w2}UI1X3itD4|?hi=ajeI*GT>@Qjb%(%C{a!+El+Inx z;CR1~9ahp40x@P4>aHVX{sb+>)KUpl3^DVl)@QxRk0000<c&yhyW8fD-Vr`E-2Xd4E00006#NB7u@S!vu_vpw?SzIg6uinF zDd!Nm25=S8J0NQU+;#lsdTM}$@>aJoWF3NhNDw^;9sq0-IP3b&L(GEm^2(yEQSW-@ zL}^1;o6|`bV;0!qFl5ObkGSkl0tRm{w+l|5$jJL3=(T>e#h>E~wMicons/tree_server.png icons/tree_util.png - icons/menu/light/new.svg - icons/menu/light/network-list.svg - icons/menu/light/load-plugin.svg - icons/menu/light/detach.svg - icons/menu/light/close.svg - icons/menu/light/quit.svg - icons/menu/light/disconnect.svg - icons/menu/light/connect.svg - icons/menu/light/join.svg - icons/menu/light/chanlist.svg - icons/menu/light/preferences.svg - icons/menu/light/clear.svg - icons/menu/light/copy.svg - icons/menu/light/delete.svg - icons/menu/light/add.svg - icons/menu/light/remove.svg - icons/menu/light/spell-check.svg - icons/menu/light/save.svg - icons/menu/light/save-as.svg - icons/menu/light/refresh.svg - icons/menu/light/search.svg - icons/menu/light/find.svg - icons/menu/light/previous.svg - icons/menu/light/next.svg - icons/menu/light/help.svg - icons/menu/light/about.svg + icons/menu/light/new.png + icons/menu/light/network-list.png + icons/menu/light/load-plugin.png + icons/menu/light/detach.png + icons/menu/light/close.png + icons/menu/light/quit.png + icons/menu/light/disconnect.png + icons/menu/light/connect.png + icons/menu/light/join.png + icons/menu/light/chanlist.png + icons/menu/light/preferences.png + icons/menu/light/clear.png + icons/menu/light/copy.png + icons/menu/light/delete.png + icons/menu/light/add.png + icons/menu/light/remove.png + icons/menu/light/spell-check.png + icons/menu/light/save.png + icons/menu/light/save-as.png + icons/menu/light/refresh.png + icons/menu/light/search.png + icons/menu/light/find.png + icons/menu/light/previous.png + icons/menu/light/next.png + icons/menu/light/help.png + icons/menu/light/about.png - icons/menu/dark/new.svg - icons/menu/dark/network-list.svg - icons/menu/dark/load-plugin.svg - icons/menu/dark/detach.svg - icons/menu/dark/close.svg - icons/menu/dark/quit.svg - icons/menu/dark/disconnect.svg - icons/menu/dark/connect.svg - icons/menu/dark/join.svg - icons/menu/dark/chanlist.svg - icons/menu/dark/preferences.svg - icons/menu/dark/clear.svg - icons/menu/dark/copy.svg - icons/menu/dark/delete.svg - icons/menu/dark/add.svg - icons/menu/dark/remove.svg - icons/menu/dark/spell-check.svg - icons/menu/dark/save.svg - icons/menu/dark/save-as.svg - icons/menu/dark/refresh.svg - icons/menu/dark/search.svg - icons/menu/dark/find.svg - icons/menu/dark/previous.svg - icons/menu/dark/next.svg - icons/menu/dark/help.svg - icons/menu/dark/about.svg + icons/menu/dark/new.png + icons/menu/dark/network-list.png + icons/menu/dark/load-plugin.png + icons/menu/dark/detach.png + icons/menu/dark/close.png + icons/menu/dark/quit.png + icons/menu/dark/disconnect.png + icons/menu/dark/connect.png + icons/menu/dark/join.png + icons/menu/dark/chanlist.png + icons/menu/dark/preferences.png + icons/menu/dark/clear.png + icons/menu/dark/copy.png + icons/menu/dark/delete.png + icons/menu/dark/add.png + icons/menu/dark/remove.png + icons/menu/dark/spell-check.png + icons/menu/dark/save.png + icons/menu/dark/save-as.png + icons/menu/dark/refresh.png + icons/menu/dark/search.png + icons/menu/dark/find.png + icons/menu/dark/previous.png + icons/menu/dark/next.png + icons/menu/dark/help.png + icons/menu/dark/about.png diff --git a/src/fe-gtk/gtkutil.c b/src/fe-gtk/gtkutil.c index 8c772908..fd3c3617 100644 --- a/src/fe-gtk/gtkutil.c +++ b/src/fe-gtk/gtkutil.c @@ -220,8 +220,14 @@ gtkutil_menu_icon_pixbuf_new (const char *icon_name) if (!icon_name || !g_str_has_prefix (icon_name, "zc-menu-")) return NULL; - resource_path = g_strdup_printf ("/icons/menu/light/%s.svg", icon_name + strlen ("zc-menu-")); - pixbuf = gdk_pixbuf_new_from_resource_at_scale (resource_path, -1, -1, TRUE, NULL); + resource_path = g_strdup_printf ("/icons/menu/light/%s.png", icon_name + strlen ("zc-menu-")); + pixbuf = gdk_pixbuf_new_from_resource (resource_path, NULL); + if (!pixbuf) + { + g_free (resource_path); + resource_path = g_strdup_printf ("/icons/menu/light/%s.svg", icon_name + strlen ("zc-menu-")); + pixbuf = gdk_pixbuf_new_from_resource (resource_path, NULL); + } g_free (resource_path); return pixbuf; @@ -326,14 +332,25 @@ gtkutil_menu_icon_image_new (const char *icon_name, GtkIconSize size) return NULL; variant = gtkutil_menu_icon_theme_variant (); - resource_path = g_strdup_printf ("/icons/menu/%s/%s.svg", variant, icon_name + strlen ("zc-menu-")); + resource_path = g_strdup_printf ("/icons/menu/%s/%s.png", variant, icon_name + strlen ("zc-menu-")); if (!g_resources_get_info (resource_path, G_RESOURCE_LOOKUP_FLAGS_NONE, NULL, NULL, NULL)) { g_free (resource_path); - resource_path = g_strdup_printf ("/icons/menu/light/%s.svg", icon_name + strlen ("zc-menu-")); + resource_path = g_strdup_printf ("/icons/menu/light/%s.png", icon_name + strlen ("zc-menu-")); } - pixbuf = gdk_pixbuf_new_from_resource_at_scale (resource_path, -1, -1, TRUE, NULL); + pixbuf = gdk_pixbuf_new_from_resource (resource_path, NULL); + if (!pixbuf) + { + g_free (resource_path); + resource_path = g_strdup_printf ("/icons/menu/%s/%s.svg", variant, icon_name + strlen ("zc-menu-")); + if (!g_resources_get_info (resource_path, G_RESOURCE_LOOKUP_FLAGS_NONE, NULL, NULL, NULL)) + { + g_free (resource_path); + resource_path = g_strdup_printf ("/icons/menu/light/%s.svg", icon_name + strlen ("zc-menu-")); + } + pixbuf = gdk_pixbuf_new_from_resource (resource_path, NULL); + } if (pixbuf) { image = gtk_image_new_from_pixbuf (pixbuf); diff --git a/src/fe-gtk/menu.c b/src/fe-gtk/menu.c index 81cda565..32364b53 100644 --- a/src/fe-gtk/menu.c +++ b/src/fe-gtk/menu.c @@ -74,8 +74,14 @@ menu_icon_exists_in_resource (const char *icon_name) if (!icon_name || !g_str_has_prefix (icon_name, "zc-menu-")) return FALSE; - resource_path = g_strdup_printf ("/icons/menu/light/%s.svg", icon_name + strlen ("zc-menu-")); + resource_path = g_strdup_printf ("/icons/menu/light/%s.png", icon_name + strlen ("zc-menu-")); found = g_resources_get_info (resource_path, G_RESOURCE_LOOKUP_FLAGS_NONE, NULL, NULL, NULL); + if (!found) + { + g_free (resource_path); + resource_path = g_strdup_printf ("/icons/menu/light/%s.svg", icon_name + strlen ("zc-menu-")); + found = g_resources_get_info (resource_path, G_RESOURCE_LOOKUP_FLAGS_NONE, NULL, NULL, NULL); + } g_free (resource_path); return found;