From 785c4ae4dff60ee2463076d8f33e234a8e71c221 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 16 Jan 2020 11:19:25 +0530 Subject: [PATCH] Nicer tab close icon --- imgsrc/close-for-dark-theme.svg | 48 ++++++++++++++++++ imgsrc/close-for-light-theme.svg | 48 ++++++++++++++++++ resources/images/close-for-dark-theme.png | Bin 0 -> 2344 bytes resources/images/close-for-light-theme.png | Bin 0 -> 2310 bytes src/calibre/gui2/__init__.py | 7 ++- .../progress_indicator/QProgressIndicator.cpp | 4 ++ 6 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 imgsrc/close-for-dark-theme.svg create mode 100644 imgsrc/close-for-light-theme.svg create mode 100644 resources/images/close-for-dark-theme.png create mode 100644 resources/images/close-for-light-theme.png diff --git a/imgsrc/close-for-dark-theme.svg b/imgsrc/close-for-dark-theme.svg new file mode 100644 index 0000000000..d4d38e52cc --- /dev/null +++ b/imgsrc/close-for-dark-theme.svg @@ -0,0 +1,48 @@ + +image/svg+xml diff --git a/imgsrc/close-for-light-theme.svg b/imgsrc/close-for-light-theme.svg new file mode 100644 index 0000000000..1648ac347e --- /dev/null +++ b/imgsrc/close-for-light-theme.svg @@ -0,0 +1,48 @@ + +image/svg+xml \ No newline at end of file diff --git a/resources/images/close-for-dark-theme.png b/resources/images/close-for-dark-theme.png new file mode 100644 index 0000000000000000000000000000000000000000..4c222c747338eca72f7ec243ea1fd5524f86abda GIT binary patch literal 2344 zcmb7_dpy(oAIIksqRDM;8L7GcEW^klVXR>@HcKw)PzR$U2O*Rna!HFgnZrbuXe)_> zPA+U_Gq-Jo^dtRN9_{B>zaGDHUXRE3`+0v}@8{?BdH?Z!Jie*USQJoP zSsVZW0PXE;@w_$e<0B@-doRDvdO0%7(eHW*|tZ0i{XdxiZ2-6_T%WE#K*p7_|9kcKlAfj zUl(7%UjuxHM{eEDcfM6@k>BcW_y0P{JN38V?YC^N7sBbnysviZEFS9u5D*j+-XS6? zwo_bU7f^Dyl(dYj97tY4QAv4^3RqQb?>>lzmbQ+r9`t}d%)k(CY;w@l%>2+{ODk)H zjVU+y*$o$)}SWZm0 zxrIf~yYo_VTU!1g&oCAFki_iy0XnuaqH!?zZvDCQBlQ&l2Is6)RSUeFQO3d6t6Wof z)sy?oLEMeVNIyAcEUP@fI*WdM00eBwb;pD)t+&K>A4CU?QK!8tZ%YJpu}#WxeIg#r z_Vi@0WUpdNY(ygT_|URTm#wJaVA-Y3bu;<+*`w`Nat{#R$pj;q!VRmvnrn)*%WN)V zuBvI}0C!MZZQ-XH=*ElRl2;!-SKcHZL)NK~62p6uRXzUYXZA0^C0%`SGkpomtr>}B zMm^39C-5Dxp#o73Ub?yGQlE^`i#(J8BTw1*L)FE;MDUm3I^zfJTaG0db!Fl1w0+(*-X8cC?4E&1)>iM zEi4)e`8f|kg?2h7or0axC7-diLT&iOs)~Ru=zTjiRj3_ytN=p`;b>R9ufQZ_jTYLm zb8fgFUknIsq4_}dNSoxq24TAk2&j=a&h|j{u6TlhaaV#y*`YuW!CX7FYG~Y!%sM($ z%@9oYSI3Y>ZNQ)mC3`P5GjDAFiCKrZR=rtIW}H&*I_&Y-4;eVS*2Bh; z-B5ngta{2i(6ajBdLyO1AHD}4Mx$ziT^~6@E!4?apng+rHQ{b3qQf0YR#{W8y{=mW zQ%})-Rj37hth9_N>VV|HC=Syq&wJmSIcZv>#L0nqEyBk%Ko1b8Xi)n&gheYvNMhWr zlYS)5O)!IQdmud3K}Q<1;JSJ#C0Fw5izcOsW{$mNv79$XNCpD^IB+c7L`k`MRIV$@ zz6VbL2~@`p)N{^@_ebN-?icU_mk{9uktjDtQd{A#l$%koAOKP$tq`^>k5q7>K7Wv% zaHj;;RgrQtTnhLYS-cb>Wvf<1RMsO-P>Ck9F-_>|r3hLZ8HLM~b?q!}Hq>H=Vpi~I zqzK!7*a_!lrWZnXrWWe6Sy?FX*zc)psI}9+1UFGqZ4`~L-1Jf)H*EI+?)z|d7EY-0 zk1QM=BJb*0n0Cj!rPi^k=O5e_8!h55##}V1vZ^f|wx%_uKm4ba+{VB=Wudodm5srM zta!7GI4g*P5p2Xu4AU$ia?)N~a6r2*eY5sE=?FzP>krq7yJM<0Gh?~X@TLRlorWIa zaA3scd=3?KOf$LJkAC`0Z|O6miC%!rbX~xap;9+^#uNATIbtdEZW9)M3+1n}ig!9X z_AG>WuHwA{m`?2*cw`i9y4aWq@vmR(y>qW_Nn&+jbYrGI#DcO<`;%DzoC{W%PR>8f S%9iH+JOK7ctZf;>JK^6L5{792 literal 0 HcmV?d00001 diff --git a/resources/images/close-for-light-theme.png b/resources/images/close-for-light-theme.png new file mode 100644 index 0000000000000000000000000000000000000000..a32a9e7f34214749db29f4d9366b88f06774ad68 GIT binary patch literal 2310 zcmV+h3HkPkP) zXN*-v6o9`)1Q%8TQPj171_TugSffT1jmEBsL9s-QB{uYj##n`ON5?%Q|ooGJJ1`I3|UwQo+Dd+(GpXTUHF!!QiPFbu;m z48t%C!!QiPFbu;m48y1?>S8Mpi2;c1%YlC)>k^e(>;UTlBY|PS2w+oSVt4LHz~54t72 zfU|*l#1C#3c^}x{gFm_zdjK*w1{#- z9%rYrYy^uwn!+`sd4ItMxmH=C2 zcX>JtL6R(8oX`SX39Q~lTdM+R;(uZ3Ct&X?ZGTpwy%|UrR3Ui=H{%xr2WM<^d*Bzx zb~}@4z}gvf=>c4!(C(y+K1hObxEZ|+7@M>0;pk@&y-xn*&x;(}UIeV4v+XGKMdq_E zMjz*>!%$$3qYhrA^!~FIbbzKT`tV2M_Ha!)WsWT;b!DK^s{9)1is0rhj#Em#wISlSxMs4 z!rr(Kz8>?W+Xl!vziM=N8kyJoV1AW4bS95@(o2O2xEWUhZt|#KBV8XXc^p|&@P%ud z`*LIEV zM9;V*0_i*unVM;R0=wc)^n7$pAf2mXAi8N@v++9?h`|VSkF(DRtA1t1qi0xI?hR^z zUmAc<(e+OYvK^iTx1!$xO2EY-jqt>3zzg{C&$xhgRK#b|hRNZ~P^TW*OYr5Jo5PvX zIeqY-=AG1lr%L)DwE=wkWm+(6DzFWHjV#Nxp$t->5AZ7feKJ3kL6tayFdd)-Tu=JP zs`~=35zZ&k2ZECcXKV?$jdVLf1Mmi6{jqBZ!zvLY<@*-W>jeFQ_XzKc<296bSqU4U zp+H7X1MVQ)3SL+AN3xi9jMTO>E{^OfUE3EYB1@~WJHY_pCE^4hl>A@B4ghj;<{`pt z;=q_40AvAtpam%%KP5uj?I|JE%x{R)e)MZ>?jYAKF!EEzFOdX z{B(fO%io32K3V?nT!>O(b-9rWd+pU_%@b4NU{?C1Tpj3!2KgCRO|kys4o` zE0-z$RwZ^uQmY3AXsZdi6G@Ag6n{&FiRkp~p9quhw+m9Ezl7Z8)fk{nttsB?rfm56B~TdDe})Zuy4MyE=XbT_=T%!f!pEvaCSTz$?}3T@^S5 z_p9xj9|d0KOo;V~Zg7e=Kwy_$y&%05IYbt&LdM)nS32TEI7kg8(c`g>n3bw~{$joq{q*h;A-3xOJd0a*HD}UcTi|;1c3gQm<*&McxP+*RT4J-;nx1{XE%kw6Z30XTWsgPaT_qCy>&0h0NP4 zI-4N(3x0sVT)_6ygruLHNR6!Dr*{2HUiu+rQ^vOb-2$ES1q*?Xf!AB*ePldRGt^24 zXipF1py#GY?%*&aM}Li0X+VylHMNmN$msnW%?Tf8~^|S07*qoM6N<$f?z^NE&u=k literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 8c443dbb40..8d2206c648 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -1120,10 +1120,9 @@ class Application(QApplication): transient_scroller = 0 if isosx: transient_scroller = plugins['cocoa'][0].transient_scroller() - try: - self.pi.load_style(icon_map, transient_scroller) - except TypeError: - self.pi.load_style(icon_map) + icon_map[QStyle.SP_CustomBase + 1] = I('close-for-light-theme.png') + icon_map[QStyle.SP_CustomBase + 2] = I('close-for-dark-theme.png') + self.pi.load_style(icon_map, transient_scroller) def _send_file_open_events(self): with self._file_open_lock: diff --git a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp index eca591fa75..dbe356b5c1 100644 --- a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp +++ b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp @@ -180,6 +180,10 @@ class CalibreStyle: public QProxyStyle { } QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const { + if (standardIcon == QStyle::SP_DialogCloseButton) { + bool is_dark_theme = QApplication::instance()->property("is_dark_theme").toBool(); + return QIcon(icon_map.value(QStyle::SP_CustomBase + (is_dark_theme ? 2 : 1))); + } if (icon_map.contains(standardIcon)) return QIcon(icon_map.value(standardIcon)); return QProxyStyle::standardIcon(standardIcon, option, widget); }