Merge remote-tracking branch 'origin/stable' into dev
Conflicts: src/corelib/global/qglobal.h src/plugins/platforms/cocoa/qnsview.mm Change-Id: I6fe345df5c417cb7a55a3f91285d9b47a22c04fa
This commit is contained in:
commit
80604a0786
41
configure
vendored
41
configure
vendored
@ -880,6 +880,7 @@ QT_DEFAULT_BUILD_PARTS="libs tools examples"
|
||||
CFG_BUILD_PARTS=""
|
||||
CFG_NOBUILD_PARTS=""
|
||||
CFG_SKIP_MODULES=""
|
||||
CFG_COMPILE_EXAMPLES=auto
|
||||
CFG_RELEASE_QMAKE=no
|
||||
CFG_AUDIO_BACKEND=auto
|
||||
CFG_V8SNAPSHOT=auto
|
||||
@ -1404,6 +1405,13 @@ while [ "$#" -gt 0 ]; do
|
||||
fi
|
||||
CFG_SKIP_MODULES="$CFG_SKIP_MODULES $VAL"
|
||||
;;
|
||||
compile-examples)
|
||||
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
|
||||
CFG_COMPILE_EXAMPLES="$VAL"
|
||||
else
|
||||
UNKNOWN_OPT=yes
|
||||
fi
|
||||
;;
|
||||
sdk)
|
||||
if [ "$BUILD_ON_MAC" = "yes" ]; then
|
||||
DeviceVar set !host_build:QMAKE_MAC_SDK "$VAL"
|
||||
@ -2336,12 +2344,6 @@ for e in gawk nawk awk; do
|
||||
fi
|
||||
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...
|
||||
if [ "$OPT_HELP" != "yes" ]; then
|
||||
|
||||
@ -2664,15 +2666,12 @@ esac
|
||||
if [ "$XPLATFORM_ANDROID" = "yes" ]; then
|
||||
if [ -z "$CFG_DEFAULT_ANDROID_NDK_HOST" ]; then
|
||||
case $PLATFORM in
|
||||
linux-*-64)
|
||||
if [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/linux-x86_64" ]; then
|
||||
CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86_64
|
||||
else
|
||||
CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86
|
||||
fi
|
||||
;;
|
||||
linux-*)
|
||||
CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86
|
||||
if [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/linux-x86" ]; then
|
||||
CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86
|
||||
elif [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/linux-x86_64" ]; then
|
||||
CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86_64
|
||||
fi
|
||||
;;
|
||||
macx-*)
|
||||
CFG_DEFAULT_ANDROID_NDK_HOST=darwin-x86
|
||||
@ -3154,6 +3153,18 @@ else
|
||||
QT_HOST_DATA=`"$relpath/config.tests/unix/makeabs" "$QT_HOST_DATA"`
|
||||
fi
|
||||
|
||||
# Do not actually build the examples in production builds with -prefix, unless requested
|
||||
if [ "$CFG_COMPILE_EXAMPLES" = auto ]; then
|
||||
if [ "$CFG_DEV" = "yes" ] || [ "x$outpath" = "x$QT_INSTALL_PREFIX" ]; then
|
||||
CFG_COMPILE_EXAMPLES=yes
|
||||
else
|
||||
CFG_COMPILE_EXAMPLES=no
|
||||
fi
|
||||
fi
|
||||
if [ "$CFG_COMPILE_EXAMPLES" = "yes" ]; then
|
||||
QMAKE_CONFIG="$QMAKE_CONFIG compile_examples"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# help - interactive parts of the script _after_ this section please
|
||||
#-------------------------------------------------------------------------------
|
||||
@ -3455,6 +3466,8 @@ Additional options:
|
||||
|
||||
-skip <module> ..... Exclude an entire module from the build.
|
||||
|
||||
-compile-examples .. Compile examples even in a production build.
|
||||
|
||||
-no-gui ............ Don't build the Qt GUI module and dependencies.
|
||||
+ -gui ............... Build the Qt GUI module and dependencies.
|
||||
|
||||
|
@ -62,8 +62,8 @@ android:!bundled_jar_file {
|
||||
} else {
|
||||
DEX_CMD = $$SDK_ROOT/platform-tools/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
|
||||
} else {
|
||||
QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR .
|
||||
|
@ -93,8 +93,7 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
|
||||
!isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles")
|
||||
}
|
||||
|
||||
# Do not actually build the examples in production builds with -prefix
|
||||
!equals(TEMPLATE, subdirs):prefix_build:!contains(QT_CONFIG, private_tests) {
|
||||
!equals(TEMPLATE, subdirs):!compile_examples {
|
||||
TEMPLATE = aux
|
||||
CONFIG -= have_target qt staticlib dll
|
||||
SOURCES =
|
||||
|
@ -240,13 +240,15 @@ defineTest(qtAddTargetEnv) {
|
||||
deppath += $$shell_path($$eval(QT.$${dep}.libs))
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
deppath.name = PATH
|
||||
} else:contains(QMAKE_HOST.os, Linux|FreeBSD) {
|
||||
} else:contains(QMAKE_HOST.os, Linux|FreeBSD|OpenBSD|NetBSD|DragonFly|SunOS|HP-UX|QNX|GNU) {
|
||||
deppath.name = LD_LIBRARY_PATH
|
||||
} else:equals(QMAKE_HOST.os, Darwin) {
|
||||
contains(QT_CONFIG, qt_framework): \
|
||||
deppath.name = DYLD_FRAMEWORK_PATH
|
||||
else: \
|
||||
deppath.name = DYLD_LIBRARY_PATH
|
||||
} else:equals(QMAKE_HOST.os, AIX) {
|
||||
deppath.name = LIBPATH
|
||||
} else {
|
||||
error("Operating system not supported.")
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
** This file is part of the qmake application of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
|
@ -3,7 +3,7 @@
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtGui module of the Qt Toolkit.
|
||||
** This file is part of the qmake application of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
|
@ -182,6 +182,7 @@ const char _Optimization[] = "Optimization";
|
||||
const char _OptimizeReferences[] = "OptimizeReferences";
|
||||
const char _OutputDirectory[] = "OutputDirectory";
|
||||
const char _OutputFile[] = "OutputFile";
|
||||
const char _PlatformToolSet[] = "PlatformToolSet";
|
||||
const char _PrecompiledHeader[] = "PrecompiledHeader";
|
||||
const char _PrecompiledHeaderFile[] = "PrecompiledHeaderFile";
|
||||
const char _PrecompiledHeaderOutputFile[] = "PrecompiledHeaderOutputFile";
|
||||
@ -467,10 +468,6 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool)
|
||||
<< attrTag("Condition", condition)
|
||||
<< valueTag(tool.Configuration.IntermediateDirectory);
|
||||
}
|
||||
if (tool.Configuration.CompilerVersion >= NET2012) {
|
||||
xml << tagValue("PlatformToolSet",
|
||||
platformToolSetVersion(tool.Configuration.CompilerVersion));
|
||||
}
|
||||
if ( !tool.Configuration.PrimaryOutput.isEmpty() ) {
|
||||
xml<< tag("TargetName")
|
||||
<< attrTag("Condition", condition)
|
||||
@ -668,10 +665,6 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
|
||||
<< attrTag("Condition", condition)
|
||||
<< valueTag(config.IntermediateDirectory);
|
||||
}
|
||||
if (config.CompilerVersion >= NET2012) {
|
||||
xml << tagValue("PlatformToolSet",
|
||||
platformToolSetVersion(config.CompilerVersion));
|
||||
}
|
||||
if (!config.PrimaryOutput.isEmpty()) {
|
||||
xml << tag("TargetName")
|
||||
<< attrTag("Condition", condition)
|
||||
@ -1649,6 +1642,7 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCConfiguration &tool)
|
||||
xml << tag("PropertyGroup")
|
||||
<< attrTag("Condition", generateCondition(tool))
|
||||
<< attrTag("Label", "Configuration")
|
||||
<< attrTagS(_PlatformToolSet, platformToolSetVersion(tool.CompilerVersion))
|
||||
<< attrTagS(_OutputDirectory, tool.OutputDirectory)
|
||||
<< attrTagT(_ATLMinimizesCRunTimeLibraryUsage, tool.ATLMinimizesCRunTimeLibraryUsage)
|
||||
<< attrTagT(_BuildBrowserInformation, tool.BuildBrowserInformation)
|
||||
@ -2057,7 +2051,6 @@ QString VCXProjectWriter::platformToolSetVersion(const DotNET version)
|
||||
case NET2012:
|
||||
return "v110";
|
||||
}
|
||||
Q_ASSERT(!"This MSVC version does not support the PlatformToolSet tag!");
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
@ -183,7 +183,7 @@ XmlOutput& XmlOutput::operator<<(const xml_output& o)
|
||||
addRaw(QString("</%1>").arg(o.xo_text));
|
||||
break;
|
||||
case tValueTag:
|
||||
addRaw(QString("%1").arg(doConversion(o.xo_text)));
|
||||
addRaw(doConversion(o.xo_text));
|
||||
setFormat(NoNewLine);
|
||||
closeTag();
|
||||
setFormat(NewLine);
|
||||
|
@ -31,9 +31,7 @@
|
||||
\brief The Qt Concurrent module contains functionality to support concurrent execution of program code
|
||||
|
||||
\ingroup modules
|
||||
\ingroup technology-apis
|
||||
|
||||
The Qt Concurrent module extends the basic threading support found in \l{Qt Core} module and
|
||||
simplifies the development of code that can be executed in parallel on all available CPU cores.
|
||||
*/
|
||||
|
||||
|
@ -58,7 +58,7 @@ QMAKE_DYNAMIC_LIST_FILE = $$PWD/QtCore.dynlist
|
||||
|
||||
contains(DEFINES,QT_EVAL):include(eval.pri)
|
||||
|
||||
HOST_BINS = $$[QT_HOST_BINS/raw]
|
||||
HOST_BINS = $$[QT_HOST_BINS]
|
||||
host_bins.name = host_bins
|
||||
host_bins.variable = HOST_BINS
|
||||
|
||||
|
@ -28,7 +28,6 @@
|
||||
/*!
|
||||
\page containers.html
|
||||
\title Container Classes
|
||||
\ingroup technology-apis
|
||||
\ingroup groups
|
||||
\ingroup qt-basic-concepts
|
||||
\keyword container class
|
||||
|
@ -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
|
||||
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)
|
||||
|
@ -311,6 +311,11 @@
|
||||
#define QT_NO_LOCALSERVER
|
||||
#endif
|
||||
|
||||
// QPdf
|
||||
#if !defined(QT_NO_PDF) && (defined(QT_NO_TEMPORARYFILE))
|
||||
#define QT_NO_PDF
|
||||
#endif
|
||||
|
||||
// QMenu
|
||||
#if !defined(QT_NO_MENU) && (defined(QT_NO_ACTION))
|
||||
#define QT_NO_MENU
|
||||
|
@ -851,6 +851,13 @@ Requires:
|
||||
Name: Color Names
|
||||
SeeAlso: ???
|
||||
|
||||
Feature: PDF
|
||||
Description: Supports pdf format
|
||||
Section: Painting
|
||||
Requires: TEMPORARYFILE
|
||||
Name: QPdf
|
||||
SeeAlso: ???
|
||||
|
||||
Feature: PRINTER
|
||||
Description: Supports printing
|
||||
Section: Painting
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include "QtCore/qcoreapplication.h"
|
||||
#include "QtCore/qfileinfo.h"
|
||||
#include "QtCore/qdebug.h"
|
||||
#include "QtCore/qdatetime.h"
|
||||
|
||||
#include "private/qcore_unix_p.h" // qt_safe_open
|
||||
#include "private/qabstractfileengine_p.h"
|
||||
@ -80,12 +81,13 @@ static qint64 qt_write_loop(int fd, const char *data, qint64 len)
|
||||
|
||||
int QLockFilePrivate::checkFcntlWorksAfterFlock()
|
||||
{
|
||||
#ifndef QT_NO_TEMPORARYFILE
|
||||
QTemporaryFile file;
|
||||
if (!file.open())
|
||||
return -2;
|
||||
return 0;
|
||||
const int fd = file.d_func()->engine()->handle();
|
||||
if (flock(fd, LOCK_EX | LOCK_NB) == -1) // other threads, and other processes on a local fs
|
||||
return -3;
|
||||
return 0;
|
||||
struct flock flockData;
|
||||
flockData.l_type = F_WRLCK;
|
||||
flockData.l_whence = SEEK_SET;
|
||||
@ -95,6 +97,9 @@ int QLockFilePrivate::checkFcntlWorksAfterFlock()
|
||||
if (fcntl(fd, F_SETLK, &flockData) == -1) // for networked filesystems
|
||||
return 0;
|
||||
return 1;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static QBasicAtomicInt fcntlOK = Q_BASIC_ATOMIC_INITIALIZER(-1);
|
||||
|
@ -39,8 +39,11 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qplatformdefs.h"
|
||||
#include "qsavefile.h"
|
||||
|
||||
#ifndef QT_NO_TEMPORARYFILE
|
||||
|
||||
#include "qplatformdefs.h"
|
||||
#include "private/qsavefile_p.h"
|
||||
#include "qfileinfo.h"
|
||||
#include "qabstractfileengine_p.h"
|
||||
@ -381,3 +384,5 @@ bool QSaveFile::directWriteFallback() const
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_TEMPORARYFILE
|
||||
|
@ -42,6 +42,10 @@
|
||||
#ifndef QSAVEFILE_H
|
||||
#define QSAVEFILE_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef QT_NO_TEMPORARYFILE
|
||||
|
||||
#include <QtCore/qfiledevice.h>
|
||||
#include <QtCore/qstring.h>
|
||||
|
||||
@ -51,7 +55,6 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
class QAbstractFileEngine;
|
||||
class QSaveFilePrivate;
|
||||
|
||||
@ -90,4 +93,6 @@ private:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_TEMPORARYFILE
|
||||
|
||||
#endif // QSAVEFILE_H
|
||||
|
@ -53,6 +53,10 @@
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef QT_NO_TEMPORARYFILE
|
||||
|
||||
#include "private/qfiledevice_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
@ -75,4 +79,6 @@ protected:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_TEMPORARYFILE
|
||||
|
||||
#endif // QSAVEFILE_P_H
|
||||
|
@ -42,6 +42,10 @@
|
||||
#ifndef QTEMPORARYFILE_P_H
|
||||
#define QTEMPORARYFILE_P_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef QT_NO_TEMPORARYFILE
|
||||
|
||||
#include "private/qfsfileengine_p.h"
|
||||
#include "private/qfilesystemengine_p.h"
|
||||
#include "private/qfile_p.h"
|
||||
@ -99,5 +103,7 @@ public:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_TEMPORARYFILE
|
||||
|
||||
#endif /* QTEMPORARYFILE_P_H */
|
||||
|
||||
|
@ -886,7 +886,8 @@ bool Parser::parseString(bool *latin1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (ch > 0xff) {
|
||||
// bail out if the string is not pure latin1 or too long to hold as a latin1string (which has only 16 bit for the length)
|
||||
if (ch > 0xff || json - start >= 0x8000) {
|
||||
*latin1 = false;
|
||||
break;
|
||||
}
|
||||
|
@ -52,6 +52,8 @@
|
||||
|
||||
#include "qelapsedtimer.h"
|
||||
#include "qcoreapplication_p.h"
|
||||
#include "qsysinfo.h"
|
||||
|
||||
#include <private/qthread_p.h>
|
||||
#include <private/qmutexpool_p.h>
|
||||
|
||||
@ -305,8 +307,14 @@ static void resolveTimerAPI()
|
||||
#endif
|
||||
triedResolve = true;
|
||||
#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");
|
||||
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("winmm"), "timeKillEvent");
|
||||
}
|
||||
#else
|
||||
qtimeSetEvent = (ptimeSetEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeSetEvent");
|
||||
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeKillEvent");
|
||||
|
@ -201,6 +201,12 @@ QT_BEGIN_NAMESPACE
|
||||
function to manipulate the rectangle's coordinates and dimensions
|
||||
in one go.
|
||||
|
||||
\section1 Constraints
|
||||
|
||||
QRect is limited to the minimum and maximum values for the \c int type.
|
||||
Operations on a QRect that could potentially result in values outside this
|
||||
range will result in undefined behavior.
|
||||
|
||||
\sa QRectF, QRegion
|
||||
*/
|
||||
|
||||
|
@ -31,7 +31,6 @@
|
||||
\brief An introduction to Inter-Process Communication and Remote Procedure Calling with D-Bus.
|
||||
|
||||
\keyword QtDBus
|
||||
\ingroup technology-apis
|
||||
|
||||
\section1 Introduction
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
to perform Inter-Process Communication using the \l{D-Bus} protocol.
|
||||
|
||||
\ingroup modules
|
||||
\ingroup technology-apis
|
||||
|
||||
\target The QDBus compiler
|
||||
|
||||
|
@ -31,6 +31,8 @@ HEADERS += \
|
||||
kernel/qplatformclipboard.h \
|
||||
kernel/qplatformnativeinterface.h \
|
||||
kernel/qplatformmenu.h \
|
||||
kernel/qshapedpixmapdndwindow_p.h \
|
||||
kernel/qsimpledrag_p.h \
|
||||
kernel/qsurfaceformat.h \
|
||||
kernel/qguiapplication.h \
|
||||
kernel/qguiapplication_p.h \
|
||||
@ -89,6 +91,8 @@ SOURCES += \
|
||||
kernel/qplatformclipboard.cpp \
|
||||
kernel/qplatformnativeinterface.cpp \
|
||||
kernel/qsessionmanager.cpp \
|
||||
kernel/qshapedpixmapdndwindow.cpp \
|
||||
kernel/qsimpledrag.cpp \
|
||||
kernel/qsurfaceformat.cpp \
|
||||
kernel/qguiapplication.cpp \
|
||||
kernel/qwindow.cpp \
|
||||
|
@ -49,6 +49,7 @@
|
||||
#include <QtGui/private/qpixmap_raster_p.h>
|
||||
#include <qpa/qplatformscreen_p.h>
|
||||
#include <private/qdnd_p.h>
|
||||
#include <private/qsimpledrag_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -99,7 +100,11 @@ QPlatformClipboard *QPlatformIntegration::clipboard() const
|
||||
*/
|
||||
QPlatformDrag *QPlatformIntegration::drag() const
|
||||
{
|
||||
return 0;
|
||||
static QSimpleDrag *drag = 0;
|
||||
if (!drag) {
|
||||
drag = new QSimpleDrag;
|
||||
}
|
||||
return drag;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -510,15 +510,21 @@ QRect QPlatformWindow::initialGeometry(const QWindow *w,
|
||||
}
|
||||
}
|
||||
if (w->isTopLevel() && qt_window_private(const_cast<QWindow*>(w))->positionAutomatic) {
|
||||
const QWindow *tp = w->transientParent();
|
||||
if (tp) {
|
||||
// A transient window should be centered w.r.t. its transient parent.
|
||||
rect.moveCenter(tp->geometry().center());
|
||||
} else {
|
||||
// Center the window on the screen. (Only applicable on platforms
|
||||
// which do not provide a better way.)
|
||||
QPlatformScreen *scr = QPlatformScreen::platformScreenForWindow(w);
|
||||
rect.moveCenter(scr->availableGeometry().center());
|
||||
if (const QPlatformScreen *platformScreen = QPlatformScreen::platformScreenForWindow(w)) {
|
||||
const QRect availableGeometry = platformScreen->availableGeometry();
|
||||
// Center unless the geometry ( + unknown window frame) is too large for the screen).
|
||||
if (rect.height() < (availableGeometry.height() * 8) / 9
|
||||
&& rect.width() < (availableGeometry.width() * 8) / 9) {
|
||||
const QWindow *tp = w->transientParent();
|
||||
if (tp) {
|
||||
// A transient window should be centered w.r.t. its transient parent.
|
||||
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;
|
||||
|
@ -62,7 +62,7 @@
|
||||
#include <private/qguiapplication_p.h>
|
||||
#include <private/qdnd_p.h>
|
||||
|
||||
#include <QtPlatformSupport/private/qshapedpixmapdndwindow_p.h>
|
||||
#include <private/qshapedpixmapdndwindow_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
@ -56,7 +56,7 @@ class QEventLoop;
|
||||
class QDropData;
|
||||
class QShapedPixmapWindow;
|
||||
|
||||
class QBasicDrag : public QPlatformDrag, public QObject
|
||||
class Q_GUI_EXPORT QBasicDrag : public QPlatformDrag, public QObject
|
||||
{
|
||||
public:
|
||||
virtual ~QBasicDrag();
|
||||
@ -99,7 +99,7 @@ private:
|
||||
QShapedPixmapWindow *m_drag_icon_window;
|
||||
};
|
||||
|
||||
class QSimpleDrag : public QBasicDrag
|
||||
class Q_GUI_EXPORT QSimpleDrag : public QBasicDrag
|
||||
{
|
||||
public:
|
||||
QSimpleDrag();
|
@ -907,11 +907,13 @@ bool QOpenGLShaderProgram::link()
|
||||
GLint len;
|
||||
d->glfuncs->glGetProgramInfoLog(program, value, &len, logbuf);
|
||||
d->log = QString::fromLatin1(logbuf);
|
||||
QString name = objectName();
|
||||
if (name.isEmpty())
|
||||
qWarning() << "QOpenGLShader::link:" << d->log;
|
||||
else
|
||||
qWarning() << "QOpenGLShader::link[" << name << "]:" << d->log;
|
||||
if (!d->linked) {
|
||||
QString name = objectName();
|
||||
if (name.isEmpty())
|
||||
qWarning() << "QOpenGLShader::link:" << d->log;
|
||||
else
|
||||
qWarning() << "QOpenGLShader::link[" << name << "]:" << d->log;
|
||||
}
|
||||
delete [] logbuf;
|
||||
}
|
||||
return d->linked;
|
||||
|
@ -98,10 +98,12 @@ void QBackingStore::flush(const QRegion ®ion, QWindow *win, const QPoint &off
|
||||
if (!win)
|
||||
win = window();
|
||||
|
||||
#ifdef QBACKINGSTORE_DEBUG
|
||||
if (win && win->isTopLevel() && !qt_window_private(win)->receivedExpose) {
|
||||
qWarning().nospace() << "QBackingStore::flush() called with non-exposed window "
|
||||
<< win << ", behavior is undefined";
|
||||
}
|
||||
#endif
|
||||
|
||||
d_ptr->platformBackingStore->flush(win, region, offset);
|
||||
}
|
||||
|
@ -293,6 +293,7 @@ bool QPainterPrivate::attachPainterPrivate(QPainter *q, QPaintDevice *pdev)
|
||||
// Update matrix.
|
||||
if (q->d_ptr->state->WxF) {
|
||||
q->d_ptr->state->redirectionMatrix = q->d_ptr->state->matrix;
|
||||
q->d_ptr->state->redirectionMatrix *= q->d_ptr->hidpiScaleTransform().inverted();
|
||||
q->d_ptr->state->redirectionMatrix.translate(-offset.x(), -offset.y());
|
||||
q->d_ptr->state->worldMatrix = QTransform();
|
||||
q->d_ptr->state->WxF = false;
|
||||
|
@ -38,9 +38,13 @@
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qpdf_p.h"
|
||||
|
||||
#ifndef QT_NO_PDF
|
||||
|
||||
#include "qplatformdefs.h"
|
||||
#include <qdebug.h>
|
||||
#include "qpdf_p.h"
|
||||
#include <qfile.h>
|
||||
#include <qtemporaryfile.h>
|
||||
#include <private/qmath_p.h>
|
||||
@ -2624,5 +2628,6 @@ void QPdfEnginePrivate::newPage()
|
||||
<< "q q\n";
|
||||
}
|
||||
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_PDF
|
||||
|
@ -52,6 +52,11 @@
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef QT_NO_PDF
|
||||
|
||||
#include "QtGui/qmatrix.h"
|
||||
#include "QtCore/qstring.h"
|
||||
#include "QtCore/qvector.h"
|
||||
@ -328,5 +333,7 @@ void QPdfEngine::setResolution(int resolution)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_PDF
|
||||
|
||||
#endif // QPDF_P_H
|
||||
|
||||
|
@ -40,6 +40,9 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include <qpdfwriter.h>
|
||||
|
||||
#ifndef QT_NO_PDF
|
||||
|
||||
#include <QtCore/private/qobject_p.h>
|
||||
#include "private/qpdf_p.h"
|
||||
#include <QtCore/qfile.h>
|
||||
@ -214,3 +217,5 @@ void QPdfWriter::setMargins(const Margins &m)
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_PDF
|
||||
|
@ -42,12 +42,15 @@
|
||||
#ifndef QPDFWRITER_H
|
||||
#define QPDFWRITER_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef QT_NO_PDF
|
||||
|
||||
#include <QtCore/qobject.h>
|
||||
#include <QtGui/qpagedpaintdevice.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
class QIODevice;
|
||||
class QPdfWriterPrivate;
|
||||
|
||||
@ -83,4 +86,6 @@ private:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_PDF
|
||||
|
||||
#endif
|
||||
|
@ -91,6 +91,8 @@ static const unsigned short symbol_map[0x100] = {
|
||||
|
||||
// ---------------------------- PS/PDF helper methods -----------------------------------
|
||||
|
||||
#ifndef QT_NO_PDF
|
||||
|
||||
QByteArray QFontSubset::glyphName(unsigned short unicode, bool symbol)
|
||||
{
|
||||
if (symbol && unicode < 0x100)
|
||||
@ -311,6 +313,7 @@ int QFontSubset::addGlyph(int index)
|
||||
return idx;
|
||||
}
|
||||
|
||||
#endif // QT_NO_PDF
|
||||
|
||||
// ------------------------------ Truetype generation ----------------------------------------------
|
||||
|
||||
|
@ -62,13 +62,19 @@ class QFontSubset
|
||||
public:
|
||||
explicit QFontSubset(QFontEngine *fe, int obj_id = 0)
|
||||
: object_id(obj_id), noEmbed(false), fontEngine(fe), downloaded_glyphs(0), standard_font(false)
|
||||
{ fontEngine->ref.ref(); addGlyph(0); }
|
||||
{
|
||||
fontEngine->ref.ref();
|
||||
#ifndef QT_NO_PDF
|
||||
addGlyph(0);
|
||||
#endif
|
||||
}
|
||||
~QFontSubset() {
|
||||
if (!fontEngine->ref.deref())
|
||||
delete fontEngine;
|
||||
}
|
||||
|
||||
QByteArray toTruetype() const;
|
||||
#ifndef QT_NO_PDF
|
||||
QByteArray widthArray() const;
|
||||
QByteArray createToUnicodeMap() const;
|
||||
QVector<int> getReverseMap() const;
|
||||
@ -77,6 +83,7 @@ public:
|
||||
static QByteArray glyphName(unsigned short unicode, bool symbol);
|
||||
|
||||
int addGlyph(int index);
|
||||
#endif
|
||||
const int object_id;
|
||||
bool noEmbed;
|
||||
QFontEngine *fontEngine;
|
||||
|
@ -62,6 +62,7 @@ static void connManager_cleanup()
|
||||
// this is not atomic or thread-safe!
|
||||
int shutdown = appShutdown.fetchAndStoreAcquire(1);
|
||||
Q_ASSERT(shutdown == 0);
|
||||
Q_UNUSED(shutdown);
|
||||
QNetworkConfigurationManagerPrivate *cmp = connManager_ptr.fetchAndStoreAcquire(0);
|
||||
if (cmp)
|
||||
cmp->cleanup();
|
||||
|
@ -1602,7 +1602,7 @@ QList<QSslError> QSslSocketBackendPrivate::verify(QList<QSslCertificate> certifi
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
q_sk_push( (_STACK *)intermediates, reinterpret_cast<X509 *>(cert.handle()));
|
||||
#else
|
||||
q_sk_push( (STACK *)intermediates, reinterpret_cast<X509 *>(cert.handle()));
|
||||
q_sk_push( (STACK *)intermediates, reinterpret_cast<char *>(cert.handle()));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -183,7 +183,7 @@ DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG)
|
||||
DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return 0, return)
|
||||
#else
|
||||
DEFINEFUNC(STACK *, sk_new_null, DUMMYARG, DUMMYARG, return 0, return)
|
||||
DEFINEFUNC2(void, sk_push, STACK *a, a, void *b, b, return, DUMMYARG)
|
||||
DEFINEFUNC2(void, sk_push, STACK *a, a, char *b, b, return, DUMMYARG)
|
||||
DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG)
|
||||
DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return)
|
||||
#endif
|
||||
@ -297,7 +297,11 @@ DEFINEFUNC(int, X509_EXTENSION_get_critical, X509_EXTENSION *a, a, return 0, ret
|
||||
DEFINEFUNC(ASN1_OCTET_STRING *, X509_EXTENSION_get_data, X509_EXTENSION *a, a, return 0, return)
|
||||
DEFINEFUNC(void, BASIC_CONSTRAINTS_free, BASIC_CONSTRAINTS *a, a, return, DUMMYARG)
|
||||
DEFINEFUNC(void, AUTHORITY_KEYID_free, AUTHORITY_KEYID *a, a, return, DUMMYARG)
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
DEFINEFUNC2(int, ASN1_STRING_print, BIO *a, a, const ASN1_STRING *b, b, return 0, return)
|
||||
#else
|
||||
DEFINEFUNC2(int, ASN1_STRING_print, BIO *a, a, ASN1_STRING *b, b, return 0, return)
|
||||
#endif
|
||||
DEFINEFUNC(X509_NAME *, X509_get_issuer_name, X509 *a, a, return 0, return)
|
||||
DEFINEFUNC(X509_NAME *, X509_get_subject_name, X509 *a, a, return 0, return)
|
||||
DEFINEFUNC(int, X509_verify_cert, X509_STORE_CTX *a, a, return -1, return)
|
||||
|
@ -285,7 +285,7 @@ void q_sk_free(_STACK *a);
|
||||
void * q_sk_value(STACK *a, int b);
|
||||
#else
|
||||
STACK *q_sk_new_null();
|
||||
void q_sk_push(STACK *st, void *data);
|
||||
void q_sk_push(STACK *st, char *data);
|
||||
void q_sk_free(STACK *a);
|
||||
char * q_sk_value(STACK *a, int b);
|
||||
#endif
|
||||
@ -399,7 +399,11 @@ int q_X509_EXTENSION_get_critical(X509_EXTENSION *a);
|
||||
ASN1_OCTET_STRING *q_X509_EXTENSION_get_data(X509_EXTENSION *a);
|
||||
void q_BASIC_CONSTRAINTS_free(BASIC_CONSTRAINTS *a);
|
||||
void q_AUTHORITY_KEYID_free(AUTHORITY_KEYID *a);
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
int q_ASN1_STRING_print(BIO *a, const ASN1_STRING *b);
|
||||
#else
|
||||
int q_ASN1_STRING_print(BIO *a, ASN1_STRING *b);
|
||||
#endif
|
||||
X509_NAME *q_X509_get_issuer_name(X509 *a);
|
||||
X509_NAME *q_X509_get_subject_name(X509 *a);
|
||||
int q_X509_verify_cert(X509_STORE_CTX *ctx);
|
||||
|
@ -29,7 +29,6 @@
|
||||
\module QtOpenGL
|
||||
\title Qt OpenGL C++ Classes
|
||||
\ingroup modules
|
||||
\ingroup technology-apis
|
||||
|
||||
\brief The Qt OpenGL module offers classes that make it easy to
|
||||
use OpenGL in Qt applications.
|
||||
@ -70,5 +69,3 @@
|
||||
OpenGL module can take advantage of the whole Qt API for
|
||||
non-OpenGL-specific GUI functionality.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -1217,7 +1217,7 @@ void QGL2PaintEngineEx::stroke(const QVectorPath &path, const QPen &pen)
|
||||
if (qpen_style(pen) == Qt::NoPen || qbrush_style(penBrush) == Qt::NoBrush)
|
||||
return;
|
||||
|
||||
QOpenGL2PaintEngineState *s = state();
|
||||
QGL2PaintEngineState *s = state();
|
||||
if (qt_pen_is_cosmetic(pen, s->renderHints) && !qt_scaleForTransform(s->transform(), 0)) {
|
||||
// QTriangulatingStroker class is not meant to support cosmetically sheared strokes.
|
||||
QPaintEngineEx::stroke(path, pen);
|
||||
@ -1231,7 +1231,7 @@ void QGL2PaintEngineEx::stroke(const QVectorPath &path, const QPen &pen)
|
||||
|
||||
void QGL2PaintEngineExPrivate::stroke(const QVectorPath &path, const QPen &pen)
|
||||
{
|
||||
const QOpenGL2PaintEngineState *s = q->state();
|
||||
const QGL2PaintEngineState *s = q->state();
|
||||
if (snapToPixelGrid) {
|
||||
snapToPixelGrid = false;
|
||||
matrixDirty = true;
|
||||
@ -1504,7 +1504,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
|
||||
Q_D(QGL2PaintEngineEx);
|
||||
|
||||
ensureActive();
|
||||
QOpenGL2PaintEngineState *s = state();
|
||||
QGL2PaintEngineState *s = state();
|
||||
|
||||
const QTextItemInt &ti = static_cast<const QTextItemInt &>(textItem);
|
||||
|
||||
@ -1579,7 +1579,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
|
||||
{
|
||||
Q_Q(QGL2PaintEngineEx);
|
||||
|
||||
QOpenGL2PaintEngineState *s = q->state();
|
||||
QGL2PaintEngineState *s = q->state();
|
||||
|
||||
void *cacheKey = const_cast<QGLContext *>(QGLContextPrivate::contextGroup(ctx)->context());
|
||||
bool recreateVertexArrays = false;
|
||||
@ -2360,8 +2360,8 @@ void QGL2PaintEngineEx::setState(QPainterState *new_state)
|
||||
|
||||
Q_D(QGL2PaintEngineEx);
|
||||
|
||||
QOpenGL2PaintEngineState *s = static_cast<QOpenGL2PaintEngineState *>(new_state);
|
||||
QOpenGL2PaintEngineState *old_state = state();
|
||||
QGL2PaintEngineState *s = static_cast<QGL2PaintEngineState *>(new_state);
|
||||
QGL2PaintEngineState *old_state = state();
|
||||
|
||||
QPaintEngineEx::setState(s);
|
||||
|
||||
@ -2402,11 +2402,11 @@ QPainterState *QGL2PaintEngineEx::createState(QPainterState *orig) const
|
||||
if (orig)
|
||||
const_cast<QGL2PaintEngineEx *>(this)->ensureActive();
|
||||
|
||||
QOpenGL2PaintEngineState *s;
|
||||
QGL2PaintEngineState *s;
|
||||
if (!orig)
|
||||
s = new QOpenGL2PaintEngineState();
|
||||
s = new QGL2PaintEngineState();
|
||||
else
|
||||
s = new QOpenGL2PaintEngineState(*static_cast<QOpenGL2PaintEngineState *>(orig));
|
||||
s = new QGL2PaintEngineState(*static_cast<QGL2PaintEngineState *>(orig));
|
||||
|
||||
s->matrixChanged = false;
|
||||
s->compositionModeChanged = false;
|
||||
@ -2417,7 +2417,7 @@ QPainterState *QGL2PaintEngineEx::createState(QPainterState *orig) const
|
||||
return s;
|
||||
}
|
||||
|
||||
QOpenGL2PaintEngineState::QOpenGL2PaintEngineState(QOpenGL2PaintEngineState &other)
|
||||
QGL2PaintEngineState::QGL2PaintEngineState(QGL2PaintEngineState &other)
|
||||
: QPainterState(other)
|
||||
{
|
||||
isNew = true;
|
||||
@ -2428,7 +2428,7 @@ QOpenGL2PaintEngineState::QOpenGL2PaintEngineState(QOpenGL2PaintEngineState &oth
|
||||
rectangleClip = other.rectangleClip;
|
||||
}
|
||||
|
||||
QOpenGL2PaintEngineState::QOpenGL2PaintEngineState()
|
||||
QGL2PaintEngineState::QGL2PaintEngineState()
|
||||
{
|
||||
isNew = true;
|
||||
needsClipBufferClear = true;
|
||||
@ -2436,7 +2436,7 @@ QOpenGL2PaintEngineState::QOpenGL2PaintEngineState()
|
||||
canRestoreClip = true;
|
||||
}
|
||||
|
||||
QOpenGL2PaintEngineState::~QOpenGL2PaintEngineState()
|
||||
QGL2PaintEngineState::~QGL2PaintEngineState()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -82,12 +82,12 @@ QT_BEGIN_NAMESPACE
|
||||
class QGL2PaintEngineExPrivate;
|
||||
|
||||
|
||||
class QOpenGL2PaintEngineState : public QPainterState
|
||||
class QGL2PaintEngineState : public QPainterState
|
||||
{
|
||||
public:
|
||||
QOpenGL2PaintEngineState(QOpenGL2PaintEngineState &other);
|
||||
QOpenGL2PaintEngineState();
|
||||
~QOpenGL2PaintEngineState();
|
||||
QGL2PaintEngineState(QGL2PaintEngineState &other);
|
||||
QGL2PaintEngineState();
|
||||
~QGL2PaintEngineState();
|
||||
|
||||
uint isNew : 1;
|
||||
uint needsClipBufferClear : 1;
|
||||
@ -141,11 +141,11 @@ public:
|
||||
|
||||
virtual void setState(QPainterState *s);
|
||||
virtual QPainterState *createState(QPainterState *orig) const;
|
||||
inline QOpenGL2PaintEngineState *state() {
|
||||
return static_cast<QOpenGL2PaintEngineState *>(QPaintEngineEx::state());
|
||||
inline QGL2PaintEngineState *state() {
|
||||
return static_cast<QGL2PaintEngineState *>(QPaintEngineEx::state());
|
||||
}
|
||||
inline const QOpenGL2PaintEngineState *state() const {
|
||||
return static_cast<const QOpenGL2PaintEngineState *>(QPaintEngineEx::state());
|
||||
inline const QGL2PaintEngineState *state() const {
|
||||
return static_cast<const QGL2PaintEngineState *>(QPaintEngineEx::state());
|
||||
}
|
||||
|
||||
void beginNativePainting();
|
||||
|
@ -1579,10 +1579,7 @@ QGLContextPrivate::QGLContextPrivate(QGLContext *context)
|
||||
{
|
||||
group = new QGLContextGroup(context);
|
||||
|
||||
if (qApp) {
|
||||
texture_destroyer = new QGLTextureDestroyer;
|
||||
texture_destroyer->moveToThread(qApp->thread());
|
||||
}
|
||||
texture_destroyer = new QGLTextureDestroyer;
|
||||
}
|
||||
|
||||
QGLContextPrivate::~QGLContextPrivate()
|
||||
|
@ -335,25 +335,16 @@ QT_END_NAMESPACE
|
||||
Q_DECLARE_METATYPE(GLuint)
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class Q_OPENGL_EXPORT QGLTextureDestroyer : public QObject
|
||||
class Q_OPENGL_EXPORT QGLTextureDestroyer
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QGLTextureDestroyer() : QObject() {
|
||||
connect(this, SIGNAL(freeTexture(QGLContext *, QPlatformPixmap *, quint32)),
|
||||
this, SLOT(freeTexture_slot(QGLContext *, QPlatformPixmap *, quint32)));
|
||||
}
|
||||
void emitFreeTexture(QGLContext *context, QPlatformPixmap *boundPixmap, GLuint id) {
|
||||
emit freeTexture(context, boundPixmap, id);
|
||||
void emitFreeTexture(QGLContext *context, QPlatformPixmap *, GLuint id) {
|
||||
if (context->contextHandle())
|
||||
(new QOpenGLSharedResourceGuard(context->contextHandle(), id, freeTextureFunc))->free();
|
||||
}
|
||||
|
||||
Q_SIGNALS:
|
||||
void freeTexture(QGLContext *context, QPlatformPixmap *boundPixmap, quint32 id);
|
||||
|
||||
private slots:
|
||||
void freeTexture_slot(QGLContext *context, QPlatformPixmap *boundPixmap, quint32 id) {
|
||||
Q_UNUSED(boundPixmap);
|
||||
QGLShareContextScope scope(context);
|
||||
private:
|
||||
static void freeTextureFunc(QOpenGLFunctions *, GLuint id) {
|
||||
glDeleteTextures(1, &id);
|
||||
}
|
||||
};
|
||||
|
@ -957,10 +957,12 @@ bool QGLShaderProgram::link()
|
||||
d->glfuncs->glGetProgramInfoLog(program, value, &len, logbuf);
|
||||
d->log = QString::fromLatin1(logbuf);
|
||||
QString name = objectName();
|
||||
if (name.isEmpty())
|
||||
qWarning() << "QGLShader::link:" << d->log;
|
||||
else
|
||||
qWarning() << "QGLShader::link[" << name << "]:" << d->log;
|
||||
if (!d->linked) {
|
||||
if (name.isEmpty())
|
||||
qWarning() << "QGLShader::link:" << d->log;
|
||||
else
|
||||
qWarning() << "QGLShader::link[" << name << "]:" << d->log;
|
||||
}
|
||||
delete [] logbuf;
|
||||
}
|
||||
return d->linked;
|
||||
|
@ -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(cglconvenience/cglconvenience.pri)
|
||||
include(dnd/dnd.pri)
|
||||
include(eglconvenience/eglconvenience.pri)
|
||||
include(eventdispatchers/eventdispatchers.pri)
|
||||
include(fbconvenience/fbconvenience.pri)
|
||||
|
@ -81,6 +81,8 @@ QConnmanManagerInterface::QConnmanManagerInterface( QObject *parent)
|
||||
CONNMAN_MANAGER_INTERFACE,
|
||||
QDBusConnection::systemBus(), parent)
|
||||
{
|
||||
qDBusRegisterMetaType<ConnmanMap>();
|
||||
qDBusRegisterMetaType<ConnmanMapList>();
|
||||
}
|
||||
|
||||
QConnmanManagerInterface::~QConnmanManagerInterface()
|
||||
|
@ -45,7 +45,7 @@
|
||||
#include <Cocoa/Cocoa.h>
|
||||
#include <QtGui>
|
||||
#include <qpa/qplatformdrag.h>
|
||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
||||
#include <private/qsimpledrag_p.h>
|
||||
|
||||
#include <QtGui/private/qdnd_p.h>
|
||||
|
||||
|
@ -179,7 +179,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QCocoaMenuDelegate);
|
||||
}
|
||||
|
||||
QKeyEvent accel_ev(QEvent::ShortcutOverride, (keyCode & (~Qt::KeyboardModifierMask)),
|
||||
Qt::KeyboardModifiers(keyCode & Qt::KeyboardModifierMask));
|
||||
Qt::KeyboardModifiers(modifiers & Qt::KeyboardModifierMask));
|
||||
accel_ev.ignore();
|
||||
QCoreApplication::sendEvent(object, &accel_ev);
|
||||
if (accel_ev.isAccepted()) {
|
||||
|
@ -136,6 +136,17 @@ void QCocoaMenuBar::syncMenu(QPlatformMenu *menu)
|
||||
QCocoaMenu *cocoaMenu = static_cast<QCocoaMenu *>(menu);
|
||||
Q_FOREACH (QCocoaMenuItem *item, cocoaMenu->items())
|
||||
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)
|
||||
|
@ -241,7 +241,8 @@ NSMenuItem *QCocoaMenuItem::sync()
|
||||
mergeItem = [loader quitMenuItem];
|
||||
break;
|
||||
default:
|
||||
m_textSynced = true;
|
||||
if (!m_text.isEmpty())
|
||||
m_textSynced = true;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -264,7 +265,7 @@ NSMenuItem *QCocoaMenuItem::sync()
|
||||
m_native = nil; // create item below
|
||||
m_merged = false;
|
||||
}
|
||||
} else {
|
||||
} else if (!m_text.isEmpty()) {
|
||||
m_textSynced = true; // NoRole, and that was set explicitly. So, nothing to do anymore.
|
||||
}
|
||||
|
||||
|
@ -118,6 +118,7 @@ public:
|
||||
bool setKeyboardGrabEnabled(bool grab);
|
||||
bool setMouseGrabEnabled(bool grab);
|
||||
QMargins frameMargins() const;
|
||||
QSurfaceFormat format() const;
|
||||
|
||||
void requestActivateWindow();
|
||||
|
||||
|
@ -256,6 +256,11 @@ QCocoaWindow::~QCocoaWindow()
|
||||
[m_nsWindowDelegate release];
|
||||
}
|
||||
|
||||
QSurfaceFormat QCocoaWindow::format() const
|
||||
{
|
||||
return window()->requestedFormat();
|
||||
}
|
||||
|
||||
void QCocoaWindow::setGeometry(const QRect &rect)
|
||||
{
|
||||
if (geometry() == rect)
|
||||
@ -821,6 +826,9 @@ NSWindow * QCocoaWindow::createNSWindow()
|
||||
if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {
|
||||
// Make popup winows show on the same desktop as the parent full-screen window.
|
||||
[window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenAuxiliary];
|
||||
|
||||
if ((type & Qt::Popup) == Qt::Popup)
|
||||
[window setAnimationBehavior:NSWindowAnimationBehaviorUtilityWindow];
|
||||
}
|
||||
#endif
|
||||
window->m_cocoaPlatformWindow = this;
|
||||
@ -1013,15 +1021,11 @@ void QCocoaWindow::obscureWindow()
|
||||
QWindow *QCocoaWindow::childWindowAt(QPoint windowPoint)
|
||||
{
|
||||
QWindow *targetWindow = window();
|
||||
foreach (QObject *child, targetWindow->children()) {
|
||||
if (QWindow *childWindow = qobject_cast<QWindow *>(child)) {
|
||||
if (childWindow->geometry().contains(windowPoint)) {
|
||||
QCocoaWindow* platformWindow = static_cast<QCocoaWindow*>(childWindow->handle());
|
||||
if (platformWindow->isExposed())
|
||||
targetWindow = platformWindow->childWindowAt(windowPoint - childWindow->position());
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (QObject *child, targetWindow->children())
|
||||
if (QWindow *childWindow = qobject_cast<QWindow *>(child))
|
||||
if (QPlatformWindow *handle = childWindow->handle())
|
||||
if (handle->isExposed() && childWindow->geometry().contains(windowPoint))
|
||||
targetWindow = static_cast<QCocoaWindow*>(handle)->childWindowAt(windowPoint - childWindow->position());
|
||||
|
||||
return targetWindow;
|
||||
}
|
||||
|
@ -113,6 +113,7 @@ QT_END_NAMESPACE
|
||||
- (void)handleKeyEvent:(NSEvent *)theEvent eventType:(int)eventType;
|
||||
- (void)keyDown:(NSEvent *)theEvent;
|
||||
- (void)keyUp:(NSEvent *)theEvent;
|
||||
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent;
|
||||
|
||||
- (void)registerDragTypes;
|
||||
- (NSDragOperation)handleDrag:(id <NSDraggingInfo>)sender;
|
||||
|
@ -113,6 +113,8 @@ static QTouchDevice *touchDevice = 0;
|
||||
name:NSViewGlobalFrameDidChangeNotification
|
||||
object:self];
|
||||
}
|
||||
delete currentCustomDragTypes;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@ -340,15 +342,20 @@ static QTouchDevice *touchDevice = 0;
|
||||
}
|
||||
|
||||
const QRect &rect = region->boundingRect();
|
||||
QImage maskImage(rect.size(), QImage::Format_RGB888);
|
||||
maskImage.fill(Qt::white);
|
||||
QPainter p(&maskImage);
|
||||
p.setRenderHint(QPainter::Antialiasing);
|
||||
QImage tmp(rect.size(), QImage::Format_RGB32);
|
||||
tmp.fill(Qt::white);
|
||||
QPainter p(&tmp);
|
||||
p.setClipRegion(*region);
|
||||
p.fillRect(rect, QBrush(Qt::black));
|
||||
p.fillRect(rect, Qt::black);
|
||||
p.end();
|
||||
|
||||
maskImage = maskImage.convertToFormat(QImage::Format_Indexed8);
|
||||
QImage maskImage = QImage(rect.size(), QImage::Format_Indexed8);
|
||||
for (int y=0; y<rect.height(); ++y) {
|
||||
const uint *src = (const uint *) tmp.constScanLine(y);
|
||||
uchar *dst = maskImage.scanLine(y);
|
||||
for (int x=0; x<rect.width(); ++x) {
|
||||
dst[x] = src[x] & 0xff;
|
||||
}
|
||||
}
|
||||
m_maskImage = qt_mac_toCGImage(maskImage, true, &m_maskData);
|
||||
}
|
||||
|
||||
@ -955,6 +962,23 @@ static QTouchDevice *touchDevice = 0;
|
||||
[self handleKeyEvent:nsevent eventType:int(QEvent::KeyRelease)];
|
||||
}
|
||||
|
||||
- (BOOL)performKeyEquivalent:(NSEvent *)nsevent
|
||||
{
|
||||
NSString *chars = [nsevent charactersIgnoringModifiers];
|
||||
|
||||
if ([nsevent type] == NSKeyDown && [chars length] > 0) {
|
||||
QChar ch = [chars characterAtIndex:0];
|
||||
Qt::Key qtKey = qt_mac_cocoaKey2QtKey(ch);
|
||||
// check for Command + Key_Period
|
||||
if ([nsevent modifierFlags] & NSCommandKeyMask
|
||||
&& qtKey == Qt::Key_Period) {
|
||||
[self handleKeyEvent:nsevent eventType:int(QEvent::KeyPress)];
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
return [super performKeyEquivalent:nsevent];
|
||||
}
|
||||
|
||||
- (void)flagsChanged:(NSEvent *)nsevent
|
||||
{
|
||||
ulong timestamp = [nsevent timestamp] * 1000;
|
||||
|
@ -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
|
||||
{
|
||||
private:
|
||||
|
@ -142,7 +142,7 @@ QRect fromPortraitToPrimary(const QRect &rect, QPlatformScreen *screen)
|
||||
// aligned with UIScreen into whatever is the current orientation of QScreen.
|
||||
QRect geometry = screen->geometry();
|
||||
return geometry.width() < geometry.height() ? rect
|
||||
: QRect(rect.y(), geometry.width() - rect.width() - rect.x(), rect.height(), rect.width());
|
||||
: QRect(rect.y(), geometry.height() - rect.width() - rect.x(), rect.height(), rect.width());
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -136,7 +136,7 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex)
|
||||
|
||||
int unscaledDpi = 163; // Regular iPhone DPI
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad
|
||||
&& deviceIdentifier != QStringLiteral("iPad2,5") /* iPad Mini */) {
|
||||
&& !deviceIdentifier.contains(QRegularExpression("^iPad2,[567]$")) /* excluding iPad Mini */) {
|
||||
unscaledDpi = 132;
|
||||
};
|
||||
|
||||
|
@ -150,7 +150,8 @@
|
||||
|
||||
- (void)updateTouchList:(NSSet *)touches withState:(Qt::TouchPointState)state
|
||||
{
|
||||
QRect applicationRect = fromCGRect(self.window.screen.applicationFrame);
|
||||
QPlatformScreen *screen = QGuiApplication::primaryScreen()->handle();
|
||||
QRect applicationRect = fromPortraitToPrimary(fromCGRect(self.window.screen.applicationFrame), screen);
|
||||
|
||||
foreach (UITouch *uiTouch, m_activeTouches.keys()) {
|
||||
QWindowSystemInterface::TouchPoint &touchPoint = m_activeTouches[uiTouch];
|
||||
@ -163,8 +164,10 @@
|
||||
// Find the touch position relative to the window. Then calculate the screen
|
||||
// position by subtracting the position of the applicationRect (since UIWindow
|
||||
// does not take that into account when reporting its own frame):
|
||||
QPoint touchPos = fromCGPoint([uiTouch locationInView:nil]);
|
||||
touchPoint.area = QRectF(touchPos - applicationRect.topLeft(), QSize(0, 0));
|
||||
QRect touchInWindow = QRect(fromCGPoint([uiTouch locationInView:nil]), QSize(0, 0));
|
||||
QRect touchInScreen = fromPortraitToPrimary(touchInWindow, screen);
|
||||
QPoint touchPos = touchInScreen.topLeft() - applicationRect.topLeft();
|
||||
touchPoint.area = QRectF(touchPos, QSize(0, 0));
|
||||
touchPoint.normalPosition = QPointF(touchPos.x() / applicationRect.width(), touchPos.y() / applicationRect.height());
|
||||
}
|
||||
}
|
||||
@ -407,7 +410,7 @@ void QIOSWindow::requestActivateWindow()
|
||||
// Note that several windows can be active at the same time if they exist in the same
|
||||
// hierarchy (transient children). But only one window can be QGuiApplication::focusWindow().
|
||||
// Dispite the name, 'requestActivateWindow' means raise and transfer focus to the window:
|
||||
if (blockedByModal())
|
||||
if (!window()->isTopLevel() || blockedByModal())
|
||||
return;
|
||||
|
||||
raise();
|
||||
|
@ -93,7 +93,7 @@
|
||||
#include <QtGui/QOpenGLContext>
|
||||
#endif
|
||||
|
||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
||||
#include <private/qsimpledrag_p.h>
|
||||
|
||||
#include <QtCore/QDebug>
|
||||
#include <QtCore/QHash>
|
||||
|
@ -60,7 +60,8 @@ static const int MAGIC_ZORDER_FOR_NO_NAV = 10;
|
||||
QQnxRootWindow::QQnxRootWindow(const QQnxScreen *screen)
|
||||
: m_screen(screen),
|
||||
m_window(0),
|
||||
m_windowGroupName()
|
||||
m_windowGroupName(),
|
||||
m_translucent(false)
|
||||
{
|
||||
qRootWindowDebug() << Q_FUNC_INFO;
|
||||
// Create one top-level QNX window to act as a container for child windows
|
||||
@ -122,7 +123,10 @@ QQnxRootWindow::QQnxRootWindow(const QQnxScreen *screen)
|
||||
if (result != 0)
|
||||
qFatal("QQnxRootWindow: failed to set window size, errno=%d", errno);
|
||||
|
||||
// Fill the window with solid black
|
||||
// Fill the window with solid black. Note that the LSB of the pixel value
|
||||
// 0x00000000 just happens to be 0x00, so if and when this root window's
|
||||
// alpha blending mode is changed from None to Source-Over, it will then
|
||||
// be interpreted as transparent.
|
||||
errno = 0;
|
||||
val[0] = 0;
|
||||
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_COLOR, val);
|
||||
@ -152,13 +156,62 @@ QQnxRootWindow::QQnxRootWindow(const QQnxScreen *screen)
|
||||
qFatal("QQnxRootWindow: failed to set window source size, errno=%d", errno);
|
||||
|
||||
errno = 0;
|
||||
val[0] = 1;
|
||||
val[0] = 0;
|
||||
val[1] = 0;
|
||||
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SOURCE_POSITION, val);
|
||||
if (result != 0)
|
||||
qFatal("QQnxRootWindow: failed to set window source position, errno=%d", errno);
|
||||
|
||||
createWindowGroup();
|
||||
|
||||
// Don't post yet. This will be lazily done from QQnxScreen upon first posting of
|
||||
// a child window. Doing it now pre-emptively would create a flicker if one of
|
||||
// the QWindow's about to be created sets its Qt::WA_TranslucentBackground flag
|
||||
// and immediately triggers the buffer re-creation in makeTranslucent().
|
||||
}
|
||||
|
||||
void QQnxRootWindow::makeTranslucent()
|
||||
{
|
||||
if (m_translucent)
|
||||
return;
|
||||
|
||||
int result;
|
||||
|
||||
errno = 0;
|
||||
result = screen_destroy_window_buffers(m_window);
|
||||
if (result != 0) {
|
||||
qFatal("QQnxRootWindow: failed to destroy window buffer, errno=%d", errno);
|
||||
}
|
||||
|
||||
QRect geometry = m_screen->geometry();
|
||||
errno = 0;
|
||||
int val[2];
|
||||
val[0] = geometry.width();
|
||||
val[1] = geometry.height();
|
||||
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_BUFFER_SIZE, val);
|
||||
if (result != 0) {
|
||||
qFatal("QQnxRootWindow: failed to set window buffer size, errno=%d", errno);
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
result = screen_create_window_buffers(m_window, 1);
|
||||
if (result != 0) {
|
||||
qFatal("QQNX: failed to create window buffer, errno=%d", errno);
|
||||
}
|
||||
|
||||
// Install an alpha channel on the root window.
|
||||
//
|
||||
// This is necessary in order to avoid interfering with any particular
|
||||
// toplevel widget's QQnxWindow window instance from showing transparent
|
||||
// if it desires.
|
||||
errno = 0;
|
||||
val[0] = SCREEN_TRANSPARENCY_SOURCE_OVER;
|
||||
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_TRANSPARENCY, val);
|
||||
if (result != 0) {
|
||||
qFatal("QQnxRootWindow: failed to set window transparency, errno=%d", errno);
|
||||
}
|
||||
|
||||
m_translucent = true;
|
||||
post();
|
||||
}
|
||||
|
||||
|
@ -66,6 +66,8 @@ public:
|
||||
|
||||
void resize(const QSize &size);
|
||||
|
||||
void makeTranslucent();
|
||||
|
||||
QByteArray groupName() const { return m_windowGroupName; }
|
||||
|
||||
private:
|
||||
@ -74,6 +76,8 @@ private:
|
||||
const QQnxScreen *m_screen;
|
||||
screen_window_t m_window;
|
||||
QByteArray m_windowGroupName;
|
||||
|
||||
bool m_translucent;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -62,6 +62,14 @@
|
||||
#error Please define QQNX_PHYSICAL_SCREEN_WIDTH and QQNX_PHYSICAL_SCREEN_HEIGHT to values greater than zero
|
||||
#endif
|
||||
|
||||
// The default z-order of a window (intended to be overlain) created by
|
||||
// mmrender.
|
||||
static const int MMRENDER_DEFAULT_ZORDER = -1;
|
||||
|
||||
// The maximum z-order at which a foreign window will be considered
|
||||
// an underlay.
|
||||
static const int MAX_UNDERLAY_ZORDER = MMRENDER_DEFAULT_ZORDER - 1;
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static QSize determineScreenSize(screen_display_t display, bool primaryScreen) {
|
||||
@ -463,16 +471,32 @@ void QQnxScreen::updateHierarchy()
|
||||
qScreenDebug() << Q_FUNC_INFO;
|
||||
|
||||
QList<QQnxWindow*>::const_iterator it;
|
||||
int topZorder = 1; // root window is z-order 0, all "top" level windows are "above" it
|
||||
int result;
|
||||
int topZorder;
|
||||
|
||||
errno = 0;
|
||||
result = screen_get_window_property_iv(rootWindow()->nativeHandle(), SCREEN_PROPERTY_ZORDER, &topZorder);
|
||||
if (result != 0)
|
||||
qFatal("QQnxScreen: failed to query root window z-order, errno=%d", errno);
|
||||
|
||||
topZorder++; // root window has the lowest z-order in the windowgroup
|
||||
|
||||
// Underlays sit immediately above the root window in the z-ordering
|
||||
Q_FOREACH (screen_window_t underlay, m_underlays) {
|
||||
// Do nothing when this fails. This can happen if we have stale windows in m_underlays,
|
||||
// which in turn can happen because a window was removed but we didn't get a notification
|
||||
// yet.
|
||||
screen_set_window_property_iv(underlay, SCREEN_PROPERTY_ZORDER, &topZorder);
|
||||
topZorder++;
|
||||
}
|
||||
|
||||
// Normal Qt windows come next above underlays in the z-ordering
|
||||
for (it = m_childWindows.constBegin(); it != m_childWindows.constEnd(); ++it)
|
||||
(*it)->updateZorder(topZorder);
|
||||
|
||||
topZorder++;
|
||||
// Finally overlays sit above all else in the z-ordering
|
||||
Q_FOREACH (screen_window_t overlay, m_overlays) {
|
||||
// Do nothing when this fails. This can happen if we have stale windows in mOverlays,
|
||||
// which in turn can happen because a window was removed but we didn't get a notification
|
||||
// yet.
|
||||
// No error handling, see underlay logic above
|
||||
screen_set_window_property_iv(overlay, SCREEN_PROPERTY_ZORDER, &topZorder);
|
||||
topZorder++;
|
||||
}
|
||||
@ -529,10 +553,16 @@ void QQnxScreen::addOverlayWindow(screen_window_t window)
|
||||
updateHierarchy();
|
||||
}
|
||||
|
||||
void QQnxScreen::removeOverlayWindow(screen_window_t window)
|
||||
void QQnxScreen::addUnderlayWindow(screen_window_t window)
|
||||
{
|
||||
const int numOverlaysRemoved = m_overlays.removeAll(window);
|
||||
if (numOverlaysRemoved > 0)
|
||||
m_underlays.append(window);
|
||||
updateHierarchy();
|
||||
}
|
||||
|
||||
void QQnxScreen::removeOverlayOrUnderlayWindow(screen_window_t window)
|
||||
{
|
||||
const int numRemoved = m_overlays.removeAll(window) + m_underlays.removeAll(window);
|
||||
if (numRemoved > 0)
|
||||
updateHierarchy();
|
||||
}
|
||||
|
||||
@ -546,13 +576,28 @@ void QQnxScreen::newWindowCreated(void *window)
|
||||
return;
|
||||
}
|
||||
|
||||
int zorder;
|
||||
if (screen_get_window_property_iv(windowHandle, SCREEN_PROPERTY_ZORDER, &zorder) != 0) {
|
||||
qWarning("QQnx: Failed to get z-order for window, errno=%d", errno);
|
||||
zorder = 0;
|
||||
}
|
||||
|
||||
if (display == nativeDisplay()) {
|
||||
// A window was created on this screen. If we don't know about this window yet, it means
|
||||
// it was not created by Qt, but by some foreign library like the multimedia renderer, which
|
||||
// creates an overlay window when playing a video.
|
||||
// Treat all foreign windows as overlays here.
|
||||
if (!findWindow(windowHandle))
|
||||
addOverlayWindow(windowHandle);
|
||||
//
|
||||
// Treat all foreign windows as overlays or underlays here.
|
||||
//
|
||||
// Assume that if a foreign window already has a Z-Order both negative and
|
||||
// less than the default Z-Order installed by mmrender on windows it creates,
|
||||
// the windows should be treated as an underlay. Otherwise, we treat it as an overlay.
|
||||
if (!findWindow(windowHandle)) {
|
||||
if (zorder <= MAX_UNDERLAY_ZORDER)
|
||||
addUnderlayWindow(windowHandle);
|
||||
else
|
||||
addOverlayWindow(windowHandle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -560,7 +605,7 @@ void QQnxScreen::windowClosed(void *window)
|
||||
{
|
||||
Q_ASSERT(thread() == QThread::currentThread());
|
||||
const screen_window_t windowHandle = reinterpret_cast<screen_window_t>(window);
|
||||
removeOverlayWindow(windowHandle);
|
||||
removeOverlayOrUnderlayWindow(windowHandle);
|
||||
}
|
||||
|
||||
void QQnxScreen::windowGroupStateChanged(const QByteArray &id, Qt::WindowState state)
|
||||
|
@ -114,7 +114,8 @@ private:
|
||||
void resizeTopLevelWindow(QQnxWindow *w, const QRect &previousScreenGeometry) const;
|
||||
void resizeWindows(const QRect &previousScreenGeometry);
|
||||
void addOverlayWindow(screen_window_t window);
|
||||
void removeOverlayWindow(screen_window_t window);
|
||||
void addUnderlayWindow(screen_window_t window);
|
||||
void removeOverlayOrUnderlayWindow(screen_window_t window);
|
||||
|
||||
QWindow *topMostChildWindow() const;
|
||||
|
||||
@ -136,6 +137,7 @@ private:
|
||||
|
||||
QList<QQnxWindow *> m_childWindows;
|
||||
QList<screen_window_t> m_overlays;
|
||||
QList<screen_window_t> m_underlays;
|
||||
|
||||
QPlatformCursor *m_cursor;
|
||||
};
|
||||
|
@ -117,9 +117,13 @@ QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context)
|
||||
if (result != 0)
|
||||
qFatal("QQnxWindow: failed to set window alpha mode, errno=%d", errno);
|
||||
|
||||
// Make the window opaque
|
||||
// Blend the window with Source Over Porter-Duff behavior onto whatever's
|
||||
// behind it.
|
||||
//
|
||||
// If the desired use-case is opaque, the Widget painting framework will
|
||||
// already fill in the alpha channel with full opacity.
|
||||
errno = 0;
|
||||
val = SCREEN_TRANSPARENCY_NONE;
|
||||
val = SCREEN_TRANSPARENCY_SOURCE_OVER;
|
||||
result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_TRANSPARENCY, &val);
|
||||
if (result != 0)
|
||||
qFatal("QQnxWindow: failed to set window transparency, errno=%d", errno);
|
||||
@ -369,9 +373,16 @@ void QQnxWindow::setBufferSize(const QSize &size)
|
||||
|
||||
errno = 0;
|
||||
result = screen_create_window_buffers(m_window, MAX_BUFFER_COUNT);
|
||||
if (result != 0)
|
||||
if (result != 0) {
|
||||
qWarning() << "QQnxWindow: Buffer size was" << size;
|
||||
qFatal("QQnxWindow: failed to create window buffers, errno=%d", errno);
|
||||
}
|
||||
|
||||
// If the child window has been configured for transparency, lazily create
|
||||
// a full-screen buffer to back the root window.
|
||||
if (window()->requestedFormat().hasAlpha()) {
|
||||
m_screen->rootWindow()->makeTranslucent();
|
||||
}
|
||||
|
||||
// check if there are any buffers available
|
||||
int bufferCount = 0;
|
||||
|
@ -552,11 +552,15 @@ QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) co
|
||||
break;
|
||||
case QPlatformIntegration::UseRtlExtensions:
|
||||
return QVariant(d->m_context.useRTLExtensions());
|
||||
#ifdef Q_OS_WINCE
|
||||
case QPlatformIntegration::SynthesizeMouseFromTouchEvents:
|
||||
// We do not want Qt to synthesize mouse events as Windows also does that.
|
||||
// Alternatively, Windows-generated touch mouse events can be identified and
|
||||
// ignored by checking GetMessageExtraInfo() for MI_WP_SIGNATURE (0xFF515700).
|
||||
return false;
|
||||
#endif // Q_OS_WINCE
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return QPlatformIntegration::styleHint(hint);
|
||||
}
|
||||
|
@ -793,7 +793,7 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
|
||||
// A multi-character key or a Input method character
|
||||
// not found by our look-ahead
|
||||
if (msgType == WM_CHAR || msgType == WM_IME_CHAR) {
|
||||
sendExtendedPressRelease(receiver, 0, Qt::KeyboardModifier(state), scancode, vk_key, nModifiers, messageKeyText(msg), false, 0);
|
||||
sendExtendedPressRelease(receiver, 0, Qt::KeyboardModifier(state), scancode, vk_key, nModifiers, messageKeyText(msg), false);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -822,13 +822,13 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
|
||||
if (dirStatus == VK_LSHIFT
|
||||
&& ((msg.wParam == VK_SHIFT && GetKeyState(VK_LCONTROL))
|
||||
|| (msg.wParam == VK_CONTROL && GetKeyState(VK_LSHIFT)))) {
|
||||
sendExtendedPressRelease(receiver, Qt::Key_Direction_L, 0, scancode, msg.wParam, nModifiers, QString(), false, 0);
|
||||
sendExtendedPressRelease(receiver, Qt::Key_Direction_L, 0, scancode, msg.wParam, nModifiers, QString(), false);
|
||||
result = true;
|
||||
dirStatus = 0;
|
||||
} else if (dirStatus == VK_RSHIFT
|
||||
&& ( (msg.wParam == VK_SHIFT && GetKeyState(VK_RCONTROL))
|
||||
|| (msg.wParam == VK_CONTROL && GetKeyState(VK_RSHIFT)))) {
|
||||
sendExtendedPressRelease(receiver, Qt::Key_Direction_R, 0, scancode, msg.wParam, nModifiers, QString(), false, 0);
|
||||
sendExtendedPressRelease(receiver, Qt::Key_Direction_R, 0, scancode, msg.wParam, nModifiers, QString(), false);
|
||||
result = true;
|
||||
dirStatus = 0;
|
||||
} else {
|
||||
@ -1020,9 +1020,9 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
|
||||
if (rec) {
|
||||
if (code < Qt::Key_Shift || code > Qt::Key_ScrollLock) {
|
||||
QWindowSystemInterface::handleExtendedKeyEvent(receiver, QEvent::KeyRelease, code,
|
||||
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers, rec->text, true, 0);
|
||||
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers, rec->text, true);
|
||||
QWindowSystemInterface::handleExtendedKeyEvent(receiver, QEvent::KeyPress, code,
|
||||
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers, rec->text, true, 0);
|
||||
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers, rec->text, true);
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
@ -1033,7 +1033,7 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
|
||||
const char a = uch.row() ? 0 : uch.cell();
|
||||
key_recorder.storeKey(msg.wParam, a, state, text);
|
||||
QWindowSystemInterface::handleExtendedKeyEvent(receiver, QEvent::KeyPress, code,
|
||||
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers, text, false, 0);
|
||||
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers, text, false);
|
||||
result =true;
|
||||
bool store = true;
|
||||
#ifndef Q_OS_WINCE
|
||||
@ -1077,7 +1077,7 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms
|
||||
code = Qt::Key_Backtab;
|
||||
QWindowSystemInterface::handleExtendedKeyEvent(receiver, QEvent::KeyRelease, code,
|
||||
Qt::KeyboardModifier(state), scancode, msg.wParam, nModifiers,
|
||||
(rec ? rec->text : QString()), false, 0);
|
||||
(rec ? rec->text : QString()), false);
|
||||
result = true;
|
||||
#ifndef Q_OS_WINCE
|
||||
// don't pass Alt to Windows unless we are embedded in a non-Qt window
|
||||
|
@ -157,9 +157,19 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
|
||||
QtWindows::WindowsEventType et,
|
||||
MSG msg, LRESULT *result)
|
||||
{
|
||||
enum { signatureMask = 0xffffff00, miWpSignature = 0xff515700 };
|
||||
|
||||
if (et == QtWindows::MouseWheelEvent)
|
||||
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));
|
||||
if (et & QtWindows::NonClientEventFlag) {
|
||||
const QPoint globalPosition = winEventPosition;
|
||||
|
@ -503,11 +503,6 @@ QWindowsWindow::WindowData
|
||||
const QWindowCreationContextPtr context(new QWindowCreationContext(w, rect, data.customMargins, style, exStyle));
|
||||
QWindowsContext::instance()->setWindowCreationContext(context);
|
||||
|
||||
if (context->frameX < 0)
|
||||
context->frameX = 0;
|
||||
if (context->frameY < 0)
|
||||
context->frameY = 0;
|
||||
|
||||
if (QWindowsContext::verboseWindows)
|
||||
qDebug().nospace()
|
||||
<< "CreateWindowEx: " << w << *this
|
||||
|
@ -57,8 +57,8 @@
|
||||
|
||||
#include <qpa/qwindowsysteminterface.h>
|
||||
|
||||
#include <QtPlatformSupport/private/qshapedpixmapdndwindow_p.h>
|
||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
||||
#include <private/qshapedpixmapdndwindow_p.h>
|
||||
#include <private/qsimpledrag_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
#define QXCBDRAG_H
|
||||
|
||||
#include <qpa/qplatformdrag.h>
|
||||
#include <QtPlatformSupport/private/qsimpledrag_p.h>
|
||||
#include <private/qsimpledrag_p.h>
|
||||
#include <qxcbobject.h>
|
||||
#include <xcb/xcb.h>
|
||||
#include <qlist.h>
|
||||
|
@ -30,7 +30,6 @@
|
||||
\title Qt Print Support
|
||||
\brief A guide to producing printed output with Qt's paint system and widgets.
|
||||
\ingroup qt-graphics
|
||||
\ingroup technology-apis
|
||||
|
||||
|
||||
Qt provides extensive cross-platform support for printing. Using the printing
|
||||
|
@ -31,7 +31,6 @@
|
||||
\brief The Qt PrintSupport module provides classes to make printing easier and portable.
|
||||
|
||||
\ingroup modules
|
||||
\ingroup technology-apis
|
||||
|
||||
To include the definitions of the module's classes, use the
|
||||
following directive:
|
||||
|
@ -78,7 +78,7 @@ set LIB=C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SD
|
||||
|
||||
//! [10]
|
||||
********* Start testing of TestQString *********
|
||||
Config: Using QTest library %VERSION%, Qt %VERSION%
|
||||
Config: Using QtTest library %VERSION%, Qt %VERSION%
|
||||
PASS : TestQString::initTestCase()
|
||||
PASS : TestQString::toUpper()
|
||||
PASS : TestQString::cleanupTestCase()
|
||||
|
@ -319,7 +319,7 @@ void QPlainTestLogger::startLogging()
|
||||
} else {
|
||||
qsnprintf(buf, sizeof(buf),
|
||||
"********* Start testing of %s *********\n"
|
||||
"Config: Using QTest library " QTEST_VERSION_STR
|
||||
"Config: Using QtTest library " QTEST_VERSION_STR
|
||||
", Qt %s\n", QTestResult::currentTestObjectName(), qVersion());
|
||||
}
|
||||
outputMessage(buf);
|
||||
|
@ -397,8 +397,11 @@ void CodeMarker::insert(FastSection &fastSection,
|
||||
bool irrelevant = false;
|
||||
bool inheritedMember = false;
|
||||
if (!node->relates()) {
|
||||
if (node->parent() != fastSection.parent_) { // && !node->parent()->isAbstract()) {
|
||||
if ((node->parent()->subType() != Node::QmlClass) || !node->parent()->isAbstract()) {
|
||||
InnerNode* p = node->parent();
|
||||
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) {
|
||||
inheritedMember = true;
|
||||
}
|
||||
|
@ -3138,7 +3138,7 @@ void DitaXmlGenerator::generateOverviewList(const Node* relative)
|
||||
// If we encounter a group definition page, we add all
|
||||
// the pages in that group to the list for that group.
|
||||
foreach (Node* member, docNode->members()) {
|
||||
if (member->type() != Node::Document)
|
||||
if (member->isInternal() || member->type() != Node::Document)
|
||||
continue;
|
||||
DocNode* page = static_cast<DocNode*>(member);
|
||||
if (page) {
|
||||
@ -3155,7 +3155,7 @@ void DitaXmlGenerator::generateOverviewList(const Node* relative)
|
||||
// If we encounter a page that belongs to a group then
|
||||
// we add that page to the list for that group.
|
||||
const DocNode* gn = qdb_->getGroup(group);
|
||||
if (gn)
|
||||
if (gn && !docNode->isInternal())
|
||||
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
|
||||
// the pages in that group to the list for that group.
|
||||
foreach (Node *member, docNode->members()) {
|
||||
if (member->type() != Node::Document)
|
||||
if (member->isInternal() || member->type() != Node::Document)
|
||||
continue;
|
||||
DocNode *page = static_cast<DocNode *>(member);
|
||||
if (page) {
|
||||
@ -2661,7 +2661,7 @@ void HtmlGenerator::generateOverviewList(const Node *relative)
|
||||
// If we encounter a page that belongs to a group then
|
||||
// we add that page to the list for that group.
|
||||
const DocNode* gn = qdb_->getGroup(group);
|
||||
if (gn)
|
||||
if (gn && !docNode->isInternal())
|
||||
docNodeMap[gn].insert(sortKey, docNode);
|
||||
}
|
||||
}
|
||||
|
@ -862,9 +862,12 @@ Node* InnerNode::findChildNodeByNameAndType(const QString& name, Type type)
|
||||
if (type == Function)
|
||||
return primaryFunctionMap.value(name);
|
||||
else {
|
||||
Node *node = childMap.value(name);
|
||||
if (node && node->type() == type)
|
||||
return node;
|
||||
QList<Node*> nodes = childMap.values(name);
|
||||
for (int i=0; i<nodes.size(); ++i) {
|
||||
Node* node = nodes.at(i);
|
||||
if (node->type() == type)
|
||||
return node;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1183,8 +1183,13 @@ void QDocIndexFiles::generateIndexSections(QXmlStreamWriter& writer,
|
||||
It is just a place holder for a collection of QML property
|
||||
nodes. Recurse to its children, which are the QML property
|
||||
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);
|
||||
foreach (Node* c, pgn->childNodes()) {
|
||||
generateIndexSections(writer, c, generateInternalNodes);
|
||||
|
@ -29,7 +29,6 @@
|
||||
\page gestures-overview.html
|
||||
\title Gestures in Widgets and Graphics View
|
||||
\startpage index.html Qt Reference Documentation
|
||||
\ingroup technology-apis
|
||||
\ingroup qt-gui-concepts
|
||||
|
||||
\brief An overview of Qt support for Gesture programming
|
||||
|
@ -291,7 +291,7 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz
|
||||
|
||||
int stretch = stretches[start + i];
|
||||
if (sumStretches == 0) {
|
||||
if (hasIgnoreFlag) {
|
||||
if (hasIgnoreFlag || sizes[i] == 0.0) {
|
||||
factors[i] = (stretch < 0) ? 1.0 : 0.0;
|
||||
} else {
|
||||
factors[i] = (stretch < 0) ? sizes[i] : 0.0;
|
||||
|
@ -1677,8 +1677,8 @@ void QTreeWidgetItemPrivate::propagateDisabled(QTreeWidgetItem *item)
|
||||
the item can be checked, edited, and selected.
|
||||
|
||||
The default value for flags is
|
||||
Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled.
|
||||
If the item was constructed with a parent, flags will in addition contain Qt::ItemIsDropEnabled.
|
||||
Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled |
|
||||
Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled.
|
||||
|
||||
\sa setFlags()
|
||||
*/
|
||||
|
@ -3366,7 +3366,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
||||
if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) {
|
||||
QStyleOptionToolButton myTb = *tb;
|
||||
myTb.state &= ~State_AutoRaise;
|
||||
if (w && qobject_cast<QToolBar *>(w->parentWidget())) {
|
||||
if (QStyleHelper::hasAncestor(opt->styleObject, QAccessible::ToolBar)) {
|
||||
QRect cr = tb->rect;
|
||||
int shiftX = 0;
|
||||
int shiftY = 0;
|
||||
@ -3405,7 +3405,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
||||
if (tb->toolButtonStyle != Qt::ToolButtonIconOnly) {
|
||||
needText = true;
|
||||
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()) {
|
||||
pr.setHeight(pixmap.size().height() / pixmap.devicePixelRatio());
|
||||
cr.adjust(0, pr.bottom() + 1, 0, 1);
|
||||
|
@ -132,7 +132,8 @@ void QLineEdit::initStyleOption(QStyleOptionFrame *option) const
|
||||
|
||||
A line edit allows the user to enter and edit a single line of
|
||||
plain text with a useful collection of editing functions,
|
||||
including undo and redo, cut and paste, and drag and drop.
|
||||
including undo and redo, cut and paste, and drag and drop (see
|
||||
\l setDragEnabled()).
|
||||
|
||||
By changing the echoMode() of a line edit, it can also be used as
|
||||
a "write-only" field, for inputs such as passwords.
|
||||
|
@ -420,25 +420,17 @@ void QMenuPrivate::hideUpToMenuBar()
|
||||
if (QMenu *m = qobject_cast<QMenu*>(caused)) {
|
||||
caused = m->d_func()->causedPopup.widget;
|
||||
if (!m->d_func()->tornoff)
|
||||
hideMenu(m, fadeMenus);
|
||||
hideMenu(m);
|
||||
if (!fadeMenus) // Mac doesn't clear the action until after hidden.
|
||||
m->d_func()->setCurrentAction(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);
|
||||
}
|
||||
|
||||
void QMenuPrivate::hideMenu(QMenu *menu, bool justRegister)
|
||||
void QMenuPrivate::hideMenu(QMenu *menu)
|
||||
{
|
||||
if (!menu)
|
||||
return;
|
||||
@ -462,27 +454,10 @@ void QMenuPrivate::hideMenu(QMenu *menu, bool justRegister)
|
||||
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;
|
||||
menu->blockSignals(false);
|
||||
#endif // QT_NO_EFFECTS
|
||||
if (!justRegister)
|
||||
menu->close();
|
||||
menu->close();
|
||||
}
|
||||
|
||||
void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst)
|
||||
|
@ -189,7 +189,7 @@ public:
|
||||
virtual QList<QPointer<QWidget> > calcCausedStack() const;
|
||||
QMenuCaused causedPopup;
|
||||
void hideUpToMenuBar();
|
||||
void hideMenu(QMenu *menu, bool justRegister = false);
|
||||
void hideMenu(QMenu *menu);
|
||||
|
||||
//index mappings
|
||||
inline QAction *actionAt(int i) const { return q_func()->actions().at(i); }
|
||||
|
@ -29,7 +29,6 @@
|
||||
\module QtXml
|
||||
\title Qt XML C++ Classes
|
||||
\ingroup modules
|
||||
\ingroup technology-apis
|
||||
|
||||
\brief The Qt XML module provides C++ implementations of the SAX and DOM standards for XML.
|
||||
|
||||
|
@ -39,7 +39,6 @@
|
||||
/*!
|
||||
\page xml-processing.html
|
||||
\title XML Processing
|
||||
\ingroup technology-apis
|
||||
|
||||
\brief An Overview of the XML processing facilities in Qt.
|
||||
|
||||
|
@ -131,6 +131,8 @@ private Q_SLOTS:
|
||||
|
||||
void bom();
|
||||
void nesting();
|
||||
|
||||
void longStrings();
|
||||
private:
|
||||
QString testDataDir;
|
||||
};
|
||||
@ -2204,5 +2206,48 @@ void tst_QtJson::nesting()
|
||||
|
||||
}
|
||||
|
||||
void tst_QtJson::longStrings()
|
||||
{
|
||||
// test around 15 and 16 bit boundaries, as these are limits
|
||||
// in the data structures (for Latin1String in qjson_p.h)
|
||||
QString s(0x7ff0, 'a');
|
||||
for (int i = 0x7ff0; i < 0x8010; i++) {
|
||||
s.append("c");
|
||||
|
||||
QMap <QString, QVariant> map;
|
||||
map["key"] = s;
|
||||
|
||||
/* Create a QJsonDocument from the QMap ... */
|
||||
QJsonDocument d1 = QJsonDocument::fromVariant(QVariant(map));
|
||||
/* ... and a QByteArray from the QJsonDocument */
|
||||
QByteArray a1 = d1.toJson();
|
||||
|
||||
/* Create a QJsonDocument from the QByteArray ... */
|
||||
QJsonDocument d2 = QJsonDocument::fromJson(a1);
|
||||
/* ... and a QByteArray from the QJsonDocument */
|
||||
QByteArray a2 = d2.toJson();
|
||||
QVERIFY(a1 == a2);
|
||||
}
|
||||
|
||||
s = QString(0xfff0, 'a');
|
||||
for (int i = 0xfff0; i < 0x10010; i++) {
|
||||
s.append("c");
|
||||
|
||||
QMap <QString, QVariant> map;
|
||||
map["key"] = s;
|
||||
|
||||
/* Create a QJsonDocument from the QMap ... */
|
||||
QJsonDocument d1 = QJsonDocument::fromVariant(QVariant(map));
|
||||
/* ... and a QByteArray from the QJsonDocument */
|
||||
QByteArray a1 = d1.toJson();
|
||||
|
||||
/* Create a QJsonDocument from the QByteArray ... */
|
||||
QJsonDocument d2 = QJsonDocument::fromJson(a1);
|
||||
/* ... and a QByteArray from the QJsonDocument */
|
||||
QByteArray a2 = d2.toJson();
|
||||
QVERIFY(a1 == a2);
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QtJson)
|
||||
#include "tst_qtjson.moc"
|
||||
|
@ -1005,6 +1005,7 @@ void tst_QPixmap::fromWinHICON_data()
|
||||
|
||||
void tst_QPixmap::fromWinHICON()
|
||||
{
|
||||
#ifndef Q_OS_WINCE
|
||||
QFETCH(int, width);
|
||||
QFETCH(int, height);
|
||||
QFETCH(QString, image);
|
||||
@ -1020,6 +1021,7 @@ void tst_QPixmap::fromWinHICON()
|
||||
// between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere
|
||||
|
||||
QVERIFY(compareImages(imageFromHICON, imageFromFile));
|
||||
#endif // Q_OS_WINCE
|
||||
}
|
||||
|
||||
#endif // Q_OS_WIN
|
||||
|
@ -61,6 +61,7 @@ class tst_QDnsLookup: public QObject
|
||||
|
||||
QString domainName(const QString &input);
|
||||
QString domainNameList(const QString &input);
|
||||
QStringList domainNameListAlternatives(const QString &input);
|
||||
public slots:
|
||||
void initTestCase();
|
||||
|
||||
@ -105,6 +106,14 @@ QString tst_QDnsLookup::domainNameList(const QString &input)
|
||||
return result;
|
||||
}
|
||||
|
||||
QStringList tst_QDnsLookup::domainNameListAlternatives(const QString &input)
|
||||
{
|
||||
QStringList alternatives = input.split('|');
|
||||
for (int i = 0; i < alternatives.length(); ++i)
|
||||
alternatives[i] = domainNameList(alternatives[i]);
|
||||
return alternatives;
|
||||
}
|
||||
|
||||
void tst_QDnsLookup::lookup_data()
|
||||
{
|
||||
QTest::addColumn<int>("type");
|
||||
@ -116,46 +125,57 @@ void tst_QDnsLookup::lookup_data()
|
||||
QTest::addColumn<QString>("ns");
|
||||
QTest::addColumn<QString>("ptr");
|
||||
QTest::addColumn<QString>("srv");
|
||||
QTest::addColumn<QByteArray>("txt");
|
||||
QTest::addColumn<QString>("txt");
|
||||
|
||||
QTest::newRow("a-empty") << int(QDnsLookup::A) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << ""<< "" << QByteArray();
|
||||
QTest::newRow("a-notfound") << int(QDnsLookup::A) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("a-single") << int(QDnsLookup::A) << "a-single" << int(QDnsLookup::NoError) << "" << "192.0.2.1" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("a-multi") << int(QDnsLookup::A) << "a-multi" << int(QDnsLookup::NoError) << "" << "192.0.2.1;192.0.2.2;192.0.2.3" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("aaaa-empty") << int(QDnsLookup::AAAA) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("aaaa-notfound") << int(QDnsLookup::AAAA) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("aaaa-single") << int(QDnsLookup::AAAA) << "aaaa-single" << int(QDnsLookup::NoError) << "" << "2001:db8::1" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("aaaa-multi") << int(QDnsLookup::AAAA) << "aaaa-multi" << int(QDnsLookup::NoError) << "" << "2001:db8::1;2001:db8::2;2001:db8::3" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("a-empty") << int(QDnsLookup::A) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << ""<< "" << "";
|
||||
QTest::newRow("a-notfound") << int(QDnsLookup::A) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("a-single") << int(QDnsLookup::A) << "a-single" << int(QDnsLookup::NoError) << "" << "192.0.2.1" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("a-multi") << int(QDnsLookup::A) << "a-multi" << int(QDnsLookup::NoError) << "" << "192.0.2.1;192.0.2.2;192.0.2.3" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("aaaa-empty") << int(QDnsLookup::AAAA) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("aaaa-notfound") << int(QDnsLookup::AAAA) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("aaaa-single") << int(QDnsLookup::AAAA) << "aaaa-single" << int(QDnsLookup::NoError) << "" << "2001:db8::1" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("aaaa-multi") << int(QDnsLookup::AAAA) << "aaaa-multi" << int(QDnsLookup::NoError) << "" << "2001:db8::1;2001:db8::2;2001:db8::3" << "" << "" << "" << "" << "";
|
||||
|
||||
QTest::newRow("any-empty") << int(QDnsLookup::ANY) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("any-notfound") << int(QDnsLookup::ANY) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("any-a-single") << int(QDnsLookup::ANY) << "a-single" << int(QDnsLookup::NoError) << "" << "192.0.2.1" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("any-a-plus-aaaa") << int(QDnsLookup::ANY) << "a-plus-aaaa" << int(QDnsLookup::NoError) << "" << "198.51.100.1;2001:db8::1:1" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("any-multi") << int(QDnsLookup::ANY) << "multi" << int(QDnsLookup::NoError) << "" << "198.51.100.1;198.51.100.2;198.51.100.3;2001:db8::1:1;2001:db8::1:2" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("any-empty") << int(QDnsLookup::ANY) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("any-notfound") << int(QDnsLookup::ANY) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("any-a-single") << int(QDnsLookup::ANY) << "a-single" << int(QDnsLookup::NoError) << "" << "192.0.2.1" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("any-a-plus-aaaa") << int(QDnsLookup::ANY) << "a-plus-aaaa" << int(QDnsLookup::NoError) << "" << "198.51.100.1;2001:db8::1:1" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("any-multi") << int(QDnsLookup::ANY) << "multi" << int(QDnsLookup::NoError) << "" << "198.51.100.1;198.51.100.2;198.51.100.3;2001:db8::1:1;2001:db8::1:2" << "" << "" << "" << "" << "";
|
||||
|
||||
QTest::newRow("mx-empty") << int(QDnsLookup::MX) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("mx-notfound") << int(QDnsLookup::MX) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("mx-single") << int(QDnsLookup::MX) << "mx-single" << int(QDnsLookup::NoError) << "" << "" << "10 multi" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("mx-single-cname") << int(QDnsLookup::MX) << "mx-single-cname" << int(QDnsLookup::NoError) << "" << "" << "10 cname" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("mx-multi") << int(QDnsLookup::MX) << "mx-multi" << int(QDnsLookup::NoError) << "" << "" << "10 multi;20 a-single" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("mx-empty") << int(QDnsLookup::MX) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("mx-notfound") << int(QDnsLookup::MX) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("mx-single") << int(QDnsLookup::MX) << "mx-single" << int(QDnsLookup::NoError) << "" << "" << "10 multi" << "" << "" << "" << "";
|
||||
QTest::newRow("mx-single-cname") << int(QDnsLookup::MX) << "mx-single-cname" << int(QDnsLookup::NoError) << "" << "" << "10 cname" << "" << "" << "" << "";
|
||||
QTest::newRow("mx-multi") << int(QDnsLookup::MX) << "mx-multi" << int(QDnsLookup::NoError) << "" << "" << "10 multi;20 a-single" << "" << "" << "" << "";
|
||||
QTest::newRow("mx-multi-sameprio") << int(QDnsLookup::MX) << "mx-multi-sameprio" << int(QDnsLookup::NoError) << "" << ""
|
||||
<< "10 multi;10 a-single|"
|
||||
"10 a-single;10 multi" << "" << "" << "" << "";
|
||||
|
||||
QTest::newRow("ns-empty") << int(QDnsLookup::NS) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("ns-notfound") << int(QDnsLookup::NS) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("ns-single") << int(QDnsLookup::NS) << "ns-single" << int(QDnsLookup::NoError) << "" << "" << "" << "ns3.macieira.info." << "" << "" << QByteArray();
|
||||
QTest::newRow("ns-multi") << int(QDnsLookup::NS) << "ns-multi" << int(QDnsLookup::NoError) << "" << "" << "" << "gondolin.macieira.info.;ns3.macieira.info." << "" << "" << QByteArray();
|
||||
QTest::newRow("ns-empty") << int(QDnsLookup::NS) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("ns-notfound") << int(QDnsLookup::NS) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("ns-single") << int(QDnsLookup::NS) << "ns-single" << int(QDnsLookup::NoError) << "" << "" << "" << "ns3.macieira.info." << "" << "" << "";
|
||||
QTest::newRow("ns-multi") << int(QDnsLookup::NS) << "ns-multi" << int(QDnsLookup::NoError) << "" << "" << "" << "gondolin.macieira.info.;ns3.macieira.info." << "" << "" << "";
|
||||
|
||||
QTest::newRow("ptr-empty") << int(QDnsLookup::PTR) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("ptr-notfound") << int(QDnsLookup::PTR) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("ptr-single") << int(QDnsLookup::PTR) << "ptr-single" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "a-single" << "" << QByteArray();
|
||||
QTest::newRow("ptr-empty") << int(QDnsLookup::PTR) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("ptr-notfound") << int(QDnsLookup::PTR) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("ptr-single") << int(QDnsLookup::PTR) << "ptr-single" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "a-single" << "" << "";
|
||||
|
||||
QTest::newRow("srv-empty") << int(QDnsLookup::SRV) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("srv-notfound") << int(QDnsLookup::SRV) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("srv-single") << int(QDnsLookup::SRV) << "_echo._tcp.srv-single" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "5 0 7 multi" << QByteArray();
|
||||
QTest::newRow("srv-prio") << int(QDnsLookup::SRV) << "_echo._tcp.srv-prio" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "1 0 7 multi;2 0 7 a-plus-aaaa" << QByteArray();
|
||||
QTest::newRow("srv-empty") << int(QDnsLookup::SRV) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("srv-notfound") << int(QDnsLookup::SRV) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("srv-single") << int(QDnsLookup::SRV) << "_echo._tcp.srv-single" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "5 0 7 multi" << "";
|
||||
QTest::newRow("srv-prio") << int(QDnsLookup::SRV) << "_echo._tcp.srv-prio" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "1 0 7 multi;2 0 7 a-plus-aaaa" << "";
|
||||
QTest::newRow("srv-weighted") << int(QDnsLookup::SRV) << "_echo._tcp.srv-weighted" << int(QDnsLookup::NoError) << "" << "" << "" << "" << ""
|
||||
<< "5 75 7 multi;5 25 7 a-plus-aaaa|"
|
||||
"5 25 7 a-plus-aaaa;5 75 7 multi" << "";
|
||||
QTest::newRow("srv-multi") << int(QDnsLookup::SRV) << "_echo._tcp.srv-multi" << int(QDnsLookup::NoError) << "" << "" << "" << "" << ""
|
||||
<< "1 50 7 multi;2 50 7 a-single;2 50 7 aaaa-single;3 50 7 a-multi|"
|
||||
"1 50 7 multi;2 50 7 aaaa-single;2 50 7 a-single;3 50 7 a-multi" << "";
|
||||
|
||||
QTest::newRow("txt-empty") << int(QDnsLookup::TXT) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("txt-notfound") << int(QDnsLookup::TXT) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
|
||||
QTest::newRow("txt-single") << int(QDnsLookup::TXT) << "txt-single" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "" << QByteArray("Hello");
|
||||
QTest::newRow("txt-empty") << int(QDnsLookup::TXT) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("txt-notfound") << int(QDnsLookup::TXT) << "invalid.invalid" << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << "";
|
||||
QTest::newRow("txt-single") << int(QDnsLookup::TXT) << "txt-single" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "" << "Hello";
|
||||
QTest::newRow("txt-multi-onerr") << int(QDnsLookup::TXT) << "txt-multi-onerr" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "" << "Hello World";
|
||||
QTest::newRow("txt-multi-multirr") << int(QDnsLookup::TXT) << "txt-multi-multirr" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "" << "Hello;World";
|
||||
}
|
||||
|
||||
void tst_QDnsLookup::lookup()
|
||||
@ -169,15 +189,18 @@ void tst_QDnsLookup::lookup()
|
||||
QFETCH(QString, ns);
|
||||
QFETCH(QString, ptr);
|
||||
QFETCH(QString, srv);
|
||||
QFETCH(QByteArray, txt);
|
||||
QFETCH(QString, txt);
|
||||
|
||||
// transform the inputs
|
||||
domain = domainName(domain);
|
||||
cname = domainName(cname);
|
||||
mx = domainNameList(mx);
|
||||
ns = domainNameList(ns);
|
||||
ptr = domainNameList(ptr);
|
||||
srv = domainNameList(srv);
|
||||
|
||||
// SRV and MX have reply entries that can change order
|
||||
// and we can't sort
|
||||
QStringList mx_alternatives = domainNameListAlternatives(mx);
|
||||
QStringList srv_alternatives = domainNameListAlternatives(srv);
|
||||
|
||||
QDnsLookup lookup;
|
||||
lookup.setType(static_cast<QDnsLookup::Type>(type));
|
||||
@ -218,7 +241,8 @@ void tst_QDnsLookup::lookup()
|
||||
QCOMPARE(record.name(), domain);
|
||||
mailExchanges << QString("%1 %2").arg(QString::number(record.preference()), record.exchange());
|
||||
}
|
||||
QCOMPARE(mailExchanges.join(';'), mx);
|
||||
QVERIFY2(mx_alternatives.contains(mailExchanges.join(';')),
|
||||
qPrintable("Actual: " + mailExchanges.join(';') + "\nExpected one of:\n" + mx_alternatives.join('\n')));
|
||||
|
||||
// name servers
|
||||
QStringList nameServers;
|
||||
@ -250,18 +274,23 @@ void tst_QDnsLookup::lookup()
|
||||
QString::number(record.port()),
|
||||
record.target());
|
||||
}
|
||||
QCOMPARE(services.join(';'), srv);
|
||||
QVERIFY2(srv_alternatives.contains(services.join(';')),
|
||||
qPrintable("Actual: " + services.join(';') + "\nExpected one of:\n" + srv_alternatives.join('\n')));
|
||||
|
||||
// text
|
||||
if (!txt.isEmpty()) {
|
||||
QVERIFY(!lookup.textRecords().isEmpty());
|
||||
const QDnsTextRecord firstRecord = lookup.textRecords().first();
|
||||
QCOMPARE(firstRecord.name(), domain);
|
||||
QCOMPARE(firstRecord.values().size(), 1);
|
||||
QCOMPARE(firstRecord.values().first(), txt);
|
||||
} else {
|
||||
QVERIFY(lookup.textRecords().isEmpty());
|
||||
QStringList texts;
|
||||
foreach (const QDnsTextRecord &record, lookup.textRecords()) {
|
||||
QCOMPARE(record.name(), domain);
|
||||
QString text;
|
||||
foreach (const QByteArray &ba, record.values()) {
|
||||
if (!text.isEmpty())
|
||||
text += ' ';
|
||||
text += QString::fromLatin1(ba);
|
||||
}
|
||||
texts << text;
|
||||
}
|
||||
texts.sort();
|
||||
QCOMPARE(texts.join(';'), txt);
|
||||
}
|
||||
|
||||
void tst_QDnsLookup::lookupReuse()
|
||||
|
@ -1,5 +1,5 @@
|
||||
********* Start testing of tst_Alive *********
|
||||
Config: Using QTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
|
||||
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
|
||||
PASS : tst_Alive::initTestCase()
|
||||
QWARN : tst_Alive::alive() TEST LAGS 3 PINGS behind!
|
||||
QWARN : tst_Alive::alive() TEST LAGS 4 PINGS behind!
|
||||
|
@ -1,5 +1,5 @@
|
||||
********* Start testing of tst_Assert *********
|
||||
Config: Using QTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
|
||||
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
|
||||
PASS : tst_Assert::initTestCase()
|
||||
PASS : tst_Assert::testNumber1()
|
||||
QFATAL : tst_Assert::testNumber2() ASSERT: "false" in file tst_assert.cpp, line 66
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user