QtGui: Bring back HBITMAP/HICON conversion functions.

- Move the conversion functions from the Lighthouse plugin
  to QtGui as qt_pixmap/From/To/HBITMAP/HICON().
- Re-enable them in Widgets (QFileIconProvider, QWindowsStyle).
- Use them in QtPrintSupport.

Change-Id: I1436bc604160d94c78ef270ad2b31bf3b20b5c90
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
This commit is contained in:
Friedemann Kleint 2011-11-28 14:33:54 +01:00 committed by Qt by Nokia
parent f6c107d799
commit b8d330904b
11 changed files with 82 additions and 196 deletions

View File

@ -46,6 +46,7 @@ SOURCES += \
image/qvolatileimage.cpp
SOURCES += image/qpixmap_qpa.cpp
win32: SOURCES += image/qpixmap_win.cpp
!symbian|contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2) {
SOURCES += image/qvolatileimagedata.cpp

View File

@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the plugins of the Qt Toolkit.
** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
@ -39,21 +39,24 @@
**
****************************************************************************/
#include "pixmaputils.h"
#include "qpixmap.h"
#include "qplatformpixmap_qpa.h"
#include "qpixmap_raster_p.h"
#include <QtGui/QBitmap>
#include <QtGui/QImage>
#include <QtGui/QPlatformPixmap>
#include <QtGui/private/qpixmap_raster_p.h>
#include <QtCore/QScopedArrayPointer>
#include <QtCore/QDebug>
#include <string.h>
#include <qglobal.h>
#include <qt_windows.h>
#include <QScopedArrayPointer>
QT_BEGIN_NAMESPACE
HBITMAP createIconMask(const QBitmap &bitmap)
enum HBitmapFormat
{
HBitmapNoAlpha,
HBitmapPremultipliedAlpha,
HBitmapAlpha
};
Q_GUI_EXPORT HBITMAP qt_createIconMask(const QBitmap &bitmap)
{
QImage bm = bitmap.toImage().convertToFormat(QImage::Format_Mono);
const int w = bm.width();
@ -67,7 +70,7 @@ HBITMAP createIconMask(const QBitmap &bitmap)
return hbm;
}
HBITMAP qPixmapToWinHBITMAP(const QPixmap &p, HBitmapFormat format)
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(const QPixmap &p, int hbitmapFormat = 0)
{
if (p.isNull())
return 0;
@ -77,7 +80,7 @@ HBITMAP qPixmapToWinHBITMAP(const QPixmap &p, HBitmapFormat format)
QRasterPlatformPixmap *data = new QRasterPlatformPixmap(p.depth() == 1 ?
QRasterPlatformPixmap::BitmapType : QRasterPlatformPixmap::PixmapType);
data->fromImage(p.toImage(), Qt::AutoColor);
return qPixmapToWinHBITMAP(QPixmap(data), format);
return qt_pixmapToWinHBITMAP(QPixmap(data), hbitmapFormat);
}
QRasterPlatformPixmap *d = static_cast<QRasterPlatformPixmap*>(p.handle());
@ -113,9 +116,9 @@ HBITMAP qPixmapToWinHBITMAP(const QPixmap &p, HBitmapFormat format)
// Copy over the data
QImage::Format imageFormat = QImage::Format_ARGB32;
if (format == HBitmapAlpha)
if (hbitmapFormat == HBitmapAlpha)
imageFormat = QImage::Format_RGB32;
else if (format == HBitmapPremultipliedAlpha)
else if (hbitmapFormat == HBitmapPremultipliedAlpha)
imageFormat = QImage::Format_ARGB32_Premultiplied;
const QImage image = rasterImage->convertToFormat(imageFormat);
const int bytes_per_line = w * 4;
@ -125,7 +128,7 @@ HBITMAP qPixmapToWinHBITMAP(const QPixmap &p, HBitmapFormat format)
return bitmap;
}
QPixmap qPixmapFromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format)
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHBITMAP(HBITMAP bitmap, int hbitmapFormat = 0)
{
// Verify size
BITMAP bitmap_info;
@ -160,7 +163,7 @@ QPixmap qPixmapFromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format)
QImage::Format imageFormat = QImage::Format_ARGB32_Premultiplied;
uint mask = 0;
if (format == HBitmapNoAlpha) {
if (hbitmapFormat == HBitmapNoAlpha) {
imageFormat = QImage::Format_RGB32;
mask = 0xff000000;
}
@ -188,7 +191,7 @@ QPixmap qPixmapFromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format)
return QPixmap::fromImage(image);
}
HICON qPixmapToWinHICON(const QPixmap &p)
Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &p)
{
QBitmap maskBitmap = p.mask();
if (maskBitmap.isNull()) {
@ -198,8 +201,8 @@ HICON qPixmapToWinHICON(const QPixmap &p)
ICONINFO ii;
ii.fIcon = true;
ii.hbmMask = createIconMask(maskBitmap);
ii.hbmColor = qPixmapToWinHBITMAP(p, HBitmapAlpha);
ii.hbmMask = qt_createIconMask(maskBitmap);
ii.hbmColor = qt_pixmapToWinHBITMAP(p, HBitmapAlpha);
ii.xHotspot = 0;
ii.yHotspot = 0;
@ -211,7 +214,7 @@ HICON qPixmapToWinHICON(const QPixmap &p)
return hIcon;
}
static QImage qImageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h)
Q_GUI_EXPORT QImage qt_imageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h)
{
BITMAPINFO bmi;
memset(&bmi, 0, sizeof(bmi));
@ -228,7 +231,7 @@ static QImage qImageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h)
return image;
// Get bitmap bits
QScopedPointer<uchar> data(new uchar [bmi.bmiHeader.biSizeImage]);
QScopedArrayPointer<uchar> data(new uchar [bmi.bmiHeader.biSizeImage]);
if (!GetDIBits(hdc, bitmap, 0, h, data.data(), &bmi, DIB_RGB_COLORS)) {
qErrnoWarning("%s: failed to get bitmap bits", __FUNCTION__);
return QImage();
@ -242,7 +245,7 @@ static QImage qImageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h)
return image;
}
QPixmap qPixmapFromWinHICON(HICON icon)
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon)
{
bool foundAlpha = false;
HDC screenDevice = GetDC(0);
@ -276,7 +279,7 @@ QPixmap qPixmapFromWinHICON(HICON icon)
HBITMAP winBitmap = CreateDIBSection(hdc, (BITMAPINFO*)&bitmapInfo, DIB_RGB_COLORS, (VOID**)&bits, NULL, 0);
HGDIOBJ oldhdc = (HBITMAP)SelectObject(hdc, winBitmap);
DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_NORMAL);
QImage image = qImageFromWinHBITMAP(hdc, winBitmap, w, h);
QImage image = qt_imageFromWinHBITMAP(hdc, winBitmap, w, h);
for (int y = 0 ; y < h && !foundAlpha ; y++) {
const QRgb *scanLine= reinterpret_cast<const QRgb *>(image.scanLine(y));
@ -290,7 +293,7 @@ QPixmap qPixmapFromWinHICON(HICON icon)
if (!foundAlpha) {
//If no alpha was found, we use the mask to set alpha values
DrawIconEx( hdc, 0, 0, icon, w, h, 0, 0, DI_MASK);
const QImage mask = qImageFromWinHBITMAP(hdc, winBitmap, w, h);
const QImage mask = qt_imageFromWinHBITMAP(hdc, winBitmap, w, h);
for (int y = 0 ; y < h ; y++){
QRgb *scanlineImage = reinterpret_cast<QRgb *>(image.scanLine(y));

View File

@ -1,71 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef PIXMAPUTILS_H
#define PIXMAPUTILS_H
#include "qtwindows_additional.h"
#include <QtCore/QtGlobal>
QT_BEGIN_NAMESPACE
class QBitmap;
class QPixmap;
enum HBitmapFormat
{
HBitmapNoAlpha,
HBitmapPremultipliedAlpha,
HBitmapAlpha
};
HBITMAP createIconMask(const QBitmap &bitmap);
HBITMAP qPixmapToWinHBITMAP(const QPixmap &p, HBitmapFormat format);
HICON qPixmapToWinHICON(const QPixmap &p);
QPixmap qPixmapFromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format);
QPixmap qPixmapFromWinHICON(HICON icon);
QT_END_NAMESPACE
#endif // PIXMAPUTILS_H

View File

@ -43,7 +43,6 @@
#include "qwindowscontext.h"
#include "qwindowswindow.h"
#include "qwindowsscreen.h"
#include "pixmaputils.h"
#include <QtGui/QPixmap>
#include <QtGui/QImage>
@ -57,6 +56,9 @@
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(const QPixmap &p, int hbitmapFormat = 0);
Q_GUI_EXPORT HBITMAP qt_createIconMask(const QBitmap &bitmap);
/*!
\class QWindowsCursor
\brief Platform cursor implementation
@ -84,8 +86,8 @@ HCURSOR QWindowsCursor::createPixmapCursor(const QPixmap &pixmap, int hotX, int
mask.fill(Qt::color1);
}
HBITMAP ic = qPixmapToWinHBITMAP(pixmap, HBitmapAlpha);
const HBITMAP im = createIconMask(mask);
HBITMAP ic = qt_pixmapToWinHBITMAP(pixmap, /* HBitmapAlpha */ 2);
const HBITMAP im = qt_createIconMask(mask);
ICONINFO ii;
ii.fIcon = 0;

View File

@ -42,7 +42,6 @@
#include "qwindowsscreen.h"
#include "qwindowscontext.h"
#include "qwindowswindow.h"
#include "pixmaputils.h"
#include "qwindowscursor.h"
#include "qtwindows_additional.h"
@ -150,6 +149,8 @@ QList<QPlatformScreen *> QWindowsScreen::screens()
QPixmap QWindowsScreen::grabWindow(WId window, int x, int y, int width, int height) const
{
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHBITMAP(HBITMAP bitmap, int hbitmapFormat = 0);
if (QWindowsContext::verboseIntegration)
qDebug() << __FUNCTION__ << window << x << y << width << height;
RECT r;
@ -174,7 +175,7 @@ QPixmap QWindowsScreen::grabWindow(WId window, int x, int y, int width, int heig
SelectObject(bitmap_dc, null_bitmap);
DeleteDC(bitmap_dc);
const QPixmap pixmap = qPixmapFromWinHBITMAP(bitmap, HBitmapNoAlpha);
const QPixmap pixmap = qt_pixmapFromWinHBITMAP(bitmap);
DeleteObject(bitmap);
ReleaseDC(0, display_dc);

View File

@ -43,7 +43,6 @@ SOURCES += \
qwindowsmime.cpp \
qwindowsdrag.cpp \
qwindowscursor.cpp \
pixmaputils.cpp \
qwindowsinputcontext.cpp \
qwindowsaccessibility.cpp \
qwindowstheme.cpp \
@ -70,7 +69,6 @@ HEADERS += \
qwindowsdrag.h \
qwindowsinternalmimedata.h \
qwindowscursor.h \
pixmaputils.h \
array.h \
qwindowsinputcontext.h \
qwindowsaccessibility.h \

View File

@ -60,6 +60,7 @@
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(const QPixmap &p, int hbitmapFormat = 0);
extern QPainterPath qt_regionToPath(const QRegion &region);
// #define QT_DEBUG_DRAW
@ -626,64 +627,6 @@ enum HBitmapFormat
HBitmapAlpha
};
HBITMAP qPixmapToWinHBITMAP(const QPixmap &p, HBitmapFormat format)
{
if (p.isNull())
return 0;
HBITMAP bitmap = 0;
if (p.handle()->classId() != QPlatformPixmap::RasterClass) {
QRasterPlatformPixmap *data = new QRasterPlatformPixmap(p.depth() == 1 ?
QRasterPlatformPixmap::BitmapType : QRasterPlatformPixmap::PixmapType);
data->fromImage(p.toImage(), Qt::AutoColor);
return qPixmapToWinHBITMAP(QPixmap(data), format);
}
QRasterPlatformPixmap *d = static_cast<QRasterPlatformPixmap*>(p.handle());
const QImage *rasterImage = d->buffer();
const int w = rasterImage->width();
const int h = rasterImage->height();
HDC display_dc = GetDC(0);
// Define the header
BITMAPINFO bmi;
memset(&bmi, 0, sizeof(bmi));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = w;
bmi.bmiHeader.biHeight = -h;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = w * h * 4;
// Create the pixmap
uchar *pixels = 0;
bitmap = CreateDIBSection(display_dc, &bmi, DIB_RGB_COLORS, (void **) &pixels, 0, 0);
ReleaseDC(0, display_dc);
if (!bitmap) {
qErrnoWarning("%s, failed to create dibsection", __FUNCTION__);
return 0;
}
if (!pixels) {
qErrnoWarning("%s, did not allocate pixel data", __FUNCTION__);
return 0;
}
// Copy over the data
QImage::Format imageFormat = QImage::Format_ARGB32;
if (format == HBitmapAlpha)
imageFormat = QImage::Format_RGB32;
else if (format == HBitmapPremultipliedAlpha)
imageFormat = QImage::Format_ARGB32_Premultiplied;
const QImage image = rasterImage->convertToFormat(imageFormat);
const int bytes_per_line = w * 4;
for (int y=0; y < h; ++y)
memcpy(pixels + y * bytes_per_line, image.scanLine(y), bytes_per_line);
return bitmap;
}
void QWin32PrintEngine::drawPixmap(const QRectF &targetRect,
const QPixmap &originalPixmap,
const QRectF &sourceRect)
@ -760,7 +703,7 @@ void QWin32PrintEngine::drawPixmap(const QRectF &targetRect,
}
QPixmap p = pixmap.copy(tileSize * x, tileSize * y, imgw, imgh);
HBITMAP hbitmap = qPixmapToWinHBITMAP(p, HBitmapNoAlpha);
HBITMAP hbitmap = qt_pixmapToWinHBITMAP(p, HBitmapNoAlpha);
HDC display_dc = GetDC(0);
HDC hbitmap_hdc = CreateCompatibleDC(display_dc);
HGDIOBJ null_bitmap = SelectObject(hbitmap_hdc, hbitmap);
@ -795,7 +738,7 @@ void QWin32PrintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pm, cons
int dc_state = SaveDC(d->hdc);
HDC display_dc = GetDC(0);
HBITMAP hbitmap = qPixmapToWinHBITMAP(pm, HBitmapNoAlpha);
HBITMAP hbitmap = qt_pixmapToWinHBITMAP(pm, HBitmapNoAlpha);
HDC hbitmap_hdc = CreateCompatibleDC(display_dc);
HGDIOBJ null_bitmap = SelectObject(hbitmap_hdc, hbitmap);

View File

@ -320,6 +320,8 @@ bool QVistaHelper::setDWMTitleBar(TitleBarChangeType type)
void QVistaHelper::drawTitleBar(QPainter *painter)
{
Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &);
Q_ASSERT(backButton_);
QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
QBackingStore *backingStore = backButton_->backingStore();
@ -351,9 +353,10 @@ void QVistaHelper::drawTitleBar(QPainter *painter)
QRect(titleOffset() - glowOffset, verticalCenter - textHeight / 2, textWidth, textHeight),
hdc);
if (!wizard->windowIcon().isNull()) {
const QIcon windowIcon = wizard->windowIcon();
if (!windowIcon.isNull()) {
QRect rect(leftMargin(), verticalCenter - iconSize() / 2, iconSize(), iconSize());
HICON hIcon = 0; //###FIXME wizard->windowIcon().pixmap(iconSize()).toWinHICON();
const HICON hIcon = qt_pixmapToWinHICON(windowIcon.pixmap(iconSize()));
DrawIconEx(hdc, rect.left(), rect.top(), hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT);
DestroyIcon(hIcon);
}

View File

@ -46,11 +46,14 @@
#include <qapplication.h>
#include <qdir.h>
#include <qpixmapcache.h>
#if defined(Q_WS_WIN)
#if defined(Q_OS_WIN)
# define _WIN32_IE 0x0500
# include <qt_windows.h>
# include <commctrl.h>
# include <objbase.h>
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon);
#elif defined(Q_WS_MAC)
# include <private/qt_cocoa_helpers_mac_p.h>
#endif
@ -96,7 +99,7 @@ class QFileIconProviderPrivate
public:
QFileIconProviderPrivate();
QIcon getIcon(QStyle::StandardPixmap name) const;
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
QIcon getWinIcon(const QFileInfo &fi) const;
#elif defined(Q_WS_MAC)
QIcon getMacIcon(const QFileInfo &fi) const;
@ -229,7 +232,7 @@ QIcon QFileIconProvider::icon(IconType type) const
return QIcon();
}
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
QIcon QFileIconProviderPrivate::getWinIcon(const QFileInfo &fileInfo) const
{
QIcon retIcon;
@ -284,7 +287,7 @@ QIcon QFileIconProviderPrivate::getWinIcon(const QFileInfo &fileInfo) const
}
if (pixmap.isNull()) {
#ifndef Q_OS_WINCE
pixmap = QPixmap::fromWinHICON(info.hIcon);
pixmap = qt_pixmapFromWinHICON(info.hIcon);
#else
pixmap = QPixmap::fromWinHICON(ImageList_GetIcon((HIMAGELIST) val, info.iIcon, ILD_NORMAL));
#endif
@ -314,7 +317,7 @@ QIcon QFileIconProviderPrivate::getWinIcon(const QFileInfo &fileInfo) const
key = QString::fromLatin1("qt_dir_%1").arg(info.iIcon);
}
#ifndef Q_OS_WINCE
pixmap = QPixmap::fromWinHICON(info.hIcon);
pixmap = qt_pixmapFromWinHICON(info.hIcon);
#else
pixmap = QPixmap::fromWinHICON(ImageList_GetIcon((HIMAGELIST) val, info.iIcon, ILD_NORMAL));
#endif
@ -418,13 +421,13 @@ QIcon QFileIconProvider::icon(const QFileInfo &info) const
QIcon retIcon = d->getMacIcon(info);
if (!retIcon.isNull())
return retIcon;
#elif defined Q_WS_WIN
#elif defined Q_OS_WIN
QIcon icon = d->getWinIcon(info);
if (!icon.isNull())
return icon;
#endif
if (info.isRoot())
#if defined (Q_WS_WIN) && !defined(Q_WS_WINCE)
#if defined (Q_OS_WIN) && !defined(Q_WS_WINCE)
{
UINT type = GetDriveType((wchar_t *)info.absoluteFilePath().utf16());
@ -482,7 +485,7 @@ QString QFileIconProvider::type(const QFileInfo &info) const
}
if (info.isDir())
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
return QApplication::translate("QFileDialog", "File Folder", "Match Windows Explorer");
#else
return QApplication::translate("QFileDialog", "Folder", "All other platforms");

View File

@ -1,4 +1,5 @@
# Qt/Windows only configuration file
# --------------------------------------------------------------------
INCLUDEPATH += ../3rdparty/wintab
INCLUDEPATH += ../3rdparty/wintab
LIBS *= -lshell32

View File

@ -79,7 +79,7 @@
QT_BEGIN_NAMESPACE
#if defined(Q_WS_WIN)
#if defined(Q_OS_WIN)
QT_BEGIN_INCLUDE_NAMESPACE
#include "qt_windows.h"
@ -109,7 +109,9 @@ typedef struct
typedef HRESULT (WINAPI *PtrSHGetStockIconInfo)(int siid, int uFlags, QSHSTOCKICONINFO *psii);
static PtrSHGetStockIconInfo pSHGetStockIconInfo = 0;
#endif //Q_WS_WIN
Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &);
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon);
#endif //Q_OS_WIN
QT_BEGIN_INCLUDE_NAMESPACE
#include <limits.h>
@ -123,7 +125,7 @@ enum QSliderDirection { SlUp, SlDown, SlLeft, SlRight };
QWindowsStylePrivate::QWindowsStylePrivate()
: alt_down(false), menuBarTimer(0), animationFps(10), animateTimer(0), animateStep(0)
{
#if defined(Q_WS_WIN) && !defined(Q_OS_WINCE)
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
if ((QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA
&& QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) {
QSystemLibrary shellLib(QLatin1String("shell32"));
@ -290,7 +292,7 @@ QWindowsStyle::~QWindowsStyle()
{
}
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
static inline QRgb colorref2qrgb(COLORREF col)
{
return qRgb(GetRValue(col), GetGValue(col), GetBValue(col));
@ -312,7 +314,7 @@ void QWindowsStyle::polish(QApplication *app)
d->inactiveGradientCaptionColor = app->palette().dark().color();
d->inactiveCaptionText = app->palette().background().color();
#if defined(Q_WS_WIN) //fetch native title bar colors
#if defined(Q_OS_WIN) //fetch native title bar colors
if(app->desktopSettingsAware()){
DWORD activeCaption = GetSysColor(COLOR_ACTIVECAPTION);
DWORD gradientActiveCaption = GetSysColor(COLOR_GRADIENTACTIVECAPTION);
@ -390,7 +392,7 @@ int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QW
break;
#endif
case PM_MaximumDragDistance:
#if defined(Q_WS_WIN)
#if defined(Q_OS_WIN)
{
HDC hdcScreen = GetDC(0);
int dpi = GetDeviceCaps(hdcScreen, LOGPIXELSX);
@ -487,7 +489,7 @@ int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QW
#endif // QT_NO_MENU
#if defined(Q_WS_WIN)
#if defined(Q_OS_WIN)
case PM_TitleBarHeight:
if (widget && (widget->windowType() == Qt::Tool)) {
// MS always use one less than they say
@ -514,13 +516,13 @@ int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QW
ret = QCommonStyle::pixelMetric(pm, opt, widget);
}
break;
#endif // Q_WS_WIN
#endif // Q_OS_WIN
case PM_SplitterWidth:
ret = qMax(4, QApplication::globalStrut().width());
break;
#if defined(Q_WS_WIN)
#if defined(Q_OS_WIN)
case PM_MdiSubWindowFrameWidth:
#if defined(Q_OS_WINCE)
ret = GetSystemMetrics(SM_CYDLGFRAME);
@ -926,7 +928,7 @@ static const char *const question_xpm[] = {
#endif //QT_NO_IMAGEFORMAT_XPM
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
static QPixmap loadIconFromShell32( int resourceId, int size )
{
#ifdef Q_OS_WINCE
@ -937,7 +939,7 @@ static QPixmap loadIconFromShell32( int resourceId, int size )
if( hmod ) {
HICON iconHandle = (HICON)LoadImage(hmod, MAKEINTRESOURCE(resourceId), IMAGE_ICON, size, size, 0);
if( iconHandle ) {
QPixmap iconpixmap = QPixmap::fromWinHICON( iconHandle );
QPixmap iconpixmap = qt_pixmapFromWinHICON(iconHandle);
DestroyIcon(iconHandle);
return iconpixmap;
}
@ -952,7 +954,7 @@ static QPixmap loadIconFromShell32( int resourceId, int size )
QPixmap QWindowsStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt,
const QWidget *widget) const
{
#if defined(Q_WS_WIN) && !defined(Q_OS_WINCE)
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
QPixmap desktopIcon;
switch(standardPixmap) {
case SP_DriveCDIcon:
@ -1035,28 +1037,28 @@ QPixmap QWindowsStyle::standardPixmap(StandardPixmap standardPixmap, const QStyl
case SP_MessageBoxInformation:
{
HICON iconHandle = LoadIcon(NULL, IDI_INFORMATION);
desktopIcon = QPixmap::fromWinHICON( iconHandle );
desktopIcon = qt_pixmapFromWinHICON(iconHandle);
DestroyIcon(iconHandle);
break;
}
case SP_MessageBoxWarning:
{
HICON iconHandle = LoadIcon(NULL, IDI_WARNING);
desktopIcon = QPixmap::fromWinHICON( iconHandle );
desktopIcon = qt_pixmapFromWinHICON(iconHandle);
DestroyIcon(iconHandle);
break;
}
case SP_MessageBoxCritical:
{
HICON iconHandle = LoadIcon(NULL, IDI_ERROR);
desktopIcon = QPixmap::fromWinHICON( iconHandle );
desktopIcon = qt_pixmapFromWinHICON(iconHandle);
DestroyIcon(iconHandle);
break;
}
case SP_MessageBoxQuestion:
{
HICON iconHandle = LoadIcon(NULL, IDI_QUESTION);
desktopIcon = QPixmap::fromWinHICON( iconHandle );
desktopIcon = qt_pixmapFromWinHICON(iconHandle);
DestroyIcon(iconHandle);
break;
}
@ -1071,7 +1073,7 @@ QPixmap QWindowsStyle::standardPixmap(StandardPixmap standardPixmap, const QStyl
memset(&iconInfo, 0, sizeof(iconInfo));
iconInfo.cbSize = sizeof(iconInfo);
if (pSHGetStockIconInfo(_SIID_SHIELD, _SHGFI_ICON | _SHGFI_SMALLICON, &iconInfo) == S_OK) {
pixmap = QPixmap::fromWinHICON(iconInfo.hIcon);
pixmap = qt_pixmapFromWinHICON(iconInfo.hIcon);
DestroyIcon(iconInfo.hIcon);
return pixmap;
}
@ -1154,7 +1156,7 @@ int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWid
ret = 0;
break;
#if defined(Q_WS_WIN)
#if defined(Q_OS_WIN)
case SH_UnderlineShortcut:
{
ret = 1;
@ -1204,7 +1206,7 @@ int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWid
#endif // QT_NO_RUBBERBAND
case SH_LineEdit_PasswordCharacter:
{
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
if (widget && (QSysInfo::WindowsVersion >= QSysInfo::WV_XP && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) {
const QFontMetrics &fm = widget->fontMetrics();
if (fm.inFont(QChar(0x25CF)))
@ -3105,7 +3107,7 @@ QIcon QWindowsStyle::standardIconImplementation(StandardPixmap standardIcon, con
{
QIcon icon;
QPixmap pixmap;
#ifdef Q_WS_WIN
#ifdef Q_OS_WIN
switch (standardIcon) {
case SP_FileDialogNewFolder:
{
@ -3216,7 +3218,7 @@ QIcon QWindowsStyle::standardIconImplementation(StandardPixmap standardIcon, con
memset(&iconInfo, 0, sizeof(iconInfo));
iconInfo.cbSize = sizeof(iconInfo);
if (pSHGetStockIconInfo(_SIID_SHIELD, _SHGFI_ICON | _SHGFI_LARGEICON, &iconInfo) == S_OK) {
icon.addPixmap(QPixmap::fromWinHICON(iconInfo.hIcon));
icon.addPixmap(qt_pixmapFromWinHICON(iconInfo.hIcon));
DestroyIcon(iconInfo.hIcon);
}
}