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>
60typename std::enable_if<std::is_pointer<T>::value, T>
::type
61qt_objc_cast(
id object)
63 if ([
object isKindOfClass:[typename
std::remove_pointer<T>::
type class]])
92 QtCocoaEventSubTypeWakeup = SHRT_MAX,
93 QtCocoaEventSubTypePostMessage = SHRT_MAX-1
96class QCocoaPostMessageArgs {
111 ~QCocoaPostMessageArgs()
120T qt_mac_resolveOption(
const T &fallback,
const QByteArray &environment)
126 return T(env.
toInt());
139 return T(env.
toInt());
146 return windowProperty.
value<T>();
157 constexpr auto begin()
const {
using std::rbegin;
return rbegin(
r); }
158 constexpr auto begin() {
using std::rbegin;
return rbegin(
r); }
159 constexpr auto end()
const {
using std::rend;
return rend(
r); }
160 constexpr auto end() {
using std::rend;
return rend(
r); }
163constexpr backwards_t<R> backwards(
R&&
r) {
return {std::forward<R>(
r)}; }
168#define QNSPanelDelegate QT_MANGLE_NAMESPACE(QNSPanelDelegate)
170@protocol QNSPanelDelegate
173- (
void)onCancelClicked;
176@interface QT_MANGLE_NAMESPACE(QNSPanelContentsWrapper) : NSView
178@property (nonatomic, readonly) NSButton *okButton;
179@property (nonatomic, readonly) NSButton *cancelButton;
180@property (nonatomic, readonly) NSView *panelContents;
181@property (nonatomic, assign) NSEdgeInsets panelContentsMargins;
183- (instancetype)initWithPanelDelegate:(
id<QNSPanelDelegate>)panelDelegate;
199struct objc_msgsend_requires_stret
200{
static const bool value =
201#if defined(Q_PROCESSOR_X86)
202 #define PLATFORM_USES_SEND_SUPER_STRET 1
204 sizeof(T) >
sizeof(
void*) * 2;
205#elif defined(Q_PROCESSOR_ARM_32)
206 #define PLATFORM_USES_SEND_SUPER_STRET 1
208 sizeof(T) >
sizeof(
void*);
209#elif defined(Q_PROCESSOR_ARM_64)
210 #define PLATFORM_USES_SEND_SUPER_STRET 0
216struct objc_msgsend_requires_stret<
void>
217{
static const bool value =
false; };
219template <
typename ReturnType,
typename... Args>
220ReturnType qt_msgSendSuper(
id receiver,
SEL selector, Args...
args)
222 static_assert(!objc_msgsend_requires_stret<ReturnType>::value,
223 "The given return type requires stret on this platform");
225 typedef ReturnType (*SuperFn)(objc_super *, SEL, Args...);
226 SuperFn superFn =
reinterpret_cast<SuperFn
>(objc_msgSendSuper);
227 objc_super sup = { receiver, [receiver superclass] };
231#if PLATFORM_USES_SEND_SUPER_STRET
232template <
typename ReturnType,
typename... Args>
233ReturnType qt_msgSendSuper_stret(
id receiver,
SEL selector, Args...
args)
235 static_assert(objc_msgsend_requires_stret<ReturnType>::value,
236 "The given return type does not use stret on this platform");
238 typedef void (*SuperStretFn)(ReturnType *, objc_super *, SEL, Args...);
239 SuperStretFn superStretFn =
reinterpret_cast<SuperStretFn
>(objc_msgSendSuper_stret);
241 objc_super sup = { receiver, [receiver superclass] };
248template<
typename... Args>
249class QSendSuperHelper {
251 QSendSuperHelper(
id receiver,
SEL sel, Args...
args)
252 : m_receiver(receiver), m_selector(sel), m_args(
std::make_tuple(
args...)), m_sent(
false)
259 msgSendSuper<void>(m_args);
262 template <
typename ReturnType>
263 operator ReturnType()
266 Method method = class_getInstanceMethod(object_getClass(m_receiver), m_selector);
267 char returnTypeEncoding[256];
268 method_getReturnType(
method, returnTypeEncoding,
sizeof(returnTypeEncoding));
270 NSGetSizeAndAlignment(returnTypeEncoding,
nullptr, &alignedReturnTypeSize);
271 Q_ASSERT(alignedReturnTypeSize ==
sizeof(ReturnType));
274 return msgSendSuper<ReturnType>(m_args);
278 template <
typename ReturnType,
bool V>
279 using if_requires_stret =
typename std::enable_if<objc_msgsend_requires_stret<ReturnType>::value == V, ReturnType>
::type;
281 template <
typename ReturnType,
int... Is>
284 return qt_msgSendSuper<ReturnType>(m_receiver, m_selector, std::get<Is>(
args)...);
287#if PLATFORM_USES_SEND_SUPER_STRET
288 template <
typename ReturnType,
int... Is>
291 return qt_msgSendSuper_stret<ReturnType>(m_receiver, m_selector, std::get<Is>(
args)...);
295 template <
typename ReturnType>
296 ReturnType msgSendSuper(std::tuple<Args...>&
args)
303 std::tuple<Args...> m_args;
307template<
typename... Args>
308QSendSuperHelper<Args...> qt_objcDynamicSuperHelper(
id receiver,
SEL selector, Args...
args)
310 return QSendSuperHelper<Args...>(receiver,
selector,
args...);
314#define qt_objcDynamicSuper(...) qt_objcDynamicSuperHelper(self, _cmd, ##__VA_ARGS__)
318struct InputMethodQueryResult :
public QHash<int, QVariant>
320 operator bool() {
return !isEmpty(); }
335 bool isRepeat =
false;
339 static const quint32 nativeScanCode = 0;
342 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.
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
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
#define QT_MANGLE_NAMESPACE(name)
Q_CORE_EXPORT QByteArray qgetenv(const char *varName)
QFileSelector selector
[1]