Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable
This commit is contained in:
commit
7315b3ab2f
6
configure
vendored
6
configure
vendored
@ -2344,12 +2344,6 @@ for e in gawk nawk awk; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# find perl
|
|
||||||
PERL="/usr/bin/perl"
|
|
||||||
if "$WHICH" perl >/dev/null 2>&1 && ( perl /dev/null ) >/dev/null 2>&1; then
|
|
||||||
PERL=`$WHICH perl`
|
|
||||||
fi
|
|
||||||
|
|
||||||
### skip this if the user just needs help...
|
### skip this if the user just needs help...
|
||||||
if [ "$OPT_HELP" != "yes" ]; then
|
if [ "$OPT_HELP" != "yes" ]; then
|
||||||
|
|
||||||
|
@ -62,8 +62,8 @@ android:!bundled_jar_file {
|
|||||||
} else {
|
} else {
|
||||||
DEX_CMD = $$SDK_ROOT/platform-tools/dx
|
DEX_CMD = $$SDK_ROOT/platform-tools/dx
|
||||||
!exists($$DEX_CMD): DEX_CMD = $$SDK_ROOT/build-tools/$$BUILD_TOOLS_REVISION/dx
|
!exists($$DEX_CMD): DEX_CMD = $$SDK_ROOT/build-tools/$$BUILD_TOOLS_REVISION/dx
|
||||||
|
!exists($$DEX_CMD): error("The path $$DEX_CMD does not exist. Please set the environment variable ANDROID_BUILD_TOOLS_REVISION to the revision of the build tools installed in your Android SDK.")
|
||||||
}
|
}
|
||||||
!exists($$DEX_CMD): error("The path $$DEX_CMD does not exist. Please set the environment variable ANDROID_BUILD_TOOLS_REVISION to the revision of the build tools installed in your Android SDK.")
|
|
||||||
QMAKE_LINK_SHLIB_CMD = $$DEX_CMD --dex --output $(TARGET) $$CLASS_DIR
|
QMAKE_LINK_SHLIB_CMD = $$DEX_CMD --dex --output $(TARGET) $$CLASS_DIR
|
||||||
} else {
|
} else {
|
||||||
QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR .
|
QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR .
|
||||||
|
@ -182,6 +182,7 @@ const char _Optimization[] = "Optimization";
|
|||||||
const char _OptimizeReferences[] = "OptimizeReferences";
|
const char _OptimizeReferences[] = "OptimizeReferences";
|
||||||
const char _OutputDirectory[] = "OutputDirectory";
|
const char _OutputDirectory[] = "OutputDirectory";
|
||||||
const char _OutputFile[] = "OutputFile";
|
const char _OutputFile[] = "OutputFile";
|
||||||
|
const char _PlatformToolSet[] = "PlatformToolSet";
|
||||||
const char _PrecompiledHeader[] = "PrecompiledHeader";
|
const char _PrecompiledHeader[] = "PrecompiledHeader";
|
||||||
const char _PrecompiledHeaderFile[] = "PrecompiledHeaderFile";
|
const char _PrecompiledHeaderFile[] = "PrecompiledHeaderFile";
|
||||||
const char _PrecompiledHeaderOutputFile[] = "PrecompiledHeaderOutputFile";
|
const char _PrecompiledHeaderOutputFile[] = "PrecompiledHeaderOutputFile";
|
||||||
@ -467,10 +468,6 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool)
|
|||||||
<< attrTag("Condition", condition)
|
<< attrTag("Condition", condition)
|
||||||
<< valueTag(tool.Configuration.IntermediateDirectory);
|
<< valueTag(tool.Configuration.IntermediateDirectory);
|
||||||
}
|
}
|
||||||
if (tool.Configuration.CompilerVersion >= NET2012) {
|
|
||||||
xml << tagValue("PlatformToolSet",
|
|
||||||
platformToolSetVersion(tool.Configuration.CompilerVersion));
|
|
||||||
}
|
|
||||||
if ( !tool.Configuration.PrimaryOutput.isEmpty() ) {
|
if ( !tool.Configuration.PrimaryOutput.isEmpty() ) {
|
||||||
xml<< tag("TargetName")
|
xml<< tag("TargetName")
|
||||||
<< attrTag("Condition", condition)
|
<< attrTag("Condition", condition)
|
||||||
@ -668,10 +665,6 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
|
|||||||
<< attrTag("Condition", condition)
|
<< attrTag("Condition", condition)
|
||||||
<< valueTag(config.IntermediateDirectory);
|
<< valueTag(config.IntermediateDirectory);
|
||||||
}
|
}
|
||||||
if (config.CompilerVersion >= NET2012) {
|
|
||||||
xml << tagValue("PlatformToolSet",
|
|
||||||
platformToolSetVersion(config.CompilerVersion));
|
|
||||||
}
|
|
||||||
if (!config.PrimaryOutput.isEmpty()) {
|
if (!config.PrimaryOutput.isEmpty()) {
|
||||||
xml << tag("TargetName")
|
xml << tag("TargetName")
|
||||||
<< attrTag("Condition", condition)
|
<< attrTag("Condition", condition)
|
||||||
@ -1649,6 +1642,7 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCConfiguration &tool)
|
|||||||
xml << tag("PropertyGroup")
|
xml << tag("PropertyGroup")
|
||||||
<< attrTag("Condition", generateCondition(tool))
|
<< attrTag("Condition", generateCondition(tool))
|
||||||
<< attrTag("Label", "Configuration")
|
<< attrTag("Label", "Configuration")
|
||||||
|
<< attrTagS(_PlatformToolSet, platformToolSetVersion(tool.CompilerVersion))
|
||||||
<< attrTagS(_OutputDirectory, tool.OutputDirectory)
|
<< attrTagS(_OutputDirectory, tool.OutputDirectory)
|
||||||
<< attrTagT(_ATLMinimizesCRunTimeLibraryUsage, tool.ATLMinimizesCRunTimeLibraryUsage)
|
<< attrTagT(_ATLMinimizesCRunTimeLibraryUsage, tool.ATLMinimizesCRunTimeLibraryUsage)
|
||||||
<< attrTagT(_BuildBrowserInformation, tool.BuildBrowserInformation)
|
<< attrTagT(_BuildBrowserInformation, tool.BuildBrowserInformation)
|
||||||
@ -2057,7 +2051,6 @@ QString VCXProjectWriter::platformToolSetVersion(const DotNET version)
|
|||||||
case NET2012:
|
case NET2012:
|
||||||
return "v110";
|
return "v110";
|
||||||
}
|
}
|
||||||
Q_ASSERT(!"This MSVC version does not support the PlatformToolSet tag!");
|
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +78,10 @@ template <typename T> inline void qbswap(const T src, uchar *dest)
|
|||||||
// If you want to avoid the memcopy, you must write specializations for this function
|
// If you want to avoid the memcopy, you must write specializations for this function
|
||||||
template <typename T> inline void qToUnaligned(const T src, uchar *dest)
|
template <typename T> inline void qToUnaligned(const T src, uchar *dest)
|
||||||
{
|
{
|
||||||
memcpy(dest, &src, sizeof(T));
|
// Using sizeof(T) inside memcpy function produces internal compiler error with
|
||||||
|
// MSVC2008/ARM in tst_endian -> use extra indirection to resolve size of T.
|
||||||
|
const size_t size = sizeof(T);
|
||||||
|
memcpy(dest, &src, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* T qFromLittleEndian(const uchar *src)
|
/* T qFromLittleEndian(const uchar *src)
|
||||||
|
@ -52,6 +52,8 @@
|
|||||||
|
|
||||||
#include "qelapsedtimer.h"
|
#include "qelapsedtimer.h"
|
||||||
#include "qcoreapplication_p.h"
|
#include "qcoreapplication_p.h"
|
||||||
|
#include "qsysinfo.h"
|
||||||
|
|
||||||
#include <private/qthread_p.h>
|
#include <private/qthread_p.h>
|
||||||
#include <private/qmutexpool_p.h>
|
#include <private/qmutexpool_p.h>
|
||||||
|
|
||||||
@ -305,8 +307,14 @@ static void resolveTimerAPI()
|
|||||||
#endif
|
#endif
|
||||||
triedResolve = true;
|
triedResolve = true;
|
||||||
#if !defined(Q_OS_WINCE)
|
#if !defined(Q_OS_WINCE)
|
||||||
|
# if defined(_MSC_VER) && _MSC_VER >= 1700
|
||||||
|
if (QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS8) { // QTBUG-27266, Disable when running MSVC2012-built code on pre-Windows 8
|
||||||
|
# else
|
||||||
|
{
|
||||||
|
# endif
|
||||||
qtimeSetEvent = (ptimeSetEvent)QSystemLibrary::resolve(QLatin1String("winmm"), "timeSetEvent");
|
qtimeSetEvent = (ptimeSetEvent)QSystemLibrary::resolve(QLatin1String("winmm"), "timeSetEvent");
|
||||||
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("winmm"), "timeKillEvent");
|
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("winmm"), "timeKillEvent");
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
qtimeSetEvent = (ptimeSetEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeSetEvent");
|
qtimeSetEvent = (ptimeSetEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeSetEvent");
|
||||||
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeKillEvent");
|
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeKillEvent");
|
||||||
|
@ -31,6 +31,8 @@ HEADERS += \
|
|||||||
kernel/qplatformclipboard.h \
|
kernel/qplatformclipboard.h \
|
||||||
kernel/qplatformnativeinterface.h \
|
kernel/qplatformnativeinterface.h \
|
||||||
kernel/qplatformmenu.h \
|
kernel/qplatformmenu.h \
|
||||||
|
kernel/qshapedpixmapdndwindow_p.h \
|
||||||
|
kernel/qsimpledrag_p.h \
|
||||||
kernel/qsurfaceformat.h \
|
kernel/qsurfaceformat.h \
|
||||||
kernel/qguiapplication.h \
|
kernel/qguiapplication.h \
|
||||||
kernel/qguiapplication_p.h \
|
kernel/qguiapplication_p.h \
|
||||||
@ -89,6 +91,8 @@ SOURCES += \
|
|||||||
kernel/qplatformclipboard.cpp \
|
kernel/qplatformclipboard.cpp \
|
||||||
kernel/qplatformnativeinterface.cpp \
|
kernel/qplatformnativeinterface.cpp \
|
||||||
kernel/qsessionmanager.cpp \
|
kernel/qsessionmanager.cpp \
|
||||||
|
kernel/qshapedpixmapdndwindow.cpp \
|
||||||
|
kernel/qsimpledrag.cpp \
|
||||||
kernel/qsurfaceformat.cpp \
|
kernel/qsurfaceformat.cpp \
|
||||||
kernel/qguiapplication.cpp \
|
kernel/qguiapplication.cpp \
|
||||||
kernel/qwindow.cpp \
|
kernel/qwindow.cpp \
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
#include <QtGui/private/qpixmap_raster_p.h>
|
#include <QtGui/private/qpixmap_raster_p.h>
|
||||||
#include <qpa/qplatformscreen_p.h>
|
#include <qpa/qplatformscreen_p.h>
|
||||||
#include <private/qdnd_p.h>
|
#include <private/qdnd_p.h>
|
||||||
|
#include <private/qsimpledrag_p.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
@ -99,7 +100,11 @@ QPlatformClipboard *QPlatformIntegration::clipboard() const
|
|||||||
*/
|
*/
|
||||||
QPlatformDrag *QPlatformIntegration::drag() const
|
QPlatformDrag *QPlatformIntegration::drag() const
|
||||||
{
|
{
|
||||||
return 0;
|
static QSimpleDrag *drag = 0;
|
||||||
|
if (!drag) {
|
||||||
|
drag = new QSimpleDrag;
|
||||||
|
}
|
||||||
|
return drag;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -510,15 +510,21 @@ QRect QPlatformWindow::initialGeometry(const QWindow *w,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (w->isTopLevel() && qt_window_private(const_cast<QWindow*>(w))->positionAutomatic) {
|
if (w->isTopLevel() && qt_window_private(const_cast<QWindow*>(w))->positionAutomatic) {
|
||||||
const QWindow *tp = w->transientParent();
|
if (const QPlatformScreen *platformScreen = QPlatformScreen::platformScreenForWindow(w)) {
|
||||||
if (tp) {
|
const QRect availableGeometry = platformScreen->availableGeometry();
|
||||||
// A transient window should be centered w.r.t. its transient parent.
|
// Center unless the geometry ( + unknown window frame) is too large for the screen).
|
||||||
rect.moveCenter(tp->geometry().center());
|
if (rect.height() < (availableGeometry.height() * 8) / 9
|
||||||
} else {
|
&& rect.width() < (availableGeometry.width() * 8) / 9) {
|
||||||
// Center the window on the screen. (Only applicable on platforms
|
const QWindow *tp = w->transientParent();
|
||||||
// which do not provide a better way.)
|
if (tp) {
|
||||||
QPlatformScreen *scr = QPlatformScreen::platformScreenForWindow(w);
|
// A transient window should be centered w.r.t. its transient parent.
|
||||||
rect.moveCenter(scr->availableGeometry().center());
|
rect.moveCenter(tp->geometry().center());
|
||||||
|
} else {
|
||||||
|
// Center the window on the screen. (Only applicable on platforms
|
||||||
|
// which do not provide a better way.)
|
||||||
|
rect.moveCenter(availableGeometry.center());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rect;
|
return rect;
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
#include <private/qguiapplication_p.h>
|
#include <private/qguiapplication_p.h>
|
||||||
#include <private/qdnd_p.h>
|
#include <private/qdnd_p.h>
|
||||||
|
|
||||||
#include <QtPlatformSupport/private/qshapedpixmapdndwindow_p.h>
|
#include <private/qshapedpixmapdndwindow_p.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
@ -56,7 +56,7 @@ class QEventLoop;
|
|||||||
class QDropData;
|
class QDropData;
|
||||||
class QShapedPixmapWindow;
|
class QShapedPixmapWindow;
|
||||||
|
|
||||||
class QBasicDrag : public QPlatformDrag, public QObject
|
class Q_GUI_EXPORT QBasicDrag : public QPlatformDrag, public QObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~QBasicDrag();
|
virtual ~QBasicDrag();
|
||||||
@ -99,7 +99,7 @@ private:
|
|||||||
QShapedPixmapWindow *m_drag_icon_window;
|
QShapedPixmapWindow *m_drag_icon_window;
|
||||||
};
|
};
|
||||||
|
|
||||||
class QSimpleDrag : public QBasicDrag
|
class Q_GUI_EXPORT QSimpleDrag : public QBasicDrag
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QSimpleDrag();
|
QSimpleDrag();
|
@ -98,10 +98,12 @@ void QBackingStore::flush(const QRegion ®ion, QWindow *win, const QPoint &off
|
|||||||
if (!win)
|
if (!win)
|
||||||
win = window();
|
win = window();
|
||||||
|
|
||||||
|
#ifdef QBACKINGSTORE_DEBUG
|
||||||
if (win && win->isTopLevel() && !qt_window_private(win)->receivedExpose) {
|
if (win && win->isTopLevel() && !qt_window_private(win)->receivedExpose) {
|
||||||
qWarning().nospace() << "QBackingStore::flush() called with non-exposed window "
|
qWarning().nospace() << "QBackingStore::flush() called with non-exposed window "
|
||||||
<< win << ", behavior is undefined";
|
<< win << ", behavior is undefined";
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
d_ptr->platformBackingStore->flush(win, region, offset);
|
d_ptr->platformBackingStore->flush(win, region, offset);
|
||||||
}
|
}
|
||||||
|
@ -1579,10 +1579,7 @@ QGLContextPrivate::QGLContextPrivate(QGLContext *context)
|
|||||||
{
|
{
|
||||||
group = new QGLContextGroup(context);
|
group = new QGLContextGroup(context);
|
||||||
|
|
||||||
if (qApp) {
|
texture_destroyer = new QGLTextureDestroyer;
|
||||||
texture_destroyer = new QGLTextureDestroyer;
|
|
||||||
texture_destroyer->moveToThread(qApp->thread());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QGLContextPrivate::~QGLContextPrivate()
|
QGLContextPrivate::~QGLContextPrivate()
|
||||||
|
@ -335,25 +335,16 @@ QT_END_NAMESPACE
|
|||||||
Q_DECLARE_METATYPE(GLuint)
|
Q_DECLARE_METATYPE(GLuint)
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
class Q_OPENGL_EXPORT QGLTextureDestroyer : public QObject
|
class Q_OPENGL_EXPORT QGLTextureDestroyer
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
public:
|
public:
|
||||||
QGLTextureDestroyer() : QObject() {
|
void emitFreeTexture(QGLContext *context, QPlatformPixmap *, GLuint id) {
|
||||||
connect(this, SIGNAL(freeTexture(QGLContext *, QPlatformPixmap *, quint32)),
|
if (context->contextHandle())
|
||||||
this, SLOT(freeTexture_slot(QGLContext *, QPlatformPixmap *, quint32)));
|
(new QOpenGLSharedResourceGuard(context->contextHandle(), id, freeTextureFunc))->free();
|
||||||
}
|
|
||||||
void emitFreeTexture(QGLContext *context, QPlatformPixmap *boundPixmap, GLuint id) {
|
|
||||||
emit freeTexture(context, boundPixmap, id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_SIGNALS:
|
private:
|
||||||
void freeTexture(QGLContext *context, QPlatformPixmap *boundPixmap, quint32 id);
|
static void freeTextureFunc(QOpenGLFunctions *, GLuint id) {
|
||||||
|
|
||||||
private slots:
|
|
||||||
void freeTexture_slot(QGLContext *context, QPlatformPixmap *boundPixmap, quint32 id) {
|
|
||||||
Q_UNUSED(boundPixmap);
|
|
||||||
QGLShareContextScope scope(context);
|
|
||||||
glDeleteTextures(1, &id);
|
glDeleteTextures(1, &id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
HEADERS += \
|
|
||||||
$$PWD/qsimpledrag_p.h \
|
|
||||||
$$PWD/qshapedpixmapdndwindow_p.h
|
|
||||||
SOURCES += \
|
|
||||||
$$PWD/qsimpledrag.cpp \
|
|
||||||
$$PWD/qshapedpixmapdndwindow.cpp
|
|
@ -9,7 +9,6 @@ PRECOMPILED_HEADER = ../corelib/global/qt_pch.h
|
|||||||
|
|
||||||
include(cfsocketnotifier/cfsocketnotifier.pri)
|
include(cfsocketnotifier/cfsocketnotifier.pri)
|
||||||
include(cglconvenience/cglconvenience.pri)
|
include(cglconvenience/cglconvenience.pri)
|
||||||
include(dnd/dnd.pri)
|
|
||||||
include(eglconvenience/eglconvenience.pri)
|
include(eglconvenience/eglconvenience.pri)
|
||||||
include(eventdispatchers/eventdispatchers.pri)
|
include(eventdispatchers/eventdispatchers.pri)
|
||||||
include(fbconvenience/fbconvenience.pri)
|
include(fbconvenience/fbconvenience.pri)
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
#include <Cocoa/Cocoa.h>
|
#include <Cocoa/Cocoa.h>
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include <qpa/qplatformdrag.h>
|
#include <qpa/qplatformdrag.h>
|
||||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
#include <private/qsimpledrag_p.h>
|
||||||
|
|
||||||
#include <QtGui/private/qdnd_p.h>
|
#include <QtGui/private/qdnd_p.h>
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ static inline QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *getMenuLoader()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QKeyEvent accel_ev(QEvent::ShortcutOverride, (keyCode & (~Qt::KeyboardModifierMask)),
|
QKeyEvent accel_ev(QEvent::ShortcutOverride, (keyCode & (~Qt::KeyboardModifierMask)),
|
||||||
Qt::KeyboardModifiers(keyCode & Qt::KeyboardModifierMask));
|
Qt::KeyboardModifiers(modifiers & Qt::KeyboardModifierMask));
|
||||||
accel_ev.ignore();
|
accel_ev.ignore();
|
||||||
QCoreApplication::sendEvent(object, &accel_ev);
|
QCoreApplication::sendEvent(object, &accel_ev);
|
||||||
if (accel_ev.isAccepted()) {
|
if (accel_ev.isAccepted()) {
|
||||||
|
@ -136,6 +136,17 @@ void QCocoaMenuBar::syncMenu(QPlatformMenu *menu)
|
|||||||
QCocoaMenu *cocoaMenu = static_cast<QCocoaMenu *>(menu);
|
QCocoaMenu *cocoaMenu = static_cast<QCocoaMenu *>(menu);
|
||||||
Q_FOREACH (QCocoaMenuItem *item, cocoaMenu->items())
|
Q_FOREACH (QCocoaMenuItem *item, cocoaMenu->items())
|
||||||
cocoaMenu->syncMenuItem(item);
|
cocoaMenu->syncMenuItem(item);
|
||||||
|
|
||||||
|
// If the NSMenu has no visble items, or only separators, we should hide it
|
||||||
|
// on the menubar. This can happen after syncing the menu items since they
|
||||||
|
// can be moved to other menus.
|
||||||
|
BOOL shouldHide = YES;
|
||||||
|
for (NSMenuItem *item in [cocoaMenu->nsMenu() itemArray])
|
||||||
|
if (![item isSeparatorItem] && ![item isHidden]) {
|
||||||
|
shouldHide = NO;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
[cocoaMenu->nsMenuItem() setHidden:shouldHide];
|
||||||
}
|
}
|
||||||
|
|
||||||
void QCocoaMenuBar::handleReparent(QWindow *newParentWindow)
|
void QCocoaMenuBar::handleReparent(QWindow *newParentWindow)
|
||||||
|
@ -241,7 +241,8 @@ NSMenuItem *QCocoaMenuItem::sync()
|
|||||||
mergeItem = [loader quitMenuItem];
|
mergeItem = [loader quitMenuItem];
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_textSynced = true;
|
if (!m_text.isEmpty())
|
||||||
|
m_textSynced = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -264,7 +265,7 @@ NSMenuItem *QCocoaMenuItem::sync()
|
|||||||
m_native = nil; // create item below
|
m_native = nil; // create item below
|
||||||
m_merged = false;
|
m_merged = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (!m_text.isEmpty()) {
|
||||||
m_textSynced = true; // NoRole, and that was set explicitly. So, nothing to do anymore.
|
m_textSynced = true; // NoRole, and that was set explicitly. So, nothing to do anymore.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -823,6 +823,9 @@ NSWindow * QCocoaWindow::createNSWindow()
|
|||||||
if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {
|
if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {
|
||||||
// Make popup winows show on the same desktop as the parent full-screen window.
|
// Make popup winows show on the same desktop as the parent full-screen window.
|
||||||
[window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenAuxiliary];
|
[window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenAuxiliary];
|
||||||
|
|
||||||
|
if ((type & Qt::Popup) == Qt::Popup)
|
||||||
|
[window setAnimationBehavior:NSWindowAnimationBehaviorUtilityWindow];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
window->m_cocoaPlatformWindow = this;
|
window->m_cocoaPlatformWindow = this;
|
||||||
|
@ -899,7 +899,6 @@ static QTouchDevice *touchDevice = 0;
|
|||||||
ulong timestamp = [nsevent timestamp] * 1000;
|
ulong timestamp = [nsevent timestamp] * 1000;
|
||||||
ulong nativeModifiers = [nsevent modifierFlags];
|
ulong nativeModifiers = [nsevent modifierFlags];
|
||||||
Qt::KeyboardModifiers modifiers = [QNSView convertKeyModifiers: nativeModifiers];
|
Qt::KeyboardModifiers modifiers = [QNSView convertKeyModifiers: nativeModifiers];
|
||||||
NSString *charactersIgnoringModifiers = [nsevent charactersIgnoringModifiers];
|
|
||||||
NSString *characters = [nsevent characters];
|
NSString *characters = [nsevent characters];
|
||||||
|
|
||||||
// [from Qt 4 impl] There is no way to get the scan code from carbon. But we cannot
|
// [from Qt 4 impl] There is no way to get the scan code from carbon. But we cannot
|
||||||
@ -911,19 +910,11 @@ static QTouchDevice *touchDevice = 0;
|
|||||||
EventRef eventRef = EventRef([nsevent eventRef]);
|
EventRef eventRef = EventRef([nsevent eventRef]);
|
||||||
GetEventParameter(eventRef, kEventParamKeyCode, typeUInt32, 0, sizeof(nativeVirtualKey), 0, &nativeVirtualKey);
|
GetEventParameter(eventRef, kEventParamKeyCode, typeUInt32, 0, sizeof(nativeVirtualKey), 0, &nativeVirtualKey);
|
||||||
|
|
||||||
QChar ch;
|
QChar ch = QChar::ReplacementCharacter;
|
||||||
int keyCode;
|
int keyCode = Qt::Key_unknown;
|
||||||
if ([charactersIgnoringModifiers length] > 0) { // convert the first character into a key code
|
if ([characters length] != 0) {
|
||||||
if ((modifiers & Qt::ControlModifier) && ([characters length] != 0)) {
|
ch = QChar([characters characterAtIndex:0]);
|
||||||
ch = QChar([characters characterAtIndex:0]);
|
|
||||||
} else {
|
|
||||||
ch = QChar([charactersIgnoringModifiers characterAtIndex:0]);
|
|
||||||
}
|
|
||||||
keyCode = [self convertKeyCode:ch];
|
keyCode = [self convertKeyCode:ch];
|
||||||
} else {
|
|
||||||
// might be a dead key
|
|
||||||
ch = QChar::ReplacementCharacter;
|
|
||||||
keyCode = Qt::Key_unknown;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// we will send a key event unless the input method sets m_sendKeyEvent to false
|
// we will send a key event unless the input method sets m_sendKeyEvent to false
|
||||||
@ -933,7 +924,7 @@ static QTouchDevice *touchDevice = 0;
|
|||||||
if (eventType == QEvent::KeyPress) {
|
if (eventType == QEvent::KeyPress) {
|
||||||
// ignore text for the U+F700-U+F8FF range. This is used by Cocoa when
|
// ignore text for the U+F700-U+F8FF range. This is used by Cocoa when
|
||||||
// delivering function keys (e.g. arrow keys, backspace, F1-F35, etc.)
|
// delivering function keys (e.g. arrow keys, backspace, F1-F35, etc.)
|
||||||
if ([charactersIgnoringModifiers length] == 1 && (ch.unicode() < 0xf700 || ch.unicode() > 0xf8ff))
|
if (ch.unicode() < 0xf700 || ch.unicode() > 0xf8ff)
|
||||||
text = QCFString::toQString(characters);
|
text = QCFString::toQString(characters);
|
||||||
|
|
||||||
if (m_composingText.isEmpty())
|
if (m_composingText.isEmpty())
|
||||||
|
@ -111,21 +111,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Class for chaining to gether a bunch of fades. It pretty much is only used for qmenu fading.
|
|
||||||
class QMacWindowFader
|
|
||||||
{
|
|
||||||
QWidgetList m_windowsToFade;
|
|
||||||
float m_duration;
|
|
||||||
Q_DISABLE_COPY(QMacWindowFader)
|
|
||||||
public:
|
|
||||||
QMacWindowFader(); // PLEASE DON'T CALL THIS.
|
|
||||||
static QMacWindowFader *currentFader();
|
|
||||||
void registerWindowToFade(QWidget *window);
|
|
||||||
void setFadeDuration(float durationInSecs) { m_duration = durationInSecs; }
|
|
||||||
float fadeDuration() const { return m_duration; }
|
|
||||||
void performFade();
|
|
||||||
};
|
|
||||||
|
|
||||||
class Q_WIDGETS_EXPORT QMacCocoaAutoReleasePool
|
class Q_WIDGETS_EXPORT QMacCocoaAutoReleasePool
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
@ -89,7 +89,7 @@
|
|||||||
#include <QtGui/QOpenGLContext>
|
#include <QtGui/QOpenGLContext>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
#include <private/qsimpledrag_p.h>
|
||||||
|
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
#include <QtCore/QHash>
|
#include <QtCore/QHash>
|
||||||
|
@ -552,11 +552,15 @@ QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) co
|
|||||||
break;
|
break;
|
||||||
case QPlatformIntegration::UseRtlExtensions:
|
case QPlatformIntegration::UseRtlExtensions:
|
||||||
return QVariant(d->m_context.useRTLExtensions());
|
return QVariant(d->m_context.useRTLExtensions());
|
||||||
|
#ifdef Q_OS_WINCE
|
||||||
case QPlatformIntegration::SynthesizeMouseFromTouchEvents:
|
case QPlatformIntegration::SynthesizeMouseFromTouchEvents:
|
||||||
// We do not want Qt to synthesize mouse events as Windows also does that.
|
// We do not want Qt to synthesize mouse events as Windows also does that.
|
||||||
// Alternatively, Windows-generated touch mouse events can be identified and
|
// Alternatively, Windows-generated touch mouse events can be identified and
|
||||||
// ignored by checking GetMessageExtraInfo() for MI_WP_SIGNATURE (0xFF515700).
|
// ignored by checking GetMessageExtraInfo() for MI_WP_SIGNATURE (0xFF515700).
|
||||||
return false;
|
return false;
|
||||||
|
#endif // Q_OS_WINCE
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return QPlatformIntegration::styleHint(hint);
|
return QPlatformIntegration::styleHint(hint);
|
||||||
}
|
}
|
||||||
|
@ -157,9 +157,19 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
|
|||||||
QtWindows::WindowsEventType et,
|
QtWindows::WindowsEventType et,
|
||||||
MSG msg, LRESULT *result)
|
MSG msg, LRESULT *result)
|
||||||
{
|
{
|
||||||
|
enum { signatureMask = 0xffffff00, miWpSignature = 0xff515700 };
|
||||||
|
|
||||||
if (et == QtWindows::MouseWheelEvent)
|
if (et == QtWindows::MouseWheelEvent)
|
||||||
return translateMouseWheelEvent(window, hwnd, msg, result);
|
return translateMouseWheelEvent(window, hwnd, msg, result);
|
||||||
|
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
|
// Check for events synthesized from touch. Lower byte is touch index, 0 means pen.
|
||||||
|
const LPARAM extraInfo = GetMessageExtraInfo();
|
||||||
|
const bool fromTouch = (extraInfo & signatureMask) == miWpSignature && (extraInfo & 0xff);
|
||||||
|
if (fromTouch)
|
||||||
|
return false;
|
||||||
|
#endif // !Q_OS_WINCE
|
||||||
|
|
||||||
const QPoint winEventPosition(GET_X_LPARAM(msg.lParam), GET_Y_LPARAM(msg.lParam));
|
const QPoint winEventPosition(GET_X_LPARAM(msg.lParam), GET_Y_LPARAM(msg.lParam));
|
||||||
if (et & QtWindows::NonClientEventFlag) {
|
if (et & QtWindows::NonClientEventFlag) {
|
||||||
const QPoint globalPosition = winEventPosition;
|
const QPoint globalPosition = winEventPosition;
|
||||||
|
@ -503,15 +503,6 @@ QWindowsWindow::WindowData
|
|||||||
const QWindowCreationContextPtr context(new QWindowCreationContext(w, rect, data.customMargins, style, exStyle));
|
const QWindowCreationContextPtr context(new QWindowCreationContext(w, rect, data.customMargins, style, exStyle));
|
||||||
QWindowsContext::instance()->setWindowCreationContext(context);
|
QWindowsContext::instance()->setWindowCreationContext(context);
|
||||||
|
|
||||||
QRect screenGeometry;
|
|
||||||
if (QScreen *screen = w->screen())
|
|
||||||
screenGeometry = screen->availableVirtualGeometry();
|
|
||||||
|
|
||||||
if (context->frameX < screenGeometry.left())
|
|
||||||
context->frameX = screenGeometry.left();
|
|
||||||
if (context->frameY < screenGeometry.top())
|
|
||||||
context->frameY = screenGeometry.top();
|
|
||||||
|
|
||||||
if (QWindowsContext::verboseWindows)
|
if (QWindowsContext::verboseWindows)
|
||||||
qDebug().nospace()
|
qDebug().nospace()
|
||||||
<< "CreateWindowEx: " << w << *this
|
<< "CreateWindowEx: " << w << *this
|
||||||
|
@ -57,8 +57,8 @@
|
|||||||
|
|
||||||
#include <qpa/qwindowsysteminterface.h>
|
#include <qpa/qwindowsysteminterface.h>
|
||||||
|
|
||||||
#include <QtPlatformSupport/private/qshapedpixmapdndwindow_p.h>
|
#include <private/qshapedpixmapdndwindow_p.h>
|
||||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
#include <private/qsimpledrag_p.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
#define QXCBDRAG_H
|
#define QXCBDRAG_H
|
||||||
|
|
||||||
#include <qpa/qplatformdrag.h>
|
#include <qpa/qplatformdrag.h>
|
||||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
#include <private/qsimpledrag_p.h>
|
||||||
#include <qxcbobject.h>
|
#include <qxcbobject.h>
|
||||||
#include <xcb/xcb.h>
|
#include <xcb/xcb.h>
|
||||||
#include <qlist.h>
|
#include <qlist.h>
|
||||||
|
@ -397,8 +397,11 @@ void CodeMarker::insert(FastSection &fastSection,
|
|||||||
bool irrelevant = false;
|
bool irrelevant = false;
|
||||||
bool inheritedMember = false;
|
bool inheritedMember = false;
|
||||||
if (!node->relates()) {
|
if (!node->relates()) {
|
||||||
if (node->parent() != fastSection.parent_) { // && !node->parent()->isAbstract()) {
|
InnerNode* p = node->parent();
|
||||||
if ((node->parent()->subType() != Node::QmlClass) || !node->parent()->isAbstract()) {
|
if (p->subType() == Node::QmlPropertyGroup)
|
||||||
|
p = p->parent();
|
||||||
|
if (p != fastSection.parent_) { // && !node->parent()->isAbstract()) {
|
||||||
|
if (p->subType() != Node::QmlClass || !p->isAbstract()) {
|
||||||
//if (node->type() != Node::QmlProperty) {
|
//if (node->type() != Node::QmlProperty) {
|
||||||
inheritedMember = true;
|
inheritedMember = true;
|
||||||
}
|
}
|
||||||
|
@ -3138,7 +3138,7 @@ void DitaXmlGenerator::generateOverviewList(const Node* relative)
|
|||||||
// If we encounter a group definition page, we add all
|
// If we encounter a group definition page, we add all
|
||||||
// the pages in that group to the list for that group.
|
// the pages in that group to the list for that group.
|
||||||
foreach (Node* member, docNode->members()) {
|
foreach (Node* member, docNode->members()) {
|
||||||
if (member->type() != Node::Document)
|
if (member->isInternal() || member->type() != Node::Document)
|
||||||
continue;
|
continue;
|
||||||
DocNode* page = static_cast<DocNode*>(member);
|
DocNode* page = static_cast<DocNode*>(member);
|
||||||
if (page) {
|
if (page) {
|
||||||
@ -3155,7 +3155,7 @@ void DitaXmlGenerator::generateOverviewList(const Node* relative)
|
|||||||
// If we encounter a page that belongs to a group then
|
// If we encounter a page that belongs to a group then
|
||||||
// we add that page to the list for that group.
|
// we add that page to the list for that group.
|
||||||
const DocNode* gn = qdb_->getGroup(group);
|
const DocNode* gn = qdb_->getGroup(group);
|
||||||
if (gn)
|
if (gn && !docNode->isInternal())
|
||||||
docNodeMap[gn].insert(sortKey, docNode);
|
docNodeMap[gn].insert(sortKey, docNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2644,7 +2644,7 @@ void HtmlGenerator::generateOverviewList(const Node *relative)
|
|||||||
// If we encounter a group definition page, we add all
|
// If we encounter a group definition page, we add all
|
||||||
// the pages in that group to the list for that group.
|
// the pages in that group to the list for that group.
|
||||||
foreach (Node *member, docNode->members()) {
|
foreach (Node *member, docNode->members()) {
|
||||||
if (member->type() != Node::Document)
|
if (member->isInternal() || member->type() != Node::Document)
|
||||||
continue;
|
continue;
|
||||||
DocNode *page = static_cast<DocNode *>(member);
|
DocNode *page = static_cast<DocNode *>(member);
|
||||||
if (page) {
|
if (page) {
|
||||||
@ -2661,7 +2661,7 @@ void HtmlGenerator::generateOverviewList(const Node *relative)
|
|||||||
// If we encounter a page that belongs to a group then
|
// If we encounter a page that belongs to a group then
|
||||||
// we add that page to the list for that group.
|
// we add that page to the list for that group.
|
||||||
const DocNode* gn = qdb_->getGroup(group);
|
const DocNode* gn = qdb_->getGroup(group);
|
||||||
if (gn)
|
if (gn && !docNode->isInternal())
|
||||||
docNodeMap[gn].insert(sortKey, docNode);
|
docNodeMap[gn].insert(sortKey, docNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -862,9 +862,12 @@ Node* InnerNode::findChildNodeByNameAndType(const QString& name, Type type)
|
|||||||
if (type == Function)
|
if (type == Function)
|
||||||
return primaryFunctionMap.value(name);
|
return primaryFunctionMap.value(name);
|
||||||
else {
|
else {
|
||||||
Node *node = childMap.value(name);
|
QList<Node*> nodes = childMap.values(name);
|
||||||
if (node && node->type() == type)
|
for (int i=0; i<nodes.size(); ++i) {
|
||||||
return node;
|
Node* node = nodes.at(i);
|
||||||
|
if (node->type() == type)
|
||||||
|
return node;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1183,8 +1183,13 @@ void QDocIndexFiles::generateIndexSections(QXmlStreamWriter& writer,
|
|||||||
It is just a place holder for a collection of QML property
|
It is just a place holder for a collection of QML property
|
||||||
nodes. Recurse to its children, which are the QML property
|
nodes. Recurse to its children, which are the QML property
|
||||||
nodes.
|
nodes.
|
||||||
|
|
||||||
|
Do the same thing for collision nodes - we want children
|
||||||
|
of collision nodes in the index, but leaving out the
|
||||||
|
parent collision page will make searching for nodes easier.
|
||||||
*/
|
*/
|
||||||
if (child->subType() == Node::QmlPropertyGroup) {
|
if (child->subType() == Node::QmlPropertyGroup ||
|
||||||
|
child->subType() == Node::Collision) {
|
||||||
const InnerNode* pgn = static_cast<const InnerNode*>(child);
|
const InnerNode* pgn = static_cast<const InnerNode*>(child);
|
||||||
foreach (Node* c, pgn->childNodes()) {
|
foreach (Node* c, pgn->childNodes()) {
|
||||||
generateIndexSections(writer, c, generateInternalNodes);
|
generateIndexSections(writer, c, generateInternalNodes);
|
||||||
|
@ -3366,7 +3366,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
|||||||
if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) {
|
if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) {
|
||||||
QStyleOptionToolButton myTb = *tb;
|
QStyleOptionToolButton myTb = *tb;
|
||||||
myTb.state &= ~State_AutoRaise;
|
myTb.state &= ~State_AutoRaise;
|
||||||
if (w && qobject_cast<QToolBar *>(w->parentWidget())) {
|
if (QStyleHelper::hasAncestor(opt->styleObject, QAccessible::ToolBar)) {
|
||||||
QRect cr = tb->rect;
|
QRect cr = tb->rect;
|
||||||
int shiftX = 0;
|
int shiftX = 0;
|
||||||
int shiftY = 0;
|
int shiftY = 0;
|
||||||
@ -3405,7 +3405,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
|||||||
if (tb->toolButtonStyle != Qt::ToolButtonIconOnly) {
|
if (tb->toolButtonStyle != Qt::ToolButtonIconOnly) {
|
||||||
needText = true;
|
needText = true;
|
||||||
if (tb->toolButtonStyle == Qt::ToolButtonTextUnderIcon) {
|
if (tb->toolButtonStyle == Qt::ToolButtonTextUnderIcon) {
|
||||||
QMainWindow *mw = qobject_cast<QMainWindow *>(w->window());
|
QMainWindow *mw = w ? qobject_cast<QMainWindow *>(w->window()) : 0;
|
||||||
if (mw && mw->unifiedTitleAndToolBarOnMac()) {
|
if (mw && mw->unifiedTitleAndToolBarOnMac()) {
|
||||||
pr.setHeight(pixmap.size().height() / pixmap.devicePixelRatio());
|
pr.setHeight(pixmap.size().height() / pixmap.devicePixelRatio());
|
||||||
cr.adjust(0, pr.bottom() + 1, 0, 1);
|
cr.adjust(0, pr.bottom() + 1, 0, 1);
|
||||||
|
@ -420,25 +420,17 @@ void QMenuPrivate::hideUpToMenuBar()
|
|||||||
if (QMenu *m = qobject_cast<QMenu*>(caused)) {
|
if (QMenu *m = qobject_cast<QMenu*>(caused)) {
|
||||||
caused = m->d_func()->causedPopup.widget;
|
caused = m->d_func()->causedPopup.widget;
|
||||||
if (!m->d_func()->tornoff)
|
if (!m->d_func()->tornoff)
|
||||||
hideMenu(m, fadeMenus);
|
hideMenu(m);
|
||||||
if (!fadeMenus) // Mac doesn't clear the action until after hidden.
|
if (!fadeMenus) // Mac doesn't clear the action until after hidden.
|
||||||
m->d_func()->setCurrentAction(0);
|
m->d_func()->setCurrentAction(0);
|
||||||
} else { caused = 0;
|
} else { caused = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if defined(Q_WS_MAC)
|
|
||||||
if (fadeMenus) {
|
|
||||||
QEventLoop eventLoop;
|
|
||||||
QTimer::singleShot(int(MenuFadeTimeInSec * 1000), &eventLoop, SLOT(quit()));
|
|
||||||
QMacWindowFader::currentFader()->performFade();
|
|
||||||
eventLoop.exec();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
setCurrentAction(0);
|
setCurrentAction(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMenuPrivate::hideMenu(QMenu *menu, bool justRegister)
|
void QMenuPrivate::hideMenu(QMenu *menu)
|
||||||
{
|
{
|
||||||
if (!menu)
|
if (!menu)
|
||||||
return;
|
return;
|
||||||
@ -462,27 +454,10 @@ void QMenuPrivate::hideMenu(QMenu *menu, bool justRegister)
|
|||||||
eventLoop.exec();
|
eventLoop.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fade out.
|
|
||||||
if (menu->style()->styleHint(QStyle::SH_Menu_FadeOutOnHide)) {
|
|
||||||
// ### Qt 4.4:
|
|
||||||
// Should be something like: q->transitionWindow(Qt::FadeOutTransition, MenuFadeTimeInSec);
|
|
||||||
// Hopefully we'll integrate qt/research/windowtransitions into main before 4.4.
|
|
||||||
// Talk to Richard, Trenton or Bjoern.
|
|
||||||
#if defined(Q_WS_MAC)
|
|
||||||
if (justRegister) {
|
|
||||||
QMacWindowFader::currentFader()->setFadeDuration(MenuFadeTimeInSec);
|
|
||||||
QMacWindowFader::currentFader()->registerWindowToFade(menu);
|
|
||||||
} else {
|
|
||||||
macWindowFade(qt_mac_window_for(menu), MenuFadeTimeInSec);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // Q_WS_MAC
|
|
||||||
}
|
|
||||||
aboutToHide = false;
|
aboutToHide = false;
|
||||||
menu->blockSignals(false);
|
menu->blockSignals(false);
|
||||||
#endif // QT_NO_EFFECTS
|
#endif // QT_NO_EFFECTS
|
||||||
if (!justRegister)
|
menu->close();
|
||||||
menu->close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst)
|
void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst)
|
||||||
|
@ -189,7 +189,7 @@ public:
|
|||||||
virtual QList<QPointer<QWidget> > calcCausedStack() const;
|
virtual QList<QPointer<QWidget> > calcCausedStack() const;
|
||||||
QMenuCaused causedPopup;
|
QMenuCaused causedPopup;
|
||||||
void hideUpToMenuBar();
|
void hideUpToMenuBar();
|
||||||
void hideMenu(QMenu *menu, bool justRegister = false);
|
void hideMenu(QMenu *menu);
|
||||||
|
|
||||||
//index mappings
|
//index mappings
|
||||||
inline QAction *actionAt(int i) const { return q_func()->actions().at(i); }
|
inline QAction *actionAt(int i) const { return q_func()->actions().at(i); }
|
||||||
|
Loading…
Reference in New Issue
Block a user