macOS: Get rid of QCocoaWindowFunctions

The functionality is now directly available in the QCocoaWindow platform
interface, instead of going through the indirection of the platform headers
and native interface.

Task-number: QTBUG-84220
Change-Id: Ifc48263c83806705b44364f7727d317847737ab4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Tor Arne Vestbø 2020-05-14 11:34:26 +02:00
parent d7fc2fb5c6
commit bcbc4d4de2
9 changed files with 2 additions and 155 deletions

View File

@ -179,6 +179,7 @@ struct Q_GUI_EXPORT QCocoaWindow
{
QT_DECLARE_PLATFORM_INTERFACE(QCocoaWindow)
virtual void setContentBorderEnabled(bool enable) = 0;
virtual QPoint bottomLeftClippedByNSWindowOffset() const = 0;
};
#endif

View File

@ -1 +0,0 @@
HEADERS += $$PWD/qcocoawindowfunctions_p.h

View File

@ -1,58 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\class QCocoaWindowFunctions
\inmodule QtPlatformHeaders
\brief The QCocoaWindowFunctions class is an inline class containing
miscellaneous functionality for NSWindow and NSView window specific functionality.
\note There is no binary compatibility guarantee for this class,
meaning that an application using it is only guaranteed to work with the Qt
version it was developed against.
*/
/*!
\typedef QCocoaWindowFunctions::BottomLeftClippedByNSWindowOffset
This is the typedef for the function returned by QGuiApplication::platformFunction when passed clippedByNSWindowIdentifier.
*/
/*!
\fn QByteArray QCocoaWindowFunctions::bottomLeftClippedByNSWindowOffsetIdentifier()
This function returns the bytearray that can be used to query
QGuiApplication::platformFunction to retrieve the BottomLeftClippedByNSWindowOffset function.
*/
/*!
\fn QPoint QCocoaWindowFunctions::bottomLeftClippedByNSWindowOffset(QWindow *window)
This is a convenience function that can be used directly instead of resolving the function pointer.
\a window will be relayed to the function retrieved by QGuiApplication
*/

View File

@ -1,74 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QCOCOAWINDOWFUNCTIONS_H
#define QCOCOAWINDOWFUNCTIONS_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtPlatformHeaders/private/qplatformheaderhelper_p.h>
QT_BEGIN_NAMESPACE
class QWindow;
class QCocoaWindowFunctions {
public:
typedef QPoint (*BottomLeftClippedByNSWindowOffset)(QWindow *window);
static const QByteArray bottomLeftClippedByNSWindowOffsetIdentifier() { return QByteArrayLiteral("CocoaBottomLeftClippedByNSWindowOffset"); }
static QPoint bottomLeftClippedByNSWindowOffset(QWindow *window)
{
return QPlatformHeaderHelper::callPlatformFunction<QPoint, BottomLeftClippedByNSWindowOffset>(bottomLeftClippedByNSWindowOffsetIdentifier(),window);
}
};
QT_END_NAMESPACE
#endif // QCOCOAWINDOWFUNCTIONS_H

View File

@ -5,7 +5,6 @@ include(xcbfunctions/xcbfunctions.pri)
include(eglfsfunctions/eglfsfunctions.pri)
include(windowsfunctions/windowsfunctions.pri)
include(helper/helper.pri)
include(cocoafunctions/cocoafunctions.pri)
include(waylandfunctions/waylandfunctions.pri)
include(linuxfbfunctions/linuxfbfunctions.pri)

View File

@ -63,8 +63,6 @@ public:
NativeResourceForIntegrationFunction nativeResourceFunctionForIntegration(const QByteArray &resource) override;
QFunctionPointer platformFunction(const QByteArray &function) const override;
public Q_SLOTS:
void onAppFocusWindowChanged(QWindow *window);

View File

@ -64,8 +64,6 @@
#include <QtGui/private/qcoregraphics_p.h>
#include <QtPlatformHeaders/private/qcocoawindowfunctions_p.h>
#if QT_CONFIG(vulkan)
#include <MoltenVK/mvk_vulkan.h>
#endif
@ -160,14 +158,6 @@ void QCocoaNativeInterface::onAppFocusWindowChanged(QWindow *window)
QCocoaMenuBar::updateMenuBarImmediately();
}
QFunctionPointer QCocoaNativeInterface::platformFunction(const QByteArray &function) const
{
if (function == QCocoaWindowFunctions::bottomLeftClippedByNSWindowOffsetIdentifier())
return QFunctionPointer(QCocoaWindowFunctions::BottomLeftClippedByNSWindowOffset(QCocoaWindow::bottomLeftClippedByNSWindowOffsetStatic));
return nullptr;
}
void QCocoaNativeInterface::addToMimeList(void *macPasteboardMime)
{
qt_mac_addToGlobalMimeList(reinterpret_cast<QMacInternalPasteboardMime *>(macPasteboardMime));

View File

@ -202,8 +202,7 @@ public:
QWindow *childWindowAt(QPoint windowPoint);
bool shouldRefuseKeyWindowAndFirstResponder();
static QPoint bottomLeftClippedByNSWindowOffsetStatic(QWindow *window);
QPoint bottomLeftClippedByNSWindowOffset() const;
QPoint bottomLeftClippedByNSWindowOffset() const override;
enum RecreationReason {
RecreationNotNeeded = 0,

View File

@ -1881,13 +1881,6 @@ bool QCocoaWindow::shouldRefuseKeyWindowAndFirstResponder()
return false;
}
QPoint QCocoaWindow::bottomLeftClippedByNSWindowOffsetStatic(QWindow *window)
{
if (window->handle())
return static_cast<QCocoaWindow *>(window->handle())->bottomLeftClippedByNSWindowOffset();
return QPoint();
}
QPoint QCocoaWindow::bottomLeftClippedByNSWindowOffset() const
{
if (!m_view)