diff options
Diffstat (limited to 'src/gui/kernel/qevent.cpp')
-rw-r--r-- | src/gui/kernel/qevent.cpp | 95 |
1 files changed, 77 insertions, 18 deletions
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index fe75ec78f7..d8c11d72a6 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qevent.h" + #include "qcursor.h" #include "private/qguiapplication_p.h" #include "private/qinputdevice_p.h" @@ -9,6 +10,7 @@ #include "qpa/qplatformintegration.h" #include "private/qevent_p.h" #include "private/qeventpoint_p.h" + #include "qfile.h" #include "qhashfunctions.h" #include "qmetaobject.h" @@ -16,6 +18,7 @@ #include "qevent_p.h" #include "qmath.h" #include "qloggingcategory.h" +#include "qpointer.h" #if QT_CONFIG(draganddrop) #include <qpa/qplatformdrag.h> @@ -1837,10 +1840,6 @@ Q_IMPL_EVENT_COMMON(QResizeEvent) special handling, you should reimplement the event handler and ignore() the event. - The \l{mainwindows/application#close event handler}{closeEvent() in the - Application example} shows a close event handler that - asks whether to save a document before closing. - If you want the widget to be deleted when it is closed, create it with the Qt::WA_DeleteOnClose flag. This is very useful for independent top-level windows in a multi-window application. @@ -3594,10 +3593,15 @@ Q_IMPL_EVENT_COMMON(QShowEvent) \snippet qfileopenevent/Info.plist Custom Info.plist - The following implementation of a QApplication subclass prints the path to - the file that was, for example, dropped on the Dock icon of the application. + The following implementation of a QApplication subclass shows how to handle + QFileOpenEvent to open the file that was, for example, dropped on the Dock + icon of the application. \snippet qfileopenevent/main.cpp QApplication subclass + + Note how \c{QFileOpenEvent::file()} is not guaranteed to be the name of a + local file that can be opened using QFile. The contents of the string depend + on the source application. */ /*! @@ -3625,19 +3629,23 @@ Q_IMPL_EVENT_COMMON(QFileOpenEvent) /*! \fn QString QFileOpenEvent::file() const - Returns the file that is being opened. + Returns the name of the file that the application should open. + + This is not guaranteed to be the path to a local file. */ /*! \fn QUrl QFileOpenEvent::url() const - Returns the url that is being opened. + Returns the url that the application should open. \since 4.6 */ +#if QT_DEPRECATED_SINCE(6, 6) /*! \fn bool QFileOpenEvent::openFile(QFile &file, QIODevice::OpenMode flags) const + \deprecated [6.6] interpret the string returned by file() Opens a QFile on the \a file referenced by this event in the mode specified by \a flags. Returns \c true if successful; otherwise returns \c false. @@ -3652,6 +3660,7 @@ bool QFileOpenEvent::openFile(QFile &file, QIODevice::OpenMode flags) const file.setFileName(m_file); return file.open(flags); } +#endif #ifndef QT_NO_TOOLBAR /*! @@ -3716,6 +3725,7 @@ QShortcutEvent::QShortcutEvent(const QKeySequence &key, int id, bool ambiguous) /*! Constructs a shortcut event for the given \a key press, associated with the QShortcut \a shortcut. + \since 6.5 \a ambiguous specifies whether there is more than one QShortcut for the same key sequence. @@ -3761,6 +3771,13 @@ static void formatUnicodeString(QDebug d, const QString &s) d << Qt::dec << '"'; } +static QDebug operator<<(QDebug dbg, const QInputMethodEvent::Attribute &attr) +{ + dbg << "[type= " << attr.type << ", start=" << attr.start << ", length=" << attr.length + << ", value=" << attr.value << ']'; + return dbg; +} + static inline void formatInputMethodEvent(QDebug d, const QInputMethodEvent *e) { d << "QInputMethodEvent("; @@ -3776,15 +3793,15 @@ static inline void formatInputMethodEvent(QDebug d, const QInputMethodEvent *e) d << ", replacementStart=" << e->replacementStart() << ", replacementLength=" << e->replacementLength(); } - if (const int attributeCount = e->attributes().size()) { + const auto attributes = e->attributes(); + auto it = attributes.cbegin(); + const auto end = attributes.cend(); + if (it != end) { d << ", attributes= {"; - for (int a = 0; a < attributeCount; ++a) { - const QInputMethodEvent::Attribute &at = e->attributes().at(a); - if (a) - d << ','; - d << "[type= " << at.type << ", start=" << at.start << ", length=" << at.length - << ", value=" << at.value << ']'; - } + d << *it; + ++it; + for (; it != end; ++it) + d << ',' << *it; d << '}'; } d << ')'; @@ -4111,6 +4128,10 @@ QDebug operator<<(QDebug dbg, const QEvent *e) dbg << ", text=" << ke->text(); if (ke->isAutoRepeat()) dbg << ", autorepeat, count=" << ke->count(); + if (dbg.verbosity() > QDebug::DefaultVerbosity) { + dbg << ", nativeScanCode=" << ke->nativeScanCode(); + dbg << ", nativeVirtualKey=" << ke->nativeVirtualKey(); + } dbg << ')'; } break; @@ -4457,8 +4478,6 @@ Q_IMPL_EVENT_COMMON(QWindowStateChangeEvent) */ /*! - \deprecated [6.2] Use another constructor. - Constructs a QTouchEvent with the given \a eventType, \a device, \a touchPoints, and current keyboard \a modifiers at the time of the event. */ @@ -4738,6 +4757,46 @@ Q_IMPL_EVENT_COMMON(QApplicationStateChangeEvent) Returns the state of the application. */ +/*! + \class QChildWindowEvent + \inmodule QtGui + \since 6.7 + \brief The QChildWindowEvent class contains event parameters for + child window changes. + + \ingroup events + + Child window events are sent to windows when children are + added or removed. + + In both cases you can only rely on the child being a QWindow + — not any subclass thereof. This is because in the + QEvent::ChildWindowAdded case the subclass is not yet fully + constructed, and in the QEvent::ChildWindowRemoved case it + might have already been destructed. +*/ + +/*! + Constructs a child window event object of a particular \a type + for the \a childWindow. + + \a type can be QEvent::ChildWindowAdded or QEvent::ChildWindowRemoved. + + \sa child() +*/ +QChildWindowEvent::QChildWindowEvent(Type type, QWindow *childWindow) + : QEvent(type), c(childWindow) +{ +} + +Q_IMPL_EVENT_COMMON(QChildWindowEvent) + +/*! + \fn QWindow *QChildWindowEvent::child() const + + Returns the child window that was added or removed. +*/ + QMutableTouchEvent::~QMutableTouchEvent() = default; |