/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #pragma once #include #include #include #include #include #include #include #include #include #include #ifdef Q_OS_WIN # include # include # include AZ_PUSH_DISABLE_WARNING(4458, "-Wunknown-warning-option") # include AZ_POP_DISABLE_WARNING #endif // Q_OS_WIN #include "Util/EditorUtils.h" namespace QtUtil { #ifdef Q_OS_WIN inline HWND getNativeHandle(QWidget* widget) { QWindow* window = widget->windowHandle(); QPlatformNativeInterface* nativeInterface = QGuiApplication::platformNativeInterface(); return static_cast(nativeInterface->nativeResourceForWindow(QByteArrayLiteral("handle"), window)); } #endif // Q_OS_WIN //! a helper class which captures the HWND of a given widget for the duration of its life cycle. //! used mainly to set the parent of popup dialogs like file dialogs which are still MFC classes. class QtMFCScopedHWNDCapture { public: QtMFCScopedHWNDCapture(QWidget* source = nullptr) { if (!source) { source = qApp->activeWindow(); } if (source) { m_widget = source; } } ~QtMFCScopedHWNDCapture() { m_widget = nullptr; m_attached = false; } // this is here so that it will also work for widgets that need parents if we upgrade the file dialog and other dialogs to be widget based operator QWidget*() { return m_widget; } private: bool m_attached = false; QWidget* m_widget = nullptr; }; }