From d58162127a1f0c4c7de919643cd5cccc8a84b259 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 11 Jan 2018 12:54:56 +0100 Subject: [PATCH] QCommonStyle: Add dock title bar icons Add larger pixmaps for the dock title bar icons; override them by the XPM in fusion style to maintain the behavior. Task-number: QTBUG-38776 Change-Id: I7d0e022bbf620d2aad2b6ee011b8bb9a745d7c3b Reviewed-by: Gabriel de Dietrich --- src/widgets/styles/images/closedock-10.png | Bin 0 -> 284 bytes src/widgets/styles/images/closedock-16.png | Bin 0 -> 299 bytes src/widgets/styles/images/closedock-20.png | Bin 0 -> 374 bytes src/widgets/styles/images/closedock-32.png | Bin 0 -> 368 bytes src/widgets/styles/images/closedock-48.png | Bin 0 -> 468 bytes src/widgets/styles/images/closedock-64.png | Bin 0 -> 541 bytes .../styles/images/normalizedockup-10.png | Bin 0 -> 138 bytes .../styles/images/normalizedockup-16.png | Bin 0 -> 256 bytes .../styles/images/normalizedockup-20.png | Bin 0 -> 143 bytes .../styles/images/normalizedockup-32.png | Bin 0 -> 273 bytes .../styles/images/normalizedockup-48.png | Bin 0 -> 279 bytes .../styles/images/normalizedockup-64.png | Bin 0 -> 291 bytes src/widgets/styles/qcommonstyle.cpp | 24 ++++++++++++++++++ src/widgets/styles/qfusionstyle.cpp | 13 ++++++++++ src/widgets/styles/qstyle.qrc | 12 +++++++++ 15 files changed, 49 insertions(+) create mode 100644 src/widgets/styles/images/closedock-10.png create mode 100644 src/widgets/styles/images/closedock-16.png create mode 100644 src/widgets/styles/images/closedock-20.png create mode 100644 src/widgets/styles/images/closedock-32.png create mode 100644 src/widgets/styles/images/closedock-48.png create mode 100644 src/widgets/styles/images/closedock-64.png create mode 100644 src/widgets/styles/images/normalizedockup-10.png create mode 100644 src/widgets/styles/images/normalizedockup-16.png create mode 100644 src/widgets/styles/images/normalizedockup-20.png create mode 100644 src/widgets/styles/images/normalizedockup-32.png create mode 100644 src/widgets/styles/images/normalizedockup-48.png create mode 100644 src/widgets/styles/images/normalizedockup-64.png diff --git a/src/widgets/styles/images/closedock-10.png b/src/widgets/styles/images/closedock-10.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2af3455017af4632bad5d17548a3bf08763cd9 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2VGmzZ%#=aj&aTa()7BevL9RXp+soH$fK*5jz zpAc6d4FsW~p(-k#4h{}xU|?!)ZenI;3PKhpX69z*mS$$=CZ-l(5i_u?IZy<`1uHN& z1&W$mn1a-p%RAkD3N%!@B*-tAfr*)&BOod08j`hY-VO*0ur$>H8Y1GGc$7&Q!}6xT;%Io zS4E(45+y-?!3+vox(3D;*6vYpiN)3ReLsKy`SbVh-+vCq4|;)Wl001;LnJQe_TQCi z5D;+r8sFu$s`kJ7St)JtJ8x!wHVjy`Nv%=t@E*2=`BUAWa~u MPgg&ebxsLQ0JmIUtN;K2 literal 0 HcmV?d00001 diff --git a/src/widgets/styles/images/closedock-20.png b/src/widgets/styles/images/closedock-20.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ea92d1de1183952c949f9165882b8cba7ec4c7 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaoCO|{#S9F5M?jcysy3fAP%tOJ zC&U#`6~B|(0{42(?7>^!`(@;de|QR{Z?*?;Kh(Gw?6 zow<1B&fWVDAHV$k?e{?sXR^NbjO=+*_9y{5qp&M7Ld= zBeio`jVJ7NQ=Ost`(EeVz4v@pp1yV6FrC%m!n)X=Yy0|Mp1*5$%xqbIZnT*G#b#l1 YMm1*s_a!RR(?J2{>FVdQ&MBb@04be+3IG5A literal 0 HcmV?d00001 diff --git a/src/widgets/styles/images/closedock-32.png b/src/widgets/styles/images/closedock-32.png new file mode 100644 index 0000000000000000000000000000000000000000..95a1ad014d1ff9b1a305bde214b07e5a552d6c10 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyoCO|{#S9F5M?jcysy3fAP%tpS zC&U#<1A(cjrMbDeiMhF%nFWwEH8nQ{a?K#X0*Py3VrF4#W?^P#ZfXWp3?|KiB4$7? z1l^gjX)e%2sgfYSUgfwUfBE+P`_G^MEak- zaeD9N(?ZP(JPv_tzNK!w61DZ@|N0DLEdhm%)^`uua;ppXSiai5^UpD}KPBuZTAC+z ziU|Zie4*B*J=eqL@;MjV1g&d*?-snBG24=_cK;UqrF80V!rUXP f@AQ98T>p)IZn^Bnh>(PbpfK`u^>bP0l+XkK@6?Kt literal 0 HcmV?d00001 diff --git a/src/widgets/styles/images/closedock-48.png b/src/widgets/styles/images/closedock-48.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca36d13947eed46e5649bbad66bac9077e5d147 GIT binary patch literal 468 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-soCO|{#S9F5M?jcysy3fAP%t^b zC&U#m7DuC7~lmz(&GcdET@=M5TXc?H8nuX*PSFc{P_WHBuFJ8TQ z_x|JOzyEqB@^u2$zV>u+4DmRA_nN0rlYxN4MGlKa5`lq^p7;MxafPm>1uM*`(VYd8z=mB z+_UW8$`^m%&!6MC>Uzh9>8^LYmEKl9{QAA!iRFFooTwr>*NJ=59Tncs7k#nEplQbX z{cl${XT^WLtnXJB_C`Cra(SihyVVQK)mFFGihgaj*!WxPrTf7*tCubP0l+XkK^#Zui literal 0 HcmV?d00001 diff --git a/src/widgets/styles/images/closedock-64.png b/src/widgets/styles/images/closedock-64.png new file mode 100644 index 0000000000000000000000000000000000000000..cbec2052adc1a0ff831ef34e56819d37ae71c213 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!I14-?iy0XBj({-ZRBb+KpkQ)< zPlzj!4h;=;aB#4)vNAO_H8V2b|fr4xS zJ|V6^+SJT^TiU8~Ko(<3kY6x^!?PP{K#r`Zi(?4K_2dWk2N+yr_;|i0EU9R4oXFVn cMzVo{At;T--FMpTRG>lzPgg&ebxsLQ02!+y+yDRo literal 0 HcmV?d00001 diff --git a/src/widgets/styles/images/normalizedockup-16.png b/src/widgets/styles/images/normalizedockup-16.png new file mode 100644 index 0000000000000000000000000000000000000000..1b795a9e84550263e26922d43dff336e6757160f GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`kN5fEmas?8@26toQR z32_C|#ugT4AYf%`YGH0}4rZI1nwpuK0@>!KX67blFovlGkPQ?8A{R63LZD`$k|4ie z1|t*ipxBHVOV;c?bM4xbS6{z=mh4al%KCe{IEF}E?mg?s*Py`Taxrj)sN>Ol|2Ir} zB_Xc!W44;UFL%Xm!=6J~lc&oxok+XH70`a_YqmsDonCmIqRjGD{~9+lr+z!d{>Q1~ dbhOKI>E=o7YJEiyrT~p*@O1TaS?83{1OU`rPNo0= literal 0 HcmV?d00001 diff --git a/src/widgets/styles/images/normalizedockup-20.png b/src/widgets/styles/images/normalizedockup-20.png new file mode 100644 index 0000000000000000000000000000000000000000..857338427f604197d6573459af4aff38246af78b GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAj3?#R^_xk}U&H|6fVg?4jBOuH;Rhv&5D99Gz z6XFV_P0h@=rL8&#WHFWm`2{mLJiCzwO i7%xcp_g{dAmEp~Eq1V?HYmNa`GkCiCxvXd%9a^RmaN@==*-n?EYb1KK-mOO7sn8b(^oHC{cZG1ZC{r?S7 z0&CXlwRHS>Z&M>~#4t@!)`WeR(U&!WOd`x-4AS4G8MPQ!GtT}Oo5f$DbY6eLla=?` vg)jEF^E>SO&-Ca(m$^e2=bcqWA3`OMZ;(^H_;~(Dpj`}}u6{1-oD!M^#4mK{2C?ctMGU%xkAjGP9PP4jed4DmSr_KGE6gMxrVpuio5?e+f;M+HjE z*~ofWzkN>|k3?|Uq7Sp7v# zib?o@Sn+*_S>*x398bk%LKLoYY-pZjTK|e|j<@5>nezgbfHpFCy85}Sb4q9e0A@{C Ao&W#< literal 0 HcmV?d00001 diff --git a/src/widgets/styles/images/normalizedockup-64.png b/src/widgets/styles/images/normalizedockup-64.png new file mode 100644 index 0000000000000000000000000000000000000000..7b540f04f87260b129e03d6f0709fa599829648e GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!I14-?iy0XBj({-ZRBb+KprB=d zPlzj!Ha0dkGcz+WF*h@_GBpPQAQwUcX;U*ZQxIuxVg?ikktU`fuG+MjAAp*LN`m}? z8RSe{y<=iC+GosIa{A1*2VZ|K=)9%?lr8dfaSVw#{PxOTz6J#zw~I|2|CE0H<9~gj z^~jZLj>#v=-EYm|RG2i2KbVEV;q`$N+}&4}F?vRNFx+EwT6wE-VGOsDKyLYRc7_F| z2R_f7E|+k{E|fu@LH2xm$XAXF&lng?*q(%HNHgj(lsC-wv2?P3&7yj;Vwx0hmn_hB N22WQ%mvv4FO#r9DTy+2d literal 0 HcmV?d00001 diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 4a83cdd4a6..1190099c16 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -5709,6 +5709,22 @@ QPixmap QCommonStyle::standardPixmap(StandardPixmap sp, const QStyleOption *opti return QPixmap(); } +#if QT_CONFIG(imageformat_png) +static inline QString iconResourcePrefix() { return QStringLiteral(":/qt-project.org/styles/commonstyle/images/"); } +static inline QString iconPngSuffix() { return QStringLiteral(".png"); } + +static void addIconFiles(const QString &prefix, const int sizes[], size_t count, QIcon &icon) +{ + for (size_t i = 0; i < count; ++i) { + const int size = sizes[i]; + icon.addFile(prefix + QString::number(size) + iconPngSuffix(), QSize(size, size)); + } +} + +static const int dockTitleIconSizes[] = {10, 16, 20, 32, 48, 64}; + +#endif // imageformat_png + /*! \internal */ @@ -6215,12 +6231,20 @@ QIcon QCommonStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption case SP_MediaVolumeMuted: icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-muted-16.png"), QSize(16, 16)); break; + case SP_TitleBarCloseButton: + addIconFiles(iconResourcePrefix() + QStringLiteral("closedock-"), + dockTitleIconSizes, sizeof(dockTitleIconSizes)/sizeof(dockTitleIconSizes[0]), icon); + break; case SP_TitleBarMenuButton: # ifndef QT_NO_IMAGEFORMAT_XPM icon.addPixmap(titleBarMenuCachedPixmapFromXPM()); # endif icon.addFile(QLatin1String(":/qt-project.org/qmessagebox/images/qtlogo-64.png")); break; + case SP_TitleBarNormalButton: + addIconFiles(iconResourcePrefix() + QStringLiteral("normalizedockup-"), + dockTitleIconSizes, sizeof(dockTitleIconSizes)/sizeof(dockTitleIconSizes[0]), icon); + break; #endif // QT_NO_IMAGEFORMAT_PNG default: icon.addPixmap(proxy()->standardPixmap(standardIcon, option, widget)); diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index 80196a39a2..a2b94d59d4 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -3769,6 +3769,19 @@ QRect QFusionStyle::subElementRect(SubElement sr, const QStyleOption *opt, const QIcon QFusionStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const { +#if QT_CONFIG(imageformat_xpm) + switch (standardIcon) { + case SP_TitleBarNormalButton: + return QIcon(QPixmap(dock_widget_restore_xpm)); + case SP_TitleBarMinButton: + return QIcon(QPixmap(workspace_minimize)); + case SP_TitleBarCloseButton: + case SP_DockWidgetCloseButton: + return QIcon(QPixmap(dock_widget_close_xpm)); + default: + break; + } +#endif // imageformat_xpm return QCommonStyle::standardIcon(standardIcon, option, widget); } diff --git a/src/widgets/styles/qstyle.qrc b/src/widgets/styles/qstyle.qrc index 9bcd3904a1..2dc3207e6d 100644 --- a/src/widgets/styles/qstyle.qrc +++ b/src/widgets/styles/qstyle.qrc @@ -128,6 +128,18 @@ images/media-volume-16.png images/media-volume-muted-16.png images/fusion_groupbox.png + images/closedock-10.png + images/closedock-16.png + images/closedock-20.png + images/closedock-32.png + images/closedock-48.png + images/closedock-64.png + images/normalizedockup-10.png + images/normalizedockup-16.png + images/normalizedockup-20.png + images/normalizedockup-32.png + images/normalizedockup-48.png + images/normalizedockup-64.png images/closedock-macstyle-16.png