From b0a0403daf81e82ea732aa91ec92cf94553a7935 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 20 Jan 2012 17:33:23 +0100 Subject: QMessageBox: Clean up some Q_WS_WIN code. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable 'Close' of system menu according to whether escape button is present. Change-Id: I305e4732f781dbe2d81c2503ee278ec33579acdb Reviewed-by: Morten Johan Sørvig --- src/widgets/dialogs/qmessagebox.cpp | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'src/widgets/dialogs') diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index c2718821ae..115c41a082 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -65,20 +65,27 @@ #include #include -#ifndef QT_NO_STYLE_S60 -#include +#ifdef Q_OS_WIN +# include +# include #endif -#ifdef Q_WS_WINCE -extern bool qt_wince_is_mobile(); //defined in qguifunctions_wince.cpp -extern bool qt_wince_is_smartphone();//defined in qguifunctions_wince.cpp -extern bool qt_wince_is_pocket_pc(); //defined in qguifunctions_wince.cpp +QT_BEGIN_NAMESPACE -#include "qguifunctions_wince.h" +#ifdef Q_OS_WIN +static inline HMENU qt_getWindowsSystemMenu(const QWidget *w) +{ + QWindow *window = w->windowHandle(); + if (!window) + if (const QWidget *nativeParent = w->nativeParentWidget()) + window = nativeParent->windowHandle(); + if (window) + if (void *handle = QGuiApplication::platformNativeInterface()->nativeResourceForWindow("handle", window)) + return GetSystemMenu(reinterpret_cast(handle), FALSE); + return 0; +} #endif -QT_BEGIN_NAMESPACE - enum Button { Old_Ok = 1, Old_Cancel = 2, Old_Yes = 3, Old_No = 4, Old_Abort = 5, Old_Retry = 6, Old_Ignore = 7, Old_YesAll = 8, Old_NoAll = 9, Old_ButtonMask = 0xFF, NewButtonMask = 0xFFFFFC00 }; @@ -1480,13 +1487,10 @@ void QMessageBox::showEvent(QShowEvent *e) #ifndef QT_NO_ACCESSIBILITY QAccessible::updateAccessibility(this, 0, QAccessible::Alert); #endif -#ifdef Q_WS_WIN - HMENU systemMenu = GetSystemMenu((HWND)winId(), FALSE); - if (!d->detectedEscapeButton) { - EnableMenuItem(systemMenu, SC_CLOSE, MF_BYCOMMAND|MF_GRAYED); - } - else { - EnableMenuItem(systemMenu, SC_CLOSE, MF_BYCOMMAND|MF_ENABLED); +#ifdef Q_OS_WIN + if (const HMENU systemMenu = qt_getWindowsSystemMenu(this)) { + EnableMenuItem(systemMenu, SC_CLOSE, d->detectedEscapeButton ? + MF_BYCOMMAND|MF_ENABLED : MF_BYCOMMAND|MF_GRAYED); } #endif QDialog::showEvent(e); -- cgit v1.2.3