18#include <private/qguiapplication_p.h>
19#include <QtCore/qloggingcategory.h>
20#include <QtGui/qpalette.h>
21#include <QtGui/qscreen.h>
22#include <qpa/qplatformdialoghelper.h>
24#include <objc/runtime.h>
25#include <objc/message.h>
85 QtCocoaEventSubTypeWakeup = SHRT_MAX,
86 QtCocoaEventSubTypePostMessage = SHRT_MAX-1
89class QCocoaPostMessageArgs {
104 ~QCocoaPostMessageArgs()
113T qt_mac_resolveOption(
const T &fallback,
const QByteArray &environment)
119 return T(env.
toInt());
132 return T(env.
toInt());
139 return windowProperty.
value<T>();
150 constexpr auto begin()
const {
using std::rbegin;
return rbegin(
r); }
151 constexpr auto begin() {
using std::rbegin;
return rbegin(
r); }
152 constexpr auto end()
const {
using std::rend;
return rend(
r); }
153 constexpr auto end() {
using std::rend;
return rend(
r); }
156constexpr backwards_t<R> backwards(
R&&
r) {
return {std::forward<R>(
r)}; }
161#define QNSPanelDelegate QT_MANGLE_NAMESPACE(QNSPanelDelegate)
163@protocol QNSPanelDelegate
166- (
void)onCancelClicked;
169@interface QT_MANGLE_NAMESPACE(QNSPanelContentsWrapper) : NSView
171@property (nonatomic, readonly) NSButton *okButton;
172@property (nonatomic, readonly) NSButton *cancelButton;
173@property (nonatomic, readonly) NSView *panelContents;
174@property (nonatomic, assign) NSEdgeInsets panelContentsMargins;
176- (instancetype)initWithPanelDelegate:(
id<QNSPanelDelegate>)panelDelegate;
192struct objc_msgsend_requires_stret
193{
static const bool value =
194#if defined(Q_PROCESSOR_X86)
195 #define PLATFORM_USES_SEND_SUPER_STRET 1
197 sizeof(T) >
sizeof(
void*) * 2;
198#elif defined(Q_PROCESSOR_ARM_32)
199 #define PLATFORM_USES_SEND_SUPER_STRET 1
201 sizeof(T) >
sizeof(
void*);
202#elif defined(Q_PROCESSOR_ARM_64)
203 #define PLATFORM_USES_SEND_SUPER_STRET 0
209struct objc_msgsend_requires_stret<
void>
210{
static const bool value =
false; };
212template <
typename ReturnType,
typename... Args>
213ReturnType qt_msgSendSuper(
id receiver,
SEL selector, Args...
args)
215 static_assert(!objc_msgsend_requires_stret<ReturnType>::value,
216 "The given return type requires stret on this platform");
218 typedef ReturnType (*SuperFn)(objc_super *, SEL, Args...);
219 SuperFn superFn =
reinterpret_cast<SuperFn
>(objc_msgSendSuper);
220 objc_super sup = { receiver, [receiver superclass] };
224#if PLATFORM_USES_SEND_SUPER_STRET
225template <
typename ReturnType,
typename... Args>
226ReturnType qt_msgSendSuper_stret(
id receiver,
SEL selector, Args...
args)
228 static_assert(objc_msgsend_requires_stret<ReturnType>::value,
229 "The given return type does not use stret on this platform");
231 typedef void (*SuperStretFn)(ReturnType *, objc_super *, SEL, Args...);
232 SuperStretFn superStretFn =
reinterpret_cast<SuperStretFn
>(objc_msgSendSuper_stret);
234 objc_super sup = { receiver, [receiver superclass] };
241template<
typename... Args>
242class QSendSuperHelper {
244 QSendSuperHelper(
id receiver,
SEL sel, Args...
args)
245 : m_receiver(receiver), m_selector(sel), m_args(
std::make_tuple(
args...)), m_sent(
false)
252 msgSendSuper<void>(m_args);
255 template <
typename ReturnType>
256 operator ReturnType()
259 Method method = class_getInstanceMethod(object_getClass(m_receiver), m_selector);
260 char returnTypeEncoding[256];
261 method_getReturnType(
method, returnTypeEncoding,
sizeof(returnTypeEncoding));
263 NSGetSizeAndAlignment(returnTypeEncoding,
nullptr, &alignedReturnTypeSize);
264 Q_ASSERT(alignedReturnTypeSize ==
sizeof(ReturnType));
267 return msgSendSuper<ReturnType>(m_args);
271 template <
typename ReturnType,
bool V>
272 using if_requires_stret =
typename std::enable_if<objc_msgsend_requires_stret<ReturnType>::value == V, ReturnType>
::type;
274 template <
typename ReturnType,
int... Is>
277 return qt_msgSendSuper<ReturnType>(m_receiver, m_selector, std::get<Is>(
args)...);
280#if PLATFORM_USES_SEND_SUPER_STRET
281 template <
typename ReturnType,
int... Is>
284 return qt_msgSendSuper_stret<ReturnType>(m_receiver, m_selector, std::get<Is>(
args)...);
288 template <
typename ReturnType>
289 ReturnType msgSendSuper(std::tuple<Args...>&
args)
296 std::tuple<Args...> m_args;
300template<
typename... Args>
301QSendSuperHelper<Args...> qt_objcDynamicSuperHelper(
id receiver,
SEL selector, Args...
args)
303 return QSendSuperHelper<Args...>(receiver,
selector,
args...);
307#define qt_objcDynamicSuper(...) qt_objcDynamicSuperHelper(self, _cmd, ##__VA_ARGS__)
311struct InputMethodQueryResult :
public QHash<int, QVariant>
313 operator bool() {
return !isEmpty(); }
328 bool isRepeat =
false;
332 static const quint32 nativeScanCode = 0;
335 NSEventModifierFlags nativeModifiers = 0;
int toInt(bool *ok=nullptr, int base=10) const
Returns the byte array converted to an int using base base, which is ten by default.
bool isEmpty() const noexcept
Returns true if the byte array has size 0; otherwise returns false.
Type
This enum type defines the valid event types in Qt.
Returns a copy of the pixmap that is transformed using the given transformation transform and transfo...
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool isValid() const
Returns true if the storage type of this variant is not QMetaType::UnknownType; otherwise returns fal...
EGLImageKHR int int EGLuint64KHR * modifiers
Combined button and popup list for selecting options.
InvokeGenSeq< GenSeq< N > > makeIndexSequence
Qt::MouseButtons cocoaMouseButtons2QtMouseButtons(NSInteger pressedMouseButtons)
Returns the Qt::MouseButtons that corresponds to an NSEvent.pressedMouseButtons.
NSString * qt_mac_AppKitString(NSString *table, NSString *key)
QNSView * qnsview_cast(NSView *view)
Returns the view cast to a QNSview if possible.
QEvent::Type cocoaEvent2QtMouseEvent(NSEvent *event)
Returns the QEvent::Type that corresponds to an NSEvent.type.
Qt::DropActions qt_mac_mapNSDragOperations(NSDragOperation nsActions)
QString qt_mac_applicationName()
QPointF qt_mac_flip(const QPointF &pos, const QRectF &reference)
Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum)
Returns the Qt::Button that corresponds to an NSEvent.buttonNumber.
QStringList qt_mac_NSArrayToQStringList(NSArray< NSString * > *array)
void qt_mac_transformProccessToForegroundApplication()
NSDragOperation qt_mac_mapDropActions(Qt::DropActions actions)
Qt::DropAction qt_mac_mapNSDragOperation(NSDragOperation nsActions)
QString qt_mac_removeAmpersandEscapes(QString s)
InputMethodQueryResult queryInputMethod(QObject *object, Qt::InputMethodQueries queries)
NSDragOperation qt_mac_mapDropAction(Qt::DropAction action)
NSMutableArray< NSString * > * qt_mac_QStringListToNSMutableArray(const QStringList &list)
Qt::MouseButtons currentlyPressedMouseButtons()
Returns the Qt::MouseButtons that corresponds to an NSEvent.pressedMouseButtons.
#define QT_NAMESPACE_ALIAS_OBJC_CLASS(__KLASS__)
#define Q_FORWARD_DECLARE_OBJC_CLASS(classname)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char * method
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_DECLARE_LOGGING_CATEGORY(name)
GLuint GLuint GLuint GLuint arg1
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
GLenum GLenum GLsizei void * table
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
#define QT_MANGLE_NAMESPACE(name)
Q_CORE_EXPORT QByteArray qgetenv(const char *varName)
QFileSelector selector
[1]