Merge "Merge remote-tracking branch 'origin/5.15' into dev"
This commit is contained in:
commit
4cbadf6998
@ -67,7 +67,7 @@ Window::Window(QWidget *parent)
|
||||
|
||||
connect(m_ui.easingCurvePicker, &QListWidget::currentRowChanged,
|
||||
this, &Window::curveChanged);
|
||||
connect(m_ui.buttonGroup, QOverload<int>::of(&QButtonGroup::buttonClicked),
|
||||
connect(m_ui.buttonGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),
|
||||
this, &Window::pathChanged);
|
||||
connect(m_ui.periodSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged),
|
||||
this, &Window::periodChanged);
|
||||
@ -180,9 +180,10 @@ void Window::curveChanged(int row)
|
||||
m_ui.overshootSpinBox->setEnabled(curveType >= QEasingCurve::InBack && curveType <= QEasingCurve::OutInBack);
|
||||
}
|
||||
|
||||
void Window::pathChanged(int index)
|
||||
void Window::pathChanged(QAbstractButton *button)
|
||||
{
|
||||
m_anim->setPathType((Animation::PathType)index);
|
||||
const int index = m_ui.buttonGroup->id(button);
|
||||
m_anim->setPathType(Animation::PathType(index));
|
||||
}
|
||||
|
||||
void Window::periodChanged(double value)
|
||||
|
@ -69,7 +69,7 @@ public:
|
||||
Window(QWidget *parent = nullptr);
|
||||
private slots:
|
||||
void curveChanged(int row);
|
||||
void pathChanged(int index);
|
||||
void pathChanged(QAbstractButton *button);
|
||||
void periodChanged(double);
|
||||
void amplitudeChanged(double);
|
||||
void overshootChanged(double);
|
||||
|
@ -220,11 +220,11 @@ void View::setupMatrix()
|
||||
{
|
||||
qreal scale = qPow(qreal(2), (zoomSlider->value() - 250) / qreal(50));
|
||||
|
||||
QMatrix matrix;
|
||||
QTransform matrix;
|
||||
matrix.scale(scale, scale);
|
||||
matrix.rotate(rotateSlider->value());
|
||||
|
||||
graphicsView->setMatrix(matrix);
|
||||
graphicsView->setTransform(matrix);
|
||||
setResetButtonEnabled();
|
||||
}
|
||||
|
||||
|
@ -113,13 +113,14 @@ void MainWindow::backgroundButtonGroupClicked(QAbstractButton *button)
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
void MainWindow::buttonGroupClicked(int id)
|
||||
void MainWindow::buttonGroupClicked(QAbstractButton *button)
|
||||
{
|
||||
const QList<QAbstractButton *> buttons = buttonGroup->buttons();
|
||||
for (QAbstractButton *button : buttons) {
|
||||
if (buttonGroup->button(id) != button)
|
||||
for (QAbstractButton *myButton : buttons) {
|
||||
if (myButton != button)
|
||||
button->setChecked(false);
|
||||
}
|
||||
const int id = buttonGroup->id(button);
|
||||
if (id == InsertTextButton) {
|
||||
scene->setMode(DiagramScene::InsertText);
|
||||
} else {
|
||||
@ -154,7 +155,7 @@ void MainWindow::deleteItem()
|
||||
//! [3]
|
||||
|
||||
//! [4]
|
||||
void MainWindow::pointerGroupClicked(int)
|
||||
void MainWindow::pointerGroupClicked()
|
||||
{
|
||||
scene->setMode(DiagramScene::Mode(pointerTypeGroup->checkedId()));
|
||||
}
|
||||
@ -231,8 +232,8 @@ void MainWindow::fontSizeChanged(const QString &)
|
||||
void MainWindow::sceneScaleChanged(const QString &scale)
|
||||
{
|
||||
double newScale = scale.left(scale.indexOf(tr("%"))).toDouble() / 100.0;
|
||||
QMatrix oldMatrix = view->matrix();
|
||||
view->resetMatrix();
|
||||
QTransform oldMatrix = view->transform();
|
||||
view->resetTransform();
|
||||
view->translate(oldMatrix.dx(), oldMatrix.dy());
|
||||
view->scale(newScale, newScale);
|
||||
}
|
||||
@ -334,7 +335,7 @@ void MainWindow::createToolBox()
|
||||
{
|
||||
buttonGroup = new QButtonGroup(this);
|
||||
buttonGroup->setExclusive(false);
|
||||
connect(buttonGroup, QOverload<int>::of(&QButtonGroup::buttonClicked),
|
||||
connect(buttonGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),
|
||||
this, &MainWindow::buttonGroupClicked);
|
||||
QGridLayout *layout = new QGridLayout;
|
||||
layout->addWidget(createCellWidget(tr("Conditional"), DiagramItem::Conditional), 0, 0);
|
||||
@ -528,7 +529,7 @@ void MainWindow::createToolbars()
|
||||
pointerTypeGroup = new QButtonGroup(this);
|
||||
pointerTypeGroup->addButton(pointerButton, int(DiagramScene::MoveItem));
|
||||
pointerTypeGroup->addButton(linePointerButton, int(DiagramScene::InsertLine));
|
||||
connect(pointerTypeGroup, QOverload<int>::of(&QButtonGroup::buttonClicked),
|
||||
connect(pointerTypeGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),
|
||||
this, &MainWindow::pointerGroupClicked);
|
||||
|
||||
sceneScaleCombo = new QComboBox;
|
||||
|
@ -82,9 +82,9 @@ public:
|
||||
|
||||
private slots:
|
||||
void backgroundButtonGroupClicked(QAbstractButton *button);
|
||||
void buttonGroupClicked(int id);
|
||||
void buttonGroupClicked(QAbstractButton *button);
|
||||
void deleteItem();
|
||||
void pointerGroupClicked(int id);
|
||||
void pointerGroupClicked();
|
||||
void bringToFront();
|
||||
void sendToBack();
|
||||
void itemInserted(DiagramItem *item);
|
||||
|
@ -223,7 +223,7 @@ void XFormView::setRotation(qreal r)
|
||||
m_rotation = r;
|
||||
|
||||
QPointF center(pts->points().at(0));
|
||||
QMatrix m;
|
||||
QTransform m;
|
||||
m.translate(center.x(), center.y());
|
||||
m.rotate(m_rotation - old_rot);
|
||||
m.translate(-center.x(), -center.y());
|
||||
@ -236,7 +236,7 @@ void XFormView::timerEvent(QTimerEvent *e)
|
||||
{
|
||||
if (e->timerId() == timer.timerId()) {
|
||||
QPointF center(pts->points().at(0));
|
||||
QMatrix m;
|
||||
QTransform m;
|
||||
m.translate(center.x(), center.y());
|
||||
m.rotate(0.2);
|
||||
m.translate(-center.x(), -center.y());
|
||||
|
@ -374,7 +374,7 @@ void PathDeformRenderer::setText(const QString &text)
|
||||
}
|
||||
|
||||
for (int i=0; i<m_paths.size(); ++i)
|
||||
m_paths[i] = m_paths[i] * QMatrix(1, 0, 0, 1, -m_pathBounds.x(), -m_pathBounds.y());
|
||||
m_paths[i] = m_paths[i] * QTransform(1, 0, 0, 1, -m_pathBounds.x(), -m_pathBounds.y());
|
||||
|
||||
update();
|
||||
}
|
||||
|
@ -511,10 +511,10 @@ void PathStrokeRenderer::initializePoints()
|
||||
m_points.clear();
|
||||
m_vectors.clear();
|
||||
|
||||
QMatrix m;
|
||||
QTransform m;
|
||||
qreal rot = 360.0 / count;
|
||||
QPointF center(width() / 2, height() / 2);
|
||||
QMatrix vm;
|
||||
QTransform vm;
|
||||
vm.shear(2, -1);
|
||||
vm.scale(3, 3);
|
||||
|
||||
|
@ -212,21 +212,17 @@ contains(CONFIG, plugin) {
|
||||
CMAKE_PLUGIN_TYPE_ESCAPED = $$replace(PLUGIN_TYPE, [-/], _)
|
||||
|
||||
win32 {
|
||||
CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.prl
|
||||
CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.prl
|
||||
isEmpty(CMAKE_STATIC_TYPE) {
|
||||
CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.dll
|
||||
CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.dll
|
||||
CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.prl
|
||||
CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.prl
|
||||
} else:mingw {
|
||||
CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}.a
|
||||
CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}d.a
|
||||
CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}.prl
|
||||
CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}d.prl
|
||||
} else { # MSVC static
|
||||
CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.lib
|
||||
CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.lib
|
||||
CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.prl
|
||||
CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.prl
|
||||
}
|
||||
} else {
|
||||
mac {
|
||||
@ -320,36 +316,25 @@ mac {
|
||||
CMAKE_LIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.dll
|
||||
CMAKE_LIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.dll
|
||||
|
||||
!isEmpty(CMAKE_STATIC_TYPE) {
|
||||
CMAKE_STATIC_WINDOWS_BUILD = "true"
|
||||
|
||||
CMAKE_PRL_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.prl
|
||||
CMAKE_PRL_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.prl
|
||||
}
|
||||
|
||||
mingw {
|
||||
CMAKE_WINMAIN_FILE_LOCATION_DEBUG = libqtmain$${QT_LIBINFIX}d.a
|
||||
CMAKE_WINMAIN_FILE_LOCATION_RELEASE = libqtmain$${QT_LIBINFIX}.a
|
||||
|
||||
!isEmpty(CMAKE_STATIC_TYPE) {
|
||||
CMAKE_STATIC_WINDOWS_BUILD = "true"
|
||||
CMAKE_IMPLIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.a
|
||||
CMAKE_IMPLIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a
|
||||
|
||||
CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.prl
|
||||
CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl
|
||||
} else {
|
||||
CMAKE_IMPLIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.a
|
||||
CMAKE_IMPLIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a
|
||||
}
|
||||
CMAKE_IMPLIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.a
|
||||
CMAKE_IMPLIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a
|
||||
} else {
|
||||
CMAKE_WINMAIN_FILE_LOCATION_DEBUG = qtmain$${QT_LIBINFIX}d.lib
|
||||
CMAKE_WINMAIN_FILE_LOCATION_RELEASE = qtmain$${QT_LIBINFIX}.lib
|
||||
|
||||
!isEmpty(CMAKE_STATIC_TYPE) {
|
||||
CMAKE_STATIC_WINDOWS_BUILD = "true"
|
||||
CMAKE_IMPLIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.lib
|
||||
CMAKE_IMPLIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.lib
|
||||
|
||||
CMAKE_PRL_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.prl
|
||||
CMAKE_PRL_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.prl
|
||||
} else {
|
||||
CMAKE_IMPLIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.lib
|
||||
CMAKE_IMPLIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.lib
|
||||
}
|
||||
CMAKE_IMPLIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.lib
|
||||
CMAKE_IMPLIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.lib
|
||||
}
|
||||
} else {
|
||||
!isEmpty(CMAKE_STATIC_TYPE) {
|
||||
|
@ -64,11 +64,13 @@ debug {
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG
|
||||
QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG
|
||||
QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG
|
||||
DEFINES += $$DEFINES_DEBUG
|
||||
} else {
|
||||
QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE
|
||||
QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE
|
||||
QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE
|
||||
DEFINES += $$DEFINES_RELEASE
|
||||
}
|
||||
|
||||
stack_protector_strong {
|
||||
|
@ -26,10 +26,4 @@ CONFIG = \
|
||||
unset(today)
|
||||
}
|
||||
|
||||
CONFIG(debug, debug|release) {
|
||||
DEFINES += $$DEFINES_DEBUG
|
||||
} else {
|
||||
DEFINES += $$DEFINES_RELEASE
|
||||
}
|
||||
|
||||
load(toolchain)
|
||||
|
@ -23,7 +23,6 @@ qtConfig(c11): CONFIG += c11
|
||||
qtConfig(stack-protector-strong): CONFIG += stack_protector_strong
|
||||
contains(TEMPLATE, .*lib) {
|
||||
# module and plugins
|
||||
if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols
|
||||
unix:qtConfig(reduce_relocations): CONFIG += bsymbolic_functions
|
||||
qtConfig(separate_debug_info): CONFIG += separate_debug_info
|
||||
|
||||
@ -58,6 +57,9 @@ contains(TEMPLATE, .*lib) {
|
||||
QMAKE_PRL_INSTALL_REPLACE += qtlibdir_replace
|
||||
}
|
||||
}
|
||||
contains(TEMPLATE, .*lib)|darwin {
|
||||
if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols
|
||||
}
|
||||
|
||||
# The remainder of this file must not apply to host tools/libraries,
|
||||
# as the host compiler's version and capabilities are not checked.
|
||||
|
@ -36,6 +36,7 @@ EMCC_COMMON_LFLAGS += \
|
||||
-s USE_WEBGL2=1 \
|
||||
-s NO_EXIT_RUNTIME=0 \
|
||||
-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
|
||||
-s EXTRA_EXPORTED_RUNTIME_METHODS=[\"UTF16ToString\",\"stringToUTF16\"] \
|
||||
--bind
|
||||
|
||||
# The -s arguments can also be used with release builds,
|
||||
|
@ -1168,7 +1168,7 @@
|
||||
\section1 DEFINES_DEBUG
|
||||
|
||||
Specifies preprocessor defines for the debug configuration. The values of
|
||||
this variable get added to \l{DEFINES} before the project is loaded. This
|
||||
this variable get added to \l{DEFINES} after the project is loaded. This
|
||||
variable is typically set in \l{#QMAKESPEC}{qmake.conf} and rarely needs
|
||||
to be modified.
|
||||
|
||||
@ -1178,10 +1178,13 @@
|
||||
\section1 DEFINES_RELEASE
|
||||
|
||||
Specifies preprocessor defines for the release configuration. The values of
|
||||
this variable get added to \l{DEFINES} before the project is loaded. This
|
||||
this variable get added to \l{DEFINES} after the project is loaded. This
|
||||
variable is typically set in \l{#QMAKESPEC}{qmake.conf} and rarely needs
|
||||
to be modified.
|
||||
|
||||
\note For MSVC mkspecs, this variable contains the value \c NDEBUG by
|
||||
default.
|
||||
|
||||
This variable was introduced in Qt 5.13.2.
|
||||
|
||||
\target DEF_FILE
|
||||
|
@ -534,8 +534,25 @@ static QString getRelocatablePrefix()
|
||||
#if defined(QT_STATIC)
|
||||
prefixPath = prefixFromAppDirHelper();
|
||||
#elif defined(Q_OS_DARWIN) && QT_CONFIG(framework)
|
||||
CFBundleRef qtCoreBundle = CFBundleGetBundleWithIdentifier(
|
||||
CFSTR("org.qt-project.QtCore"));
|
||||
auto qtCoreBundle = CFBundleGetBundleWithIdentifier(CFSTR("org.qt-project.QtCore"));
|
||||
if (!qtCoreBundle) {
|
||||
// When running Qt apps over Samba shares, CoreFoundation will fail to find
|
||||
// the Resources directory inside the bundle, This directory is a symlink,
|
||||
// and CF relies on readdir() and dtent.dt_type to detect symlinks, which
|
||||
// does not work reliably for Samba shares. We work around it by manually
|
||||
// looking for the QtCore bundle.
|
||||
auto allBundles = CFBundleGetAllBundles();
|
||||
auto bundleCount = CFArrayGetCount(allBundles);
|
||||
for (int i = 0; i < bundleCount; ++i) {
|
||||
auto bundle = CFBundleRef(CFArrayGetValueAtIndex(allBundles, i));
|
||||
auto url = QCFType<CFURLRef>(CFBundleCopyBundleURL(bundle));
|
||||
auto path = QCFType<CFStringRef>(CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle));
|
||||
if (CFStringHasSuffix(path, CFSTR("/QtCore.framework"))) {
|
||||
qtCoreBundle = bundle;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Q_ASSERT(qtCoreBundle);
|
||||
|
||||
QCFType<CFURLRef> qtCorePath = CFBundleCopyBundleURL(qtCoreBundle);
|
||||
|
@ -1023,7 +1023,7 @@
|
||||
|
||||
\value WA_MacNoClickThrough This value is obsolete and has no effect.
|
||||
|
||||
\value WA_MacOpaqueSizeGrip Indicates that the native Carbon size grip
|
||||
\value WA_MacOpaqueSizeGrip Indicates that the native size grip
|
||||
should be opaque instead of transparent (the default). This attribute
|
||||
is only applicable to \macos and is set by the widget's author.
|
||||
|
||||
|
@ -50,6 +50,7 @@
|
||||
#endif
|
||||
#include <qstack.h>
|
||||
#include <qbuffer.h>
|
||||
#include <qscopeguard.h>
|
||||
#ifndef QT_BOOTSTRAPPED
|
||||
#include <qcoreapplication.h>
|
||||
#else
|
||||
@ -68,6 +69,8 @@ public: \
|
||||
{ return QString::fromLatin1(sourceText); } \
|
||||
private:
|
||||
#endif
|
||||
#include <private/qmemory_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#include "qxmlstream_p.h"
|
||||
@ -847,7 +850,7 @@ void QXmlStreamReaderPrivate::init()
|
||||
#endif
|
||||
attributeStack.clear();
|
||||
attributeStack.reserve(16);
|
||||
entityParser = nullptr;
|
||||
entityParser.reset();
|
||||
hasCheckedStartDocument = false;
|
||||
normalizeLiterals = false;
|
||||
hasSeenTag = false;
|
||||
@ -880,7 +883,7 @@ void QXmlStreamReaderPrivate::parseEntity(const QString &value)
|
||||
|
||||
|
||||
if (!entityParser)
|
||||
entityParser = new QXmlStreamReaderPrivate(q);
|
||||
entityParser = qt_make_unique<QXmlStreamReaderPrivate>(q);
|
||||
else
|
||||
entityParser->init();
|
||||
entityParser->inParseEntity = true;
|
||||
@ -910,7 +913,6 @@ QXmlStreamReaderPrivate::~QXmlStreamReaderPrivate()
|
||||
#endif
|
||||
free(sym_stack);
|
||||
free(state_stack);
|
||||
delete entityParser;
|
||||
}
|
||||
|
||||
|
||||
@ -1582,6 +1584,7 @@ QStringRef QXmlStreamReaderPrivate::namespaceForPrefix(const QStringRef &prefix)
|
||||
*/
|
||||
void QXmlStreamReaderPrivate::resolveTag()
|
||||
{
|
||||
const auto attributeStackCleaner = qScopeGuard([this](){ attributeStack.clear(); });
|
||||
int n = attributeStack.size();
|
||||
|
||||
if (namespaceProcessing) {
|
||||
@ -1649,7 +1652,10 @@ void QXmlStreamReaderPrivate::resolveTag()
|
||||
if (attributes[j].name() == attribute.name()
|
||||
&& attributes[j].namespaceUri() == attribute.namespaceUri()
|
||||
&& (namespaceProcessing || attributes[j].qualifiedName() == attribute.qualifiedName()))
|
||||
{
|
||||
raiseWellFormedError(QXmlStream::tr("Attribute '%1' redefined.").arg(attribute.qualifiedName()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1680,8 +1686,6 @@ void QXmlStreamReaderPrivate::resolveTag()
|
||||
attribute.m_isDefault = true;
|
||||
attributes.append(attribute);
|
||||
}
|
||||
|
||||
attributeStack.clear();
|
||||
}
|
||||
|
||||
void QXmlStreamReaderPrivate::resolvePublicNamespaces()
|
||||
|
@ -981,7 +981,7 @@ public:
|
||||
|
||||
QString resolveUndeclaredEntity(const QString &name);
|
||||
void parseEntity(const QString &value);
|
||||
QXmlStreamReaderPrivate *entityParser;
|
||||
std::unique_ptr<QXmlStreamReaderPrivate> entityParser;
|
||||
|
||||
bool scanAfterLangleBang();
|
||||
bool scanPublicOrSystem();
|
||||
|
@ -734,23 +734,23 @@ static void updateSystemPrivate()
|
||||
globalLocaleData.m_script_id = res.toInt();
|
||||
|
||||
res = sys_locale->query(QSystemLocale::DecimalPoint, QVariant());
|
||||
if (!res.isNull())
|
||||
if (!res.isNull() && !res.toString().isEmpty())
|
||||
globalLocaleData.m_decimal = res.toString().at(0).unicode();
|
||||
|
||||
res = sys_locale->query(QSystemLocale::GroupSeparator, QVariant());
|
||||
if (!res.isNull())
|
||||
if (!res.isNull() && !res.toString().isEmpty())
|
||||
globalLocaleData.m_group = res.toString().at(0).unicode();
|
||||
|
||||
res = sys_locale->query(QSystemLocale::ZeroDigit, QVariant());
|
||||
if (!res.isNull())
|
||||
if (!res.isNull() && !res.toString().isEmpty())
|
||||
globalLocaleData.m_zero = res.toString().at(0).unicode();
|
||||
|
||||
res = sys_locale->query(QSystemLocale::NegativeSign, QVariant());
|
||||
if (!res.isNull())
|
||||
if (!res.isNull() && !res.toString().isEmpty())
|
||||
globalLocaleData.m_minus = res.toString().at(0).unicode();
|
||||
|
||||
res = sys_locale->query(QSystemLocale::PositiveSign, QVariant());
|
||||
if (!res.isNull())
|
||||
if (!res.isNull() && !res.toString().isEmpty())
|
||||
globalLocaleData.m_plus = res.toString().at(0).unicode();
|
||||
}
|
||||
#endif // !QT_NO_SYSTEMLOCALE
|
||||
@ -4463,6 +4463,8 @@ QStringList QLocale::uiLanguages() const
|
||||
for (const auto entry : qAsConst(uiLanguages))
|
||||
locales.append(QLocale(entry));
|
||||
}
|
||||
if (locales.isEmpty())
|
||||
locales.append(systemLocale()->fallbackUiLocale());
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ SOURCES += \
|
||||
NO_PCH_SOURCES += text/qstring_compat.cpp
|
||||
false: SOURCES += $$NO_PCH_SOURCES # Hack for QtCreator
|
||||
|
||||
!nacl:macos: {
|
||||
!nacl:darwin: {
|
||||
SOURCES += text/qlocale_mac.mm
|
||||
}
|
||||
else:unix {
|
||||
|
@ -93,9 +93,9 @@ painter2->begin(myWidget); // impossible - only one painter at a time
|
||||
//! [4]
|
||||
void QPainter::rotate(qreal angle)
|
||||
{
|
||||
QMatrix matrix;
|
||||
QTransform matrix;
|
||||
matrix.rotate(angle);
|
||||
setWorldMatrix(matrix, true);
|
||||
setWorldTransform(matrix, true);
|
||||
}
|
||||
//! [4]
|
||||
|
||||
|
@ -1269,6 +1269,55 @@
|
||||
\row \li \c word-spacing
|
||||
\li <width>px
|
||||
\li Specifies an alternate spacing between each word.
|
||||
\row \li \c line-height
|
||||
\li <number>[% | px | pt | cm]
|
||||
\li Specifies the height of a line. It can be one of the
|
||||
following:
|
||||
\list
|
||||
\li fixed line height in pixels, points, or centimeters.
|
||||
\li a percentage of the current font size.
|
||||
\endlist
|
||||
\endtable
|
||||
|
||||
\section1 Qt-specific CSS properties
|
||||
|
||||
Besides the standard CSS properties listed earlier, the following
|
||||
Qt-specific properties can also be used to style a text block:
|
||||
|
||||
\table
|
||||
\header \li Property
|
||||
\li Values
|
||||
\li Description
|
||||
\row
|
||||
\li \c -qt-block-indent
|
||||
\li \c <number>
|
||||
\li Indents the text block by the specified no. spaces.
|
||||
\row
|
||||
\li \c -qt-list-indent
|
||||
\li \c <number>
|
||||
\li Indents the list items by the specified no. of spaces.
|
||||
\row
|
||||
\li \c -qt-list-number-prefix
|
||||
\li \c <string>
|
||||
\li Prefixes the given string to list number in an HTML ordered list.
|
||||
\row
|
||||
\li \c -qt-list-number-suffix
|
||||
\li <string>
|
||||
\li Suffixes the given string to list number in an HTML ordered list.
|
||||
\row
|
||||
\li \c -qt-paragraph-type
|
||||
\li \c empty
|
||||
\li Hides the text block.
|
||||
\row
|
||||
\li \c -qt-table-type
|
||||
\li \c{root | frame}
|
||||
\li \c root renders the text blocks inline without borders and
|
||||
indentation, whereas \c frame renders them on a new line
|
||||
with a frame around.
|
||||
\row
|
||||
\li \c -qt-user-state
|
||||
\li \c <number>
|
||||
\li Adds it as user data for the text block.
|
||||
\endtable
|
||||
|
||||
\section1 Supported CSS Selectors
|
||||
|
@ -2847,7 +2847,13 @@ QImage QImage::scaledToHeight(int h, Qt::TransformationMode mode) const
|
||||
}
|
||||
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
\obsolete
|
||||
|
||||
Use trueMatrix(const QTransform &matrix, int w, int h) instead.
|
||||
|
||||
\fn QMatrix QImage::trueMatrix(const QMatrix &matrix, int width, int height)
|
||||
|
||||
Returns the actual matrix used for transforming an image with the
|
||||
@ -2869,6 +2875,10 @@ QMatrix QImage::trueMatrix(const QMatrix &matrix, int w, int h)
|
||||
}
|
||||
|
||||
/*!
|
||||
\obsolete
|
||||
|
||||
Use transformed(const QTransform &matrix, Qt::TransformationMode mode) instead.
|
||||
|
||||
Returns a copy of the image that is transformed using the given
|
||||
transformation \a matrix and transformation \a mode.
|
||||
|
||||
@ -2893,6 +2903,8 @@ QImage QImage::transformed(const QMatrix &matrix, Qt::TransformationMode mode) c
|
||||
return transformed(QTransform(matrix), mode);
|
||||
}
|
||||
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
Builds and returns a 1-bpp mask from the alpha buffer in this
|
||||
image. Returns a null image if the image's format is
|
||||
|
@ -241,8 +241,12 @@ public:
|
||||
Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
QImage scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
QImage scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use transformed(const QTransform &matrix, Qt::TransformationMode mode)")
|
||||
QImage transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
QT_DEPRECATED_X("trueMatrix(const QTransform &, int w, int h)")
|
||||
static QMatrix trueMatrix(const QMatrix &, int w, int h);
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
QImage transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
static QTransform trueMatrix(const QTransform &, int w, int h);
|
||||
QImage mirrored(bool horizontally = false, bool vertically = true) const &
|
||||
|
@ -438,7 +438,7 @@ QImage QPixmap::toImage() const
|
||||
}
|
||||
|
||||
/*!
|
||||
\fn QMatrix QPixmap::trueMatrix(const QTransform &matrix, int width, int height)
|
||||
\fn QTransform QPixmap::trueMatrix(const QTransform &matrix, int width, int height)
|
||||
|
||||
Returns the actual matrix used for transforming a pixmap with the
|
||||
given \a width, \a height and \a matrix.
|
||||
@ -458,8 +458,12 @@ QTransform QPixmap::trueMatrix(const QTransform &m, int w, int h)
|
||||
return QImage::trueMatrix(m, w, h);
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\overload
|
||||
\obsolete
|
||||
|
||||
Use trueMatrix(const QTransform &m, int w, int h) instead.
|
||||
|
||||
This convenience function loads the matrix \a m into a
|
||||
QTransform and calls the overloaded function with the
|
||||
@ -469,6 +473,7 @@ QMatrix QPixmap::trueMatrix(const QMatrix &m, int w, int h)
|
||||
{
|
||||
return trueMatrix(QTransform(m), w, h).toAffine();
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
|
||||
/*!
|
||||
@ -1233,8 +1238,12 @@ QPixmap QPixmap::transformed(const QTransform &transform,
|
||||
return data->transformed(transform, mode);
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\overload
|
||||
\obsolete
|
||||
|
||||
Use transformed(const QTransform &transform, Qt::TransformationMode mode)() instead.
|
||||
|
||||
This convenience function loads the \a matrix into a
|
||||
QTransform and calls the overloaded function.
|
||||
@ -1243,6 +1252,7 @@ QPixmap QPixmap::transformed(const QMatrix &matrix, Qt::TransformationMode mode)
|
||||
{
|
||||
return transformed(QTransform(matrix), mode);
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
|
||||
|
||||
|
@ -129,8 +129,12 @@ public:
|
||||
Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
QPixmap scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
QPixmap scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use transformed(const QTransform &, Qt::TransformationMode mode)")
|
||||
QPixmap transformed(const QMatrix &, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
QT_DEPRECATED_X("Use trueMatrix(const QTransform &m, int w, int h)")
|
||||
static QMatrix trueMatrix(const QMatrix &m, int w, int h);
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
QPixmap transformed(const QTransform &, Qt::TransformationMode mode = Qt::FastTransformation) const;
|
||||
static QTransform trueMatrix(const QTransform &m, int w, int h);
|
||||
|
||||
|
@ -916,6 +916,9 @@ bool QPNGImageWriter::writeImage(const QImage& image, int compression_in, const
|
||||
}
|
||||
|
||||
png_set_error_fn(png_ptr, nullptr, nullptr, qt_png_warning);
|
||||
#ifdef PNG_BENIGN_ERRORS_SUPPORTED
|
||||
png_set_benign_errors(png_ptr, 1);
|
||||
#endif
|
||||
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr) {
|
||||
|
@ -1150,8 +1150,8 @@ QKeyEvent::~QKeyEvent()
|
||||
Note: The native scan code may be 0, even if the key event contains
|
||||
extended information.
|
||||
|
||||
Note: On Mac OS/X, this function is not useful, because there is no
|
||||
way to get the scan code from Carbon or Cocoa. The function always
|
||||
Note: On \macos, this function is not useful, because there is no
|
||||
way to get the scan code from the system APIs. The function always
|
||||
returns 1 (or 0 in the case explained above).
|
||||
*/
|
||||
|
||||
|
@ -49,7 +49,6 @@
|
||||
# include "qkeysequence.h"
|
||||
#endif
|
||||
#include "qtransform.h"
|
||||
#include "qmatrix.h"
|
||||
#include "qpalette.h"
|
||||
#include "qpen.h"
|
||||
#include "qpixmap.h"
|
||||
|
@ -187,7 +187,10 @@ QMatrix4x4::QMatrix4x4(const float *values, int cols, int rows)
|
||||
flagBits = General;
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\obsolete
|
||||
|
||||
Constructs a 4x4 matrix from a conventional Qt 2D affine
|
||||
transformation \a matrix.
|
||||
|
||||
@ -218,6 +221,7 @@ QMatrix4x4::QMatrix4x4(const QMatrix& matrix)
|
||||
m[3][3] = 1.0f;
|
||||
flagBits = Translation | Scale | Rotation2D;
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
Constructs a 4x4 matrix from the conventional Qt 2D
|
||||
@ -1659,7 +1663,12 @@ void QMatrix4x4::copyDataTo(float *values) const
|
||||
values[row * 4 + col] = float(m[col][row]);
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\obsolete
|
||||
|
||||
Use toTransform() instead.
|
||||
|
||||
Returns the conventional Qt 2D affine transformation matrix that
|
||||
corresponds to this matrix. It is assumed that this matrix
|
||||
only contains 2D affine transformation elements.
|
||||
@ -1672,6 +1681,7 @@ QMatrix QMatrix4x4::toAffine() const
|
||||
m[1][0], m[1][1],
|
||||
m[3][0], m[3][1]);
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
Returns the conventional Qt 2D transformation matrix that
|
||||
|
@ -72,7 +72,9 @@ public:
|
||||
|
||||
QMatrix4x4(const float *values, int cols, int rows);
|
||||
QMatrix4x4(const QTransform& transform);
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QMatrix4x4(const QMatrix& matrix);
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
inline const float& operator()(int row, int column) const;
|
||||
inline float& operator()(int row, int column);
|
||||
@ -156,7 +158,9 @@ public:
|
||||
|
||||
void copyDataTo(float *values) const;
|
||||
|
||||
QMatrix toAffine() const;
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use toTransform()") QMatrix toAffine() const;
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
QTransform toTransform() const;
|
||||
QTransform toTransform(float distanceToPlane) const;
|
||||
|
||||
|
@ -893,8 +893,12 @@ bool QBrush::isOpaque() const
|
||||
}
|
||||
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\since 4.2
|
||||
\obsolete
|
||||
|
||||
Use setTransform() instead.
|
||||
|
||||
Sets \a matrix as an explicit transformation matrix on the
|
||||
current brush. The brush transformation matrix is merged with
|
||||
@ -906,6 +910,7 @@ void QBrush::setMatrix(const QMatrix &matrix)
|
||||
{
|
||||
setTransform(QTransform(matrix));
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
\since 4.3
|
||||
@ -923,14 +928,19 @@ void QBrush::setTransform(const QTransform &matrix)
|
||||
}
|
||||
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\fn void QBrush::matrix() const
|
||||
\since 4.2
|
||||
\obsolete
|
||||
|
||||
Use transform() instead.
|
||||
|
||||
Returns the current transformation matrix for the brush.
|
||||
|
||||
\sa setMatrix()
|
||||
*/
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
\fn bool QBrush::operator!=(const QBrush &brush) const
|
||||
|
@ -89,8 +89,10 @@ public:
|
||||
inline Qt::BrushStyle style() const;
|
||||
void setStyle(Qt::BrushStyle);
|
||||
|
||||
inline const QMatrix &matrix() const;
|
||||
void setMatrix(const QMatrix &mat);
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use transform()") inline const QMatrix &matrix() const;
|
||||
QT_DEPRECATED_X("Use setTransform()") void setMatrix(const QMatrix &mat);
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
inline QTransform transform() const;
|
||||
void setTransform(const QTransform &);
|
||||
@ -157,7 +159,10 @@ struct QBrushData
|
||||
|
||||
inline Qt::BrushStyle QBrush::style() const { return d->style; }
|
||||
inline const QColor &QBrush::color() const { return d->color; }
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use transform()")
|
||||
inline const QMatrix &QBrush::matrix() const { return d->transform.toAffine(); }
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
inline QTransform QBrush::transform() const { return d->transform; }
|
||||
inline bool QBrush::isDetached() const { return d->ref.loadRelaxed() == 1; }
|
||||
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include "qregion.h"
|
||||
#include "qpainterpath.h"
|
||||
#include "qpainterpath_p.h"
|
||||
#include "qtransform.h"
|
||||
#include "qvariant.h"
|
||||
#include <qmath.h>
|
||||
|
||||
@ -680,7 +681,7 @@ QRegion QMatrix::map(const QRegion &r) const
|
||||
}
|
||||
|
||||
QPainterPath p = map(qt_regionToPath(r));
|
||||
return p.toFillPolygon().toPolygon();
|
||||
return p.toFillPolygon(QTransform()).toPolygon();
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -508,7 +508,7 @@ void QPaintEngine::drawEllipse(const QRectF &rect)
|
||||
if (hasFeature(PainterPaths)) {
|
||||
drawPath(path);
|
||||
} else {
|
||||
QPolygonF polygon = path.toFillPolygon();
|
||||
QPolygonF polygon = path.toFillPolygon(QTransform());
|
||||
drawPolygon(polygon.data(), polygon.size(), ConvexMode);
|
||||
}
|
||||
}
|
||||
|
@ -273,7 +273,9 @@ public:
|
||||
QBrush backgroundBrush() const;
|
||||
Qt::BGMode backgroundMode() const;
|
||||
QFont font() const;
|
||||
QMatrix matrix() const;
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use transform()") QMatrix matrix() const;
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
QTransform transform() const;
|
||||
|
||||
Qt::ClipOperation clipOperation() const;
|
||||
|
@ -2555,19 +2555,19 @@ QRegion QPainter::clipRegion() const
|
||||
case QPainterClipInfo::PathClip: {
|
||||
QTransform matrix = (info.matrix * d->invMatrix);
|
||||
if (lastWasNothing) {
|
||||
region = QRegion((info.path * matrix).toFillPolygon().toPolygon(),
|
||||
region = QRegion((info.path * matrix).toFillPolygon(QTransform()).toPolygon(),
|
||||
info.path.fillRule());
|
||||
lastWasNothing = false;
|
||||
continue;
|
||||
}
|
||||
if (info.operation == Qt::IntersectClip) {
|
||||
region &= QRegion((info.path * matrix).toFillPolygon().toPolygon(),
|
||||
region &= QRegion((info.path * matrix).toFillPolygon(QTransform()).toPolygon(),
|
||||
info.path.fillRule());
|
||||
} else if (info.operation == Qt::NoClip) {
|
||||
lastWasNothing = true;
|
||||
region = QRegion();
|
||||
} else {
|
||||
region = QRegion((info.path * matrix).toFillPolygon().toPolygon(),
|
||||
region = QRegion((info.path * matrix).toFillPolygon(QTransform()).toPolygon(),
|
||||
info.path.fillRule());
|
||||
}
|
||||
break;
|
||||
@ -8089,6 +8089,8 @@ QFont QPaintEngineState::font() const
|
||||
\since 4.2
|
||||
\obsolete
|
||||
|
||||
Use transform() instead.
|
||||
|
||||
Returns the matrix in the current paint engine
|
||||
state.
|
||||
|
||||
|
@ -72,7 +72,6 @@ class QPen;
|
||||
class QPolygon;
|
||||
class QTextItem;
|
||||
class QTextEngine;
|
||||
class QMatrix;
|
||||
class QTransform;
|
||||
class QStaticText;
|
||||
class QGlyphRun;
|
||||
|
@ -59,7 +59,6 @@
|
||||
#include "QtGui/qfont.h"
|
||||
#include "QtGui/qpen.h"
|
||||
#include "QtGui/qregion.h"
|
||||
#include "QtGui/qmatrix.h"
|
||||
#include "QtGui/qpainter.h"
|
||||
#include "QtGui/qpainterpath.h"
|
||||
#include "QtGui/qpaintengine.h"
|
||||
|
@ -1660,13 +1660,18 @@ QList<QPolygonF> QPainterPath::toSubpathPolygons(const QTransform &matrix) const
|
||||
return flatCurves;
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\overload
|
||||
\obsolete
|
||||
|
||||
Use toSubpathPolygons(const QTransform &matrix) instead.
|
||||
*/
|
||||
QList<QPolygonF> QPainterPath::toSubpathPolygons(const QMatrix &matrix) const
|
||||
{
|
||||
return toSubpathPolygons(QTransform(matrix));
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
Converts the path into a list of polygons using the
|
||||
@ -1787,13 +1792,18 @@ QList<QPolygonF> QPainterPath::toFillPolygons(const QTransform &matrix) const
|
||||
return polys;
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\overload
|
||||
\obsolete
|
||||
|
||||
Use toFillPolygons(const QTransform &matrix) instead.
|
||||
*/
|
||||
QList<QPolygonF> QPainterPath::toFillPolygons(const QMatrix &matrix) const
|
||||
{
|
||||
return toFillPolygons(QTransform(matrix));
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
//same as qt_polygon_isect_line in qpolygon.cpp
|
||||
static void qt_painterpath_isect_line(const QPointF &p1,
|
||||
@ -2904,14 +2914,18 @@ QPolygonF QPainterPath::toFillPolygon(const QTransform &matrix) const
|
||||
return polygon;
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\overload
|
||||
\obsolete
|
||||
|
||||
Use toFillPolygon(const QTransform &matrix) instead.
|
||||
*/
|
||||
QPolygonF QPainterPath::toFillPolygon(const QMatrix &matrix) const
|
||||
{
|
||||
return toFillPolygon(QTransform(matrix));
|
||||
}
|
||||
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
//derivative of the equation
|
||||
static inline qreal slopeAt(qreal t, qreal a, qreal b, qreal c, qreal d)
|
||||
|
@ -175,9 +175,15 @@ public:
|
||||
bool isEmpty() const;
|
||||
|
||||
Q_REQUIRED_RESULT QPainterPath toReversed() const;
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use toSubpathPolygons(const QTransform &)")
|
||||
QList<QPolygonF> toSubpathPolygons(const QMatrix &matrix = QMatrix()) const;
|
||||
QT_DEPRECATED_X("Use toFillPolygons(const QTransform &")
|
||||
QList<QPolygonF> toFillPolygons(const QMatrix &matrix = QMatrix()) const;
|
||||
QT_DEPRECATED_X("Use toFillPolygon(const QTransform &)")
|
||||
QPolygonF toFillPolygon(const QMatrix &matrix = QMatrix()) const;
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
QList<QPolygonF> toSubpathPolygons(const QTransform &matrix) const;
|
||||
QList<QPolygonF> toFillPolygons(const QTransform &matrix) const;
|
||||
QPolygonF toFillPolygon(const QTransform &matrix) const;
|
||||
|
@ -55,7 +55,6 @@
|
||||
|
||||
#ifndef QT_NO_PDF
|
||||
|
||||
#include "QtGui/qmatrix.h"
|
||||
#include "QtCore/qstring.h"
|
||||
#include "QtCore/qvector.h"
|
||||
#include "private/qstroker_p.h"
|
||||
|
@ -40,9 +40,9 @@
|
||||
#include "qpolygon.h"
|
||||
#include "qrect.h"
|
||||
#include "qdatastream.h"
|
||||
#include "qmatrix.h"
|
||||
#include "qdebug.h"
|
||||
#include "qpainterpath.h"
|
||||
#include "qtransform.h"
|
||||
#include "qvariant.h"
|
||||
#include "qpainterpath_p.h"
|
||||
#include "qbezier_p.h"
|
||||
@ -111,7 +111,7 @@ static void qt_polygon_isect_line(const QPointF &p1, const QPointF &p2, const QP
|
||||
from a specified index (resizing the polygon if necessary).
|
||||
|
||||
QPolygon provides the boundingRect() and translate() functions for
|
||||
geometry functions. Use the QMatrix::map() function for more
|
||||
geometry functions. Use the QTransform::map() function for more
|
||||
general transformations of QPolygons.
|
||||
|
||||
The QPolygon class is \l {Implicit Data Sharing}{implicitly
|
||||
@ -495,7 +495,7 @@ QDebug operator<<(QDebug dbg, const QPolygon &a)
|
||||
|
||||
In addition to the functions provided by QVector, QPolygonF
|
||||
provides the boundingRect() and translate() functions for geometry
|
||||
operations. Use the QMatrix::map() function for more general
|
||||
operations. Use the QTransform::map() function for more general
|
||||
transformations of QPolygonFs.
|
||||
|
||||
QPolygonF also provides the isClosed() function to determine
|
||||
@ -899,7 +899,7 @@ QPolygon QPolygon::united(const QPolygon &r) const
|
||||
QPainterPath subject; subject.addPolygon(*this);
|
||||
QPainterPath clip; clip.addPolygon(r);
|
||||
|
||||
return subject.united(clip).toFillPolygon().toPolygon();
|
||||
return subject.united(clip).toFillPolygon(QTransform()).toPolygon();
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -918,7 +918,7 @@ QPolygon QPolygon::intersected(const QPolygon &r) const
|
||||
QPainterPath subject; subject.addPolygon(*this);
|
||||
QPainterPath clip; clip.addPolygon(r);
|
||||
|
||||
return subject.intersected(clip).toFillPolygon().toPolygon();
|
||||
return subject.intersected(clip).toFillPolygon(QTransform()).toPolygon();
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -936,7 +936,7 @@ QPolygon QPolygon::subtracted(const QPolygon &r) const
|
||||
QPainterPath subject; subject.addPolygon(*this);
|
||||
QPainterPath clip; clip.addPolygon(r);
|
||||
|
||||
return subject.subtracted(clip).toFillPolygon().toPolygon();
|
||||
return subject.subtracted(clip).toFillPolygon(QTransform()).toPolygon();
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -975,7 +975,7 @@ QPolygonF QPolygonF::united(const QPolygonF &r) const
|
||||
QPainterPath subject; subject.addPolygon(*this);
|
||||
QPainterPath clip; clip.addPolygon(r);
|
||||
|
||||
return subject.united(clip).toFillPolygon();
|
||||
return subject.united(clip).toFillPolygon(QTransform());
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -994,7 +994,7 @@ QPolygonF QPolygonF::intersected(const QPolygonF &r) const
|
||||
QPainterPath subject; subject.addPolygon(*this);
|
||||
QPainterPath clip; clip.addPolygon(r);
|
||||
|
||||
return subject.intersected(clip).toFillPolygon();
|
||||
return subject.intersected(clip).toFillPolygon(QTransform());
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -1011,7 +1011,7 @@ QPolygonF QPolygonF::subtracted(const QPolygonF &r) const
|
||||
{
|
||||
QPainterPath subject; subject.addPolygon(*this);
|
||||
QPainterPath clip; clip.addPolygon(r);
|
||||
return subject.subtracted(clip).toFillPolygon();
|
||||
return subject.subtracted(clip).toFillPolygon(QTransform());
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "qvarlengtharray.h"
|
||||
#include "qimage.h"
|
||||
#include "qbitmap.h"
|
||||
#include "qtransform.h"
|
||||
|
||||
#include <private/qdebug_p.h>
|
||||
|
||||
@ -3916,7 +3917,7 @@ QRegion::QRegion(const QRect &r, RegionType t)
|
||||
} else if (t == Ellipse) {
|
||||
QPainterPath path;
|
||||
path.addEllipse(r.x(), r.y(), r.width(), r.height());
|
||||
QPolygon a = path.toSubpathPolygons().at(0).toPolygon();
|
||||
QPolygon a = path.toSubpathPolygons(QTransform()).at(0).toPolygon();
|
||||
d->qt_rgn = PolygonRegion(a.constData(), a.size(), EvenOddRule);
|
||||
}
|
||||
}
|
||||
|
@ -311,8 +311,10 @@ QTransform::QTransform(qreal h11, qreal h12, qreal h21,
|
||||
{
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\fn QTransform::QTransform(const QMatrix &matrix)
|
||||
\obsolete
|
||||
|
||||
Constructs a matrix that is a copy of the given \a matrix.
|
||||
Note that the \c m13, \c m23, and \c m33 elements are set to 0, 0,
|
||||
@ -328,6 +330,7 @@ QTransform::QTransform(const QMatrix &mtx)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
Returns the adjoint of this matrix.
|
||||
@ -2082,7 +2085,9 @@ void QTransform::map(int x, int y, int *tx, int *ty) const
|
||||
*ty = qRound(fy);
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
/*!
|
||||
\obsolete
|
||||
Returns the QTransform as an affine matrix.
|
||||
|
||||
\warning If a perspective transformation has been specified,
|
||||
@ -2092,6 +2097,7 @@ const QMatrix &QTransform::toAffine() const
|
||||
{
|
||||
return affine;
|
||||
}
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
Returns the transformation type of this matrix.
|
||||
|
@ -73,7 +73,9 @@ public:
|
||||
qreal h31, qreal h32, qreal h33 = 1.0);
|
||||
QTransform(qreal h11, qreal h12, qreal h21,
|
||||
qreal h22, qreal dx, qreal dy);
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
explicit QTransform(const QMatrix &mtx);
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
// ### Qt 6: remove; the compiler-generated ones are fine!
|
||||
@ -158,7 +160,9 @@ public:
|
||||
void map(int x, int y, int *tx, int *ty) const;
|
||||
void map(qreal x, qreal y, qreal *tx, qreal *ty) const;
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
const QMatrix &toAffine() const;
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
QTransform &operator*=(qreal div);
|
||||
QTransform &operator/=(qreal div);
|
||||
|
@ -900,7 +900,7 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/)
|
||||
uenv.venv = nullptr;
|
||||
m_javaVM = nullptr;
|
||||
|
||||
if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) {
|
||||
if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_6) != JNI_OK) {
|
||||
__android_log_print(ANDROID_LOG_FATAL, "Qt", "GetEnv failed");
|
||||
return -1;
|
||||
}
|
||||
@ -922,5 +922,5 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/)
|
||||
if (threadSetter.thread())
|
||||
threadSetter.thread()->setObjectName("QtMainLoopThread");
|
||||
__android_log_print(ANDROID_LOG_INFO, "Qt", "qt started");
|
||||
return JNI_VERSION_1_4;
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@
|
||||
|
||||
#include "qwasmclipboard.h"
|
||||
#include "qwasmwindow.h"
|
||||
#include "qwasmstring.h"
|
||||
|
||||
#include <emscripten.h>
|
||||
#include <emscripten/html5.h>
|
||||
@ -40,22 +41,22 @@
|
||||
using namespace emscripten;
|
||||
|
||||
// there has got to be a better way...
|
||||
static QByteArray g_clipboardArray;
|
||||
static QByteArray g_clipboardFormat;
|
||||
static QString g_clipboardText;
|
||||
static QString g_clipboardFormat;
|
||||
|
||||
static val getClipboardData()
|
||||
{
|
||||
return val(g_clipboardArray.constData());
|
||||
return QWasmString::fromQString(g_clipboardText);
|
||||
}
|
||||
|
||||
static val getClipboardFormat()
|
||||
{
|
||||
return val(g_clipboardFormat.constData());
|
||||
return QWasmString::fromQString(g_clipboardFormat);
|
||||
}
|
||||
|
||||
static void pasteClipboardData(emscripten::val format, emscripten::val dataPtr)
|
||||
{
|
||||
QString formatString = QString::fromStdString(format.as<std::string>());
|
||||
QString formatString = QWasmString::toQString(format);
|
||||
QByteArray dataArray = QByteArray::fromStdString(dataPtr.as<std::string>());
|
||||
QMimeData *mMimeData = new QMimeData;
|
||||
mMimeData->setData(formatString, dataArray);
|
||||
@ -102,11 +103,10 @@ static void qClipboardPasteTo(val event)
|
||||
bool hasClipboardApi = QWasmIntegration::get()->getWasmClipboard()->hasClipboardApi;
|
||||
val clipdata = hasClipboardApi ?
|
||||
val::global("Module").call<val>("qtGetClipboardData") :
|
||||
event["clipboardData"].call<val>("getData", std::string("text"));
|
||||
event["clipboardData"].call<val>("getData", val("text"));
|
||||
|
||||
const std::string data = clipdata.as<std::string>();
|
||||
if (data.length() > 0) {
|
||||
QString qstr = QString::fromStdString(data);
|
||||
const QString qstr = QWasmString::toQString(clipdata);
|
||||
if (qstr.length() > 0) {
|
||||
QMimeData *mMimeData = new QMimeData;
|
||||
mMimeData->setText(qstr);
|
||||
QWasmClipboard::qWasmClipboardPaste(mMimeData);
|
||||
@ -133,7 +133,7 @@ QWasmClipboard::QWasmClipboard()
|
||||
|
||||
QWasmClipboard::~QWasmClipboard()
|
||||
{
|
||||
g_clipboardArray.clear();
|
||||
g_clipboardText.clear();
|
||||
g_clipboardFormat.clear();
|
||||
}
|
||||
|
||||
@ -148,11 +148,11 @@ QMimeData* QWasmClipboard::mimeData(QClipboard::Mode mode)
|
||||
void QWasmClipboard::setMimeData(QMimeData* mimeData, QClipboard::Mode mode)
|
||||
{
|
||||
if (mimeData->hasText()) {
|
||||
g_clipboardFormat = mimeData->formats().at(0).toUtf8();
|
||||
g_clipboardArray = mimeData->text().toUtf8();
|
||||
g_clipboardFormat = mimeData->formats().at(0);
|
||||
g_clipboardText = mimeData->text();
|
||||
} else if (mimeData->hasHtml()) {
|
||||
g_clipboardFormat =mimeData->formats().at(0).toUtf8();
|
||||
g_clipboardArray = mimeData->html().toUtf8();
|
||||
g_clipboardFormat = mimeData->formats().at(0);
|
||||
g_clipboardText = mimeData->html();
|
||||
}
|
||||
|
||||
QPlatformClipboard::setMimeData(mimeData, mode);
|
||||
@ -199,13 +199,13 @@ void QWasmClipboard::installEventHandlers(const QString &canvasId)
|
||||
|
||||
// Fallback path for browsers which do not support direct clipboard access
|
||||
val document = val::global("document");
|
||||
val canvas = document.call<val>("getElementById", val(canvasId.toUtf8().constData()));
|
||||
val canvas = document.call<val>("getElementById", QWasmString::fromQString(canvasId));
|
||||
|
||||
canvas.call<void>("addEventListener", std::string("cut"),
|
||||
canvas.call<void>("addEventListener", val("cut"),
|
||||
val::module_property("qtClipboardCutTo"));
|
||||
canvas.call<void>("addEventListener", std::string("copy"),
|
||||
canvas.call<void>("addEventListener", val("copy"),
|
||||
val::module_property("qtClipboardCopyTo"));
|
||||
canvas.call<void>("addEventListener", std::string("paste"),
|
||||
canvas.call<void>("addEventListener", val("paste"),
|
||||
val::module_property("qtClipboardPasteTo"));
|
||||
}
|
||||
|
||||
@ -226,6 +226,6 @@ void QWasmClipboard::writeTextToClipboard()
|
||||
val txt = module.call<val>("qtGetClipboardData");
|
||||
val format = module.call<val>("qtGetClipboardFormat");
|
||||
val navigator = val::global("navigator");
|
||||
navigator["clipboard"].call<void>("writeText", txt.as<std::string>());
|
||||
navigator["clipboard"].call<void>("writeText", txt);
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,7 @@
|
||||
|
||||
#include "qwasmcursor.h"
|
||||
#include "qwasmscreen.h"
|
||||
#include "qwasmstring.h"
|
||||
|
||||
#include <QtCore/qdebug.h>
|
||||
#include <QtGui/qwindow.h>
|
||||
@ -56,11 +57,11 @@ void QWasmCursor::changeCursor(QCursor *windowCursor, QWindow *window)
|
||||
htmlCursorName = "auto";
|
||||
|
||||
// Set cursor on the canvas
|
||||
QByteArray canvasId = QWasmScreen::get(screen)->canvasId().toUtf8();
|
||||
val jsCanvasId = QWasmString::fromQString(QWasmScreen::get(screen)->canvasId());
|
||||
val document = val::global("document");
|
||||
val canvas = document.call<val>("getElementById", val(canvasId.constData()));
|
||||
val canvas = document.call<val>("getElementById", jsCanvasId);
|
||||
val canvasStyle = canvas["style"];
|
||||
canvasStyle.set("cursor", emscripten::val(htmlCursorName.constData()));
|
||||
canvasStyle.set("cursor", val(htmlCursorName.constData()));
|
||||
}
|
||||
|
||||
QByteArray QWasmCursor::cursorShapeToHtml(Qt::CursorShape shape)
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "qwasmcompositor.h"
|
||||
#include "qwasmintegration.h"
|
||||
#include "qwasmclipboard.h"
|
||||
#include "qwasmstring.h"
|
||||
|
||||
#include <QtGui/qevent.h>
|
||||
#include <qpa/qwindowsysteminterface.h>
|
||||
@ -355,9 +356,10 @@ void QWasmEventTranslator::initEventHandlers()
|
||||
|
||||
if (emscripten::val::global("window")["safari"].isUndefined()) {
|
||||
val document = val::global("document");
|
||||
val canvas = document.call<val>("getElementById", val(canvasId));
|
||||
val jsCanvasId = QWasmString::fromQString(screen()->canvasId());
|
||||
val canvas = document.call<val>("getElementById", jsCanvasId);
|
||||
canvas.call<void>("addEventListener",
|
||||
std::string("wheel"),
|
||||
val("wheel"),
|
||||
val::module_property("qtMouseWheelEvent"));
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "qwasmclipboard.h"
|
||||
#include "qwasmservices.h"
|
||||
#include "qwasmoffscreensurface.h"
|
||||
#include "qwasmstring.h"
|
||||
|
||||
#include "qwasmwindow.h"
|
||||
#ifndef QT_NO_OPENGL
|
||||
@ -67,19 +68,19 @@ static void browserBeforeUnload(emscripten::val)
|
||||
|
||||
static void addCanvasElement(emscripten::val canvas)
|
||||
{
|
||||
QString canvasId = QString::fromStdString(canvas["id"].as<std::string>());
|
||||
QString canvasId = QWasmString::toQString(canvas["id"]);
|
||||
QWasmIntegration::get()->addScreen(canvasId);
|
||||
}
|
||||
|
||||
static void removeCanvasElement(emscripten::val canvas)
|
||||
{
|
||||
QString canvasId = QString::fromStdString(canvas["id"].as<std::string>());
|
||||
QString canvasId = QWasmString::toQString(canvas["id"]);
|
||||
QWasmIntegration::get()->removeScreen(canvasId);
|
||||
}
|
||||
|
||||
static void resizeCanvasElement(emscripten::val canvas)
|
||||
{
|
||||
QString canvasId = QString::fromStdString(canvas["id"].as<std::string>());
|
||||
QString canvasId = QWasmString::toQString(canvas["id"]);
|
||||
QWasmIntegration::get()->resizeScreen(canvasId);
|
||||
}
|
||||
|
||||
@ -115,11 +116,11 @@ QWasmIntegration::QWasmIntegration()
|
||||
int screenCount = qtCanvaseElements["length"].as<int>();
|
||||
for (int i = 0; i < screenCount; ++i) {
|
||||
emscripten::val canvas = qtCanvaseElements[i].as<emscripten::val>();
|
||||
QString canvasId = QString::fromStdString(canvas["id"].as<std::string>());
|
||||
QString canvasId = QWasmString::toQString(canvas["id"]);
|
||||
addScreen(canvasId);
|
||||
}
|
||||
} else if (!canvas.isUndefined()){
|
||||
QString canvasId = QString::fromStdString(canvas["id"].as<std::string>());
|
||||
QString canvasId = QWasmString::toQString(canvas["id"]);
|
||||
addScreen(canvasId);
|
||||
}
|
||||
|
||||
|
@ -32,6 +32,8 @@
|
||||
#include "qwasmeventtranslator.h"
|
||||
#include "qwasmcompositor.h"
|
||||
#include "qwasmintegration.h"
|
||||
#include "qwasmstring.h"
|
||||
|
||||
#include <emscripten/bind.h>
|
||||
#include <emscripten/val.h>
|
||||
|
||||
@ -186,7 +188,7 @@ void QWasmScreen::updateQScreenAndCanvasRenderSize()
|
||||
|
||||
QSizeF canvasSize = cssSize * devicePixelRatio();
|
||||
val document = val::global("document");
|
||||
val canvas = document.call<val>("getElementById", val(canvasId.constData()));
|
||||
val canvas = document.call<val>("getElementById", QWasmString::fromQString(m_canvasId));
|
||||
|
||||
canvas.set("width", canvasSize.width());
|
||||
canvas.set("height", canvasSize.height());
|
||||
|
@ -28,6 +28,8 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "qwasmservices.h"
|
||||
#include "qwasmstring.h"
|
||||
|
||||
#include <QtCore/QUrl>
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
@ -37,8 +39,8 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
bool QWasmServices::openUrl(const QUrl &url)
|
||||
{
|
||||
QByteArray utf8Url = url.toString().toUtf8();
|
||||
emscripten::val::global("window").call<void>("open", emscripten::val(utf8Url.constData()), emscripten::val("_blank"));
|
||||
emscripten::val jsUrl = QWasmString::fromQString(url.toString());
|
||||
emscripten::val::global("window").call<void>("open", jsUrl, emscripten::val("_blank"));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
61
src/plugins/platforms/wasm/qwasmstring.cpp
Normal file
61
src/plugins/platforms/wasm/qwasmstring.cpp
Normal file
@ -0,0 +1,61 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the plugins of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:GPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3 or (at your option) any later version
|
||||
** approved by the KDE Free Qt Foundation. The licenses are as published by
|
||||
** the Free Software Foundation and appearing in the file LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qwasmstring.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
using namespace emscripten;
|
||||
|
||||
val QWasmString::fromQString(const QString &str)
|
||||
{
|
||||
static const val UTF16ToString(
|
||||
val::global("Module")["UTF16ToString"]);
|
||||
|
||||
auto ptr = quintptr(str.utf16());
|
||||
return UTF16ToString(val(ptr));
|
||||
}
|
||||
|
||||
QString QWasmString::toQString(const val &v)
|
||||
{
|
||||
QString result;
|
||||
if (!v.isString())
|
||||
return result;
|
||||
|
||||
static const val stringToUTF16(
|
||||
val::global("Module")["stringToUTF16"]);
|
||||
static const val length("length");
|
||||
|
||||
result.resize(v[length].as<int>());
|
||||
auto ptr = quintptr(result.utf16());
|
||||
stringToUTF16(v, val(ptr));
|
||||
return result;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
45
src/plugins/platforms/wasm/qwasmstring.h
Normal file
45
src/plugins/platforms/wasm/qwasmstring.h
Normal file
@ -0,0 +1,45 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the plugins of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:GPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3 or (at your option) any later version
|
||||
** approved by the KDE Free Qt Foundation. The licenses are as published by
|
||||
** the Free Software Foundation and appearing in the file LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qstring.h>
|
||||
|
||||
#include <emscripten/val.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QWasmString
|
||||
{
|
||||
public:
|
||||
static emscripten::val fromQString(const QString &str);
|
||||
static QString toQString(const emscripten::val &v);
|
||||
};
|
||||
QT_END_NAMESPACE
|
||||
|
@ -23,7 +23,8 @@ SOURCES = \
|
||||
qwasmtheme.cpp \
|
||||
qwasmclipboard.cpp \
|
||||
qwasmservices.cpp \
|
||||
qwasmoffscreensurface.cpp
|
||||
qwasmoffscreensurface.cpp \
|
||||
qwasmstring.cpp
|
||||
|
||||
HEADERS = \
|
||||
qwasmintegration.h \
|
||||
@ -39,7 +40,8 @@ HEADERS = \
|
||||
qwasmtheme.h \
|
||||
qwasmclipboard.h \
|
||||
qwasmservices.h \
|
||||
qwasmoffscreensurface.h
|
||||
qwasmoffscreensurface.h \
|
||||
qwasmstring.h
|
||||
|
||||
wasmfonts.files = \
|
||||
../../../3rdparty/wasm/Vera.ttf \
|
||||
|
@ -1025,7 +1025,7 @@ bool QWindowsXPStylePrivate::drawBackgroundThruNativeBuffer(XPThemeData &themeDa
|
||||
imgCopy = cachedPixmap.toImage();
|
||||
|
||||
if (themeData.rotate) {
|
||||
QMatrix rotMatrix;
|
||||
QTransform rotMatrix;
|
||||
rotMatrix.rotate(themeData.rotate);
|
||||
imgCopy = imgCopy.transformed(rotMatrix);
|
||||
}
|
||||
|
@ -55,7 +55,6 @@
|
||||
|
||||
#ifndef QT_NO_PRINTER
|
||||
#include "QtCore/qmap.h"
|
||||
#include "QtGui/qmatrix.h"
|
||||
#include "QtCore/qstring.h"
|
||||
#include "QtCore/qvector.h"
|
||||
#include "QtGui/qpaintengine.h"
|
||||
|
@ -264,7 +264,7 @@ void QPrintPreviewWidgetPrivate::_q_fit(bool doFitting)
|
||||
} else {
|
||||
graphicsView->fitInView(target, Qt::KeepAspectRatio);
|
||||
if (zoomMode == QPrintPreviewWidget::FitInView) {
|
||||
int step = qRound(graphicsView->matrix().mapRect(target).height());
|
||||
const int step = qRound(graphicsView->transform().mapRect(target).height());
|
||||
graphicsView->verticalScrollBar()->setSingleStep(step);
|
||||
graphicsView->verticalScrollBar()->setPageStep(step);
|
||||
}
|
||||
|
@ -249,16 +249,15 @@ void QSqlQueryModel_snippets()
|
||||
}
|
||||
|
||||
//! [21]
|
||||
QSqlTableModel model;
|
||||
model.setTable("employee");
|
||||
model.select();
|
||||
QSqlQueryModel model;
|
||||
model.setQuery("SELECT name, salary FROM employee");
|
||||
int salary = model.record(4).value("salary").toInt();
|
||||
//! [21]
|
||||
Q_UNUSED(salary);
|
||||
|
||||
{
|
||||
//! [22]
|
||||
int salary = model.data(model.index(4, 2)).toInt();
|
||||
int salary = model.data(model.index(4, 1)).toInt();
|
||||
//! [22]
|
||||
Q_UNUSED(salary);
|
||||
}
|
||||
@ -308,7 +307,8 @@ void QSqlTableModel_snippets()
|
||||
//! [25]
|
||||
QSqlTableModel model;
|
||||
model.setTable("employee");
|
||||
QString name = model.record(4).value("name").toString();
|
||||
model.select();
|
||||
int salary = model.record(4).value("salary").toInt();
|
||||
//! [25]
|
||||
}
|
||||
}
|
||||
|
@ -124,8 +124,8 @@ int QSqlQueryModelPrivate::columnInQuery(int modelColumn) const
|
||||
\snippet sqldatabase/sqldatabase.cpp 21
|
||||
|
||||
The code snippet above extracts the \c salary field from record 4 in
|
||||
the result set of the query \c{SELECT * from employee}. Assuming
|
||||
that \c salary is column 2, we can rewrite the last line as follows:
|
||||
the result set of the \c SELECT query. Since \c salary is the 2nd
|
||||
column (or column index 1), we can rewrite the last line as follows:
|
||||
|
||||
\snippet sqldatabase/sqldatabase.cpp 22
|
||||
|
||||
|
@ -222,7 +222,7 @@ bool QSqlTableModelPrivate::exec(const QString &stmt, bool prepStatement,
|
||||
QSqlTableModel can also be used to access a database
|
||||
programmatically, without binding it to a view:
|
||||
|
||||
\snippet sqldatabase/sqldatabase.cpp 21
|
||||
\snippet sqldatabase/sqldatabase.cpp 25
|
||||
|
||||
The code snippet above extracts the \c salary field from record 4 in
|
||||
the result set of the query \c{SELECT * from employee}.
|
||||
|
@ -380,10 +380,10 @@ void JavaStyle::drawControl(ControlElement control, const QStyleOption *option,
|
||||
QRect rect = bar->rect;
|
||||
if (bar->orientation == Qt::Vertical) {
|
||||
rect = QRect(rect.left(), rect.top(), rect.height(), rect.width());
|
||||
QMatrix m;
|
||||
QTransform m;
|
||||
m.translate(rect.height()-1, 0);
|
||||
m.rotate(90.0);
|
||||
painter->setMatrix(m);
|
||||
painter->setTransform(m);
|
||||
}
|
||||
|
||||
painter->setPen(bar->palette.color(QPalette::Mid));
|
||||
|
@ -2543,6 +2543,18 @@
|
||||
|
||||
See also \l{#height-prop}{height}.
|
||||
|
||||
\row
|
||||
\li \b -qt-background-role
|
||||
\li \l{#paletterole}{PaletteRole}
|
||||
\li The \c{background-color} for the subcontrol or widget based on the
|
||||
chosen role.
|
||||
|
||||
\row
|
||||
\li \b -qt-style-features
|
||||
\li \c list
|
||||
\li The list of CSS properties that you want to apply Qt-specific styles on.
|
||||
|
||||
\note The \c list can only include properties that are not pixmap-based.
|
||||
\endtable
|
||||
|
||||
\target list of icons
|
||||
|
@ -231,7 +231,6 @@
|
||||
#include <QtWidgets/qgraphicslayout.h>
|
||||
#include <QtWidgets/qgraphicsproxywidget.h>
|
||||
#include <QtWidgets/qgraphicswidget.h>
|
||||
#include <QtGui/qmatrix.h>
|
||||
#include <QtGui/qpaintengine.h>
|
||||
#include <QtGui/qpainter.h>
|
||||
#include <QtGui/qpixmapcache.h>
|
||||
|
@ -47,7 +47,6 @@
|
||||
#include <QtGui/qbrush.h>
|
||||
#include <QtGui/qfont.h>
|
||||
#include <QtGui/qtransform.h>
|
||||
#include <QtGui/qmatrix.h>
|
||||
#include <QtGui/qpen.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(graphicsview);
|
||||
|
@ -1795,7 +1795,13 @@ void QGraphicsView::setSceneRect(const QRectF &rect)
|
||||
d->recalculateContentSize();
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
\obsolete
|
||||
|
||||
Use transform() instead.
|
||||
|
||||
Returns the current transformation matrix for the view. If no current
|
||||
transformation is set, the identity matrix is returned.
|
||||
|
||||
@ -1808,6 +1814,10 @@ QMatrix QGraphicsView::matrix() const
|
||||
}
|
||||
|
||||
/*!
|
||||
\obsolete
|
||||
|
||||
Use setTransform() instead.
|
||||
|
||||
Sets the view's current transformation matrix to \a matrix.
|
||||
|
||||
If \a combine is true, then \a matrix is combined with the current matrix;
|
||||
@ -1839,6 +1849,10 @@ void QGraphicsView::setMatrix(const QMatrix &matrix, bool combine)
|
||||
}
|
||||
|
||||
/*!
|
||||
\obsolete
|
||||
|
||||
Use resetTransform() instead.
|
||||
|
||||
Resets the view transformation matrix to the identity matrix.
|
||||
|
||||
\sa resetTransform()
|
||||
@ -1848,6 +1862,8 @@ void QGraphicsView::resetMatrix()
|
||||
resetTransform();
|
||||
}
|
||||
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
|
||||
/*!
|
||||
Rotates the current view transformation \a angle degrees clockwise.
|
||||
|
||||
|
@ -165,9 +165,11 @@ public:
|
||||
void setSceneRect(const QRectF &rect);
|
||||
inline void setSceneRect(qreal x, qreal y, qreal w, qreal h);
|
||||
|
||||
QMatrix matrix() const;
|
||||
void setMatrix(const QMatrix &matrix, bool combine = false);
|
||||
void resetMatrix();
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_X("Use transform()") QMatrix matrix() const;
|
||||
QT_DEPRECATED_X("Use setTransform()") void setMatrix(const QMatrix &matrix, bool combine = false);
|
||||
QT_DEPRECATED_X("Use resetTransform()") void resetMatrix();
|
||||
#endif // QT_DEPRECATED_SINCE(5, 15)
|
||||
QTransform transform() const;
|
||||
QTransform viewportTransform() const;
|
||||
bool isTransformed() const;
|
||||
|
@ -2124,7 +2124,8 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool
|
||||
&& !(!next && focusProxy && test->isAncestorOf(focusProxy))
|
||||
&& test->isVisibleTo(toplevel) && test->isEnabled()
|
||||
&& !(w->windowType() == Qt::SubWindow && !w->isAncestorOf(test))
|
||||
&& (toplevel->windowType() != Qt::SubWindow || toplevel->isAncestorOf(test))) {
|
||||
&& (toplevel->windowType() != Qt::SubWindow || toplevel->isAncestorOf(test))
|
||||
&& f != focusProxy) {
|
||||
w = test;
|
||||
if (seenWindow)
|
||||
focusWidgetAfterWindow = true;
|
||||
|
@ -1556,7 +1556,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
qint64 maximum = qint64(pb->maximum);
|
||||
qint64 progress = qint64(pb->progress);
|
||||
|
||||
QMatrix m;
|
||||
QTransform m;
|
||||
|
||||
if (vertical) {
|
||||
rect = QRect(rect.y(), rect.x(), rect.height(), rect.width()); // flip width and height
|
||||
|
@ -1692,7 +1692,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
|
||||
const bool vertical = pb->orientation == Qt::Vertical;
|
||||
const bool inverted = pb->invertedAppearance;
|
||||
|
||||
QMatrix m;
|
||||
QTransform m;
|
||||
if (vertical) {
|
||||
rect = QRect(rect.y(), rect.x(), rect.height(), rect.width()); // flip width and height
|
||||
m.rotate(90);
|
||||
|
@ -414,8 +414,13 @@ void QAbstractButtonPrivate::emitClicked()
|
||||
emit q->clicked(checked);
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
emit group->buttonClicked(group->id(q));
|
||||
if (guard && group)
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
emit group->buttonClicked(q);
|
||||
}
|
||||
#endif
|
||||
@ -428,8 +433,13 @@ void QAbstractButtonPrivate::emitPressed()
|
||||
emit q->pressed();
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
emit group->buttonPressed(group->id(q));
|
||||
if (guard && group)
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
emit group->buttonPressed(q);
|
||||
}
|
||||
#endif
|
||||
@ -442,8 +452,13 @@ void QAbstractButtonPrivate::emitReleased()
|
||||
emit q->released();
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
emit group->buttonReleased(group->id(q));
|
||||
if (guard && group)
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
emit group->buttonReleased(q);
|
||||
}
|
||||
#endif
|
||||
@ -456,8 +471,13 @@ void QAbstractButtonPrivate::emitToggled(bool checked)
|
||||
emit q->toggled(checked);
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
emit group->buttonToggled(group->id(q), checked);
|
||||
if (guard && group)
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
emit group->buttonToggled(q, checked);
|
||||
}
|
||||
#endif
|
||||
|
@ -164,6 +164,7 @@ void QButtonGroup::setExclusive(bool exclusive)
|
||||
|
||||
/*!
|
||||
\fn void QButtonGroup::buttonClicked(int id)
|
||||
\obsolete
|
||||
|
||||
This signal is emitted when a button with the given \a id is
|
||||
clicked.
|
||||
@ -183,6 +184,7 @@ void QButtonGroup::setExclusive(bool exclusive)
|
||||
/*!
|
||||
\fn void QButtonGroup::buttonPressed(int id)
|
||||
\since 4.2
|
||||
\obsolete
|
||||
|
||||
This signal is emitted when a button with the given \a id is
|
||||
pressed down.
|
||||
@ -202,6 +204,7 @@ void QButtonGroup::setExclusive(bool exclusive)
|
||||
/*!
|
||||
\fn void QButtonGroup::buttonReleased(int id)
|
||||
\since 4.2
|
||||
\obsolete
|
||||
|
||||
This signal is emitted when a button with the given \a id is
|
||||
released.
|
||||
@ -222,6 +225,7 @@ void QButtonGroup::setExclusive(bool exclusive)
|
||||
/*!
|
||||
\fn void QButtonGroup::buttonToggled(int id, bool checked)
|
||||
\since 5.2
|
||||
\obsolete
|
||||
|
||||
This signal is emitted when a button with the given \a id is toggled.
|
||||
\a checked is true if the button is checked, or false if the button is unchecked.
|
||||
|
@ -78,13 +78,19 @@ public:
|
||||
|
||||
Q_SIGNALS:
|
||||
void buttonClicked(QAbstractButton *);
|
||||
void buttonClicked(int);
|
||||
void buttonPressed(QAbstractButton *);
|
||||
void buttonPressed(int);
|
||||
void buttonReleased(QAbstractButton *);
|
||||
void buttonReleased(int);
|
||||
void buttonToggled(QAbstractButton *, bool);
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_DEPRECATED_VERSION_X_5_15("Use QButtonGroup::buttonClicked(QAbstractButton *) instead")
|
||||
void buttonClicked(int);
|
||||
QT_DEPRECATED_VERSION_X_5_15("Use QButtonGroup::buttonPressed(QAbstractButton *) instead")
|
||||
void buttonPressed(int);
|
||||
QT_DEPRECATED_VERSION_X_5_15("Use QButtonGroup::buttonReleased(QAbstractButton *) instead")
|
||||
void buttonReleased(int);
|
||||
QT_DEPRECATED_VERSION_X_5_15("Use QButtonGroup::buttonToggled(QAbstractButton *, bool) instead")
|
||||
void buttonToggled(int, bool);
|
||||
#endif
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(QButtonGroup)
|
||||
|
@ -293,8 +293,7 @@ void QComboBoxPrivate::_q_modelReset()
|
||||
lineEdit->setText(QString());
|
||||
updateLineEditGeometry();
|
||||
}
|
||||
if (currentIndex.row() != indexBeforeChange)
|
||||
_q_emitCurrentIndexChanged(currentIndex);
|
||||
trySetValidIndex();
|
||||
modelChanged();
|
||||
q->update();
|
||||
}
|
||||
@ -304,6 +303,25 @@ void QComboBoxPrivate::_q_modelDestroyed()
|
||||
model = QAbstractItemModelPrivate::staticEmptyModel();
|
||||
}
|
||||
|
||||
void QComboBoxPrivate::trySetValidIndex()
|
||||
{
|
||||
Q_Q(QComboBox);
|
||||
bool currentReset = false;
|
||||
|
||||
const int rowCount = q->count();
|
||||
for (int pos = 0; pos < rowCount; ++pos) {
|
||||
const QModelIndex idx(model->index(pos, modelColumn, root));
|
||||
if (idx.flags() & Qt::ItemIsEnabled) {
|
||||
setCurrentIndex(idx);
|
||||
currentReset = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!currentReset)
|
||||
setCurrentIndex(QModelIndex());
|
||||
}
|
||||
|
||||
QRect QComboBoxPrivate::popupGeometry(int screen) const
|
||||
{
|
||||
return QStylePrivate::useFullScreenForPopup()
|
||||
@ -2202,20 +2220,7 @@ void QComboBox::setModel(QAbstractItemModel *model)
|
||||
|
||||
setRootModelIndex(QModelIndex());
|
||||
|
||||
bool currentReset = false;
|
||||
|
||||
const int rowCount = count();
|
||||
for (int pos=0; pos < rowCount; pos++) {
|
||||
if (d->model->index(pos, d->modelColumn, d->root).flags() & Qt::ItemIsEnabled) {
|
||||
setCurrentIndex(pos);
|
||||
currentReset = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!currentReset)
|
||||
setCurrentIndex(-1);
|
||||
|
||||
d->trySetValidIndex();
|
||||
d->modelChanged();
|
||||
}
|
||||
|
||||
|
@ -371,6 +371,7 @@ public:
|
||||
void _q_rowsRemoved(const QModelIndex &parent, int start, int end);
|
||||
void updateArrow(QStyle::StateFlag state);
|
||||
bool updateHoverControl(const QPoint &pos);
|
||||
void trySetValidIndex();
|
||||
QRect popupGeometry(int screen = -1) const;
|
||||
QStyle::SubControl newHoverControl(const QPoint &pos);
|
||||
int computeWidthHint() const;
|
||||
|
@ -490,14 +490,14 @@ void QScrollArea::ensureWidgetVisible(QWidget *childWidget, int xmargin, int yma
|
||||
if (focusRect.width() > visibleRect.width())
|
||||
d->hbar->setValue(focusRect.center().x() - d->viewport->width() / 2);
|
||||
else if (focusRect.right() > visibleRect.right())
|
||||
d->hbar->setValue(focusRect.right() - d->viewport->width());
|
||||
d->hbar->setValue(focusRect.right() - d->viewport->width() + 1);
|
||||
else if (focusRect.left() < visibleRect.left())
|
||||
d->hbar->setValue(focusRect.left());
|
||||
|
||||
if (focusRect.height() > visibleRect.height())
|
||||
d->vbar->setValue(focusRect.center().y() - d->viewport->height() / 2);
|
||||
else if (focusRect.bottom() > visibleRect.bottom())
|
||||
d->vbar->setValue(focusRect.bottom() - d->viewport->height());
|
||||
d->vbar->setValue(focusRect.bottom() - d->viewport->height() + 1);
|
||||
else if (focusRect.top() < visibleRect.top())
|
||||
d->vbar->setValue(focusRect.top());
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtWidgets module of the Qt Toolkit.
|
||||
@ -1168,11 +1168,11 @@ QVariant QSpinBoxPrivate::validateAndInterpret(QString &input, int &pos,
|
||||
} else {
|
||||
num = locale.toInt(copy, &ok);
|
||||
if (!ok && (max >= 1000 || min <= -1000)) {
|
||||
const QChar sep = locale.groupSeparator();
|
||||
const QChar doubleSep[2] = {sep, sep};
|
||||
if (copy.contains(sep) && !copy.contains(QString(doubleSep, 2))) {
|
||||
const QString sep(locale.groupSeparator());
|
||||
const QString doubleSep = sep + sep;
|
||||
if (copy.contains(sep) && !copy.contains(doubleSep)) {
|
||||
QString copy2 = copy;
|
||||
copy2.remove(locale.groupSeparator());
|
||||
copy2.remove(sep);
|
||||
num = locale.toInt(copy2, &ok);
|
||||
}
|
||||
}
|
||||
@ -1314,6 +1314,10 @@ QVariant QDoubleSpinBoxPrivate::validateAndInterpret(QString &input, int &pos,
|
||||
const bool plus = max >= 0;
|
||||
const bool minus = min <= 0;
|
||||
|
||||
const QString group(locale.groupSeparator());
|
||||
const uint groupUcs = (group.size() > 1 && group.at(0).isHighSurrogate()
|
||||
? QChar::surrogateToUcs4(group.at(0), group.at(1))
|
||||
: group.at(0).unicode());
|
||||
switch (len) {
|
||||
case 0:
|
||||
state = max != min ? QValidator::Intermediate : QValidator::Invalid;
|
||||
@ -1360,14 +1364,15 @@ QVariant QDoubleSpinBoxPrivate::validateAndInterpret(QString &input, int &pos,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const QChar last = copy.at(len - 1);
|
||||
const QChar secondLast = copy.at(len - 2);
|
||||
if ((last == locale.groupSeparator() || last.isSpace())
|
||||
&& (secondLast == locale.groupSeparator() || secondLast.isSpace())) {
|
||||
const QChar last = copy.back();
|
||||
const bool groupEnd = copy.endsWith(group);
|
||||
const QStringView head(copy.constData(), groupEnd ? len - group.size() : len - 1);
|
||||
const QChar secondLast = head.back();
|
||||
if ((groupEnd || last.isSpace()) && (head.endsWith(group) || secondLast.isSpace())) {
|
||||
state = QValidator::Invalid;
|
||||
QSBDEBUG() << __FILE__ << __LINE__<< "state is set to Invalid";
|
||||
goto end;
|
||||
} else if (last.isSpace() && (!locale.groupSeparator().isSpace() || secondLast.isSpace())) {
|
||||
} else if (last.isSpace() && (!QChar::isSpace(groupUcs) || secondLast.isSpace())) {
|
||||
state = QValidator::Invalid;
|
||||
QSBDEBUG() << __FILE__ << __LINE__<< "state is set to Invalid";
|
||||
goto end;
|
||||
@ -1381,26 +1386,31 @@ QVariant QDoubleSpinBoxPrivate::validateAndInterpret(QString &input, int &pos,
|
||||
QSBDEBUG() << __FILE__ << __LINE__ << locale << copy << num << ok;
|
||||
|
||||
if (!ok) {
|
||||
if (locale.groupSeparator().isPrint()) {
|
||||
if (max < 1000 && min > -1000 && copy.contains(locale.groupSeparator())) {
|
||||
if (QChar::isPrint(groupUcs)) {
|
||||
if (max < 1000 && min > -1000 && copy.contains(group)) {
|
||||
state = QValidator::Invalid;
|
||||
QSBDEBUG() << __FILE__ << __LINE__<< "state is set to Invalid";
|
||||
goto end;
|
||||
}
|
||||
|
||||
const int len = copy.size();
|
||||
for (int i=0; i<len- 1; ++i) {
|
||||
if (copy.at(i) == locale.groupSeparator() && copy.at(i + 1) == locale.groupSeparator()) {
|
||||
QSBDEBUG() << __FILE__ << __LINE__<< "state is set to Invalid";
|
||||
state = QValidator::Invalid;
|
||||
goto end;
|
||||
for (int i = 0; i < len - 1;) {
|
||||
if (QStringView(copy).mid(i).startsWith(group)) {
|
||||
if (QStringView(copy).mid(i + group.size()).startsWith(group)) {
|
||||
QSBDEBUG() << __FILE__ << __LINE__<< "state is set to Invalid";
|
||||
state = QValidator::Invalid;
|
||||
goto end;
|
||||
}
|
||||
i += group.size();
|
||||
} else {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
QString copy2 = copy;
|
||||
copy2.remove(locale.groupSeparator());
|
||||
copy2.remove(group);
|
||||
num = locale.toDouble(copy2, &ok);
|
||||
QSBDEBUG() << locale.groupSeparator() << num << copy2 << ok;
|
||||
QSBDEBUG() << group << num << copy2 << ok;
|
||||
|
||||
if (!ok) {
|
||||
state = QValidator::Invalid;
|
||||
|
@ -992,12 +992,12 @@ void QWidgetTextControl::selectAll()
|
||||
|
||||
void QWidgetTextControl::processEvent(QEvent *e, const QPointF &coordinateOffset, QWidget *contextWidget)
|
||||
{
|
||||
QMatrix m;
|
||||
m.translate(coordinateOffset.x(), coordinateOffset.y());
|
||||
processEvent(e, m, contextWidget);
|
||||
QTransform t;
|
||||
t.translate(coordinateOffset.x(), coordinateOffset.y());
|
||||
processEvent(e, t, contextWidget);
|
||||
}
|
||||
|
||||
void QWidgetTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget *contextWidget)
|
||||
void QWidgetTextControl::processEvent(QEvent *e, const QTransform &transform, QWidget *contextWidget)
|
||||
{
|
||||
Q_D(QWidgetTextControl);
|
||||
if (d->interactionFlags == Qt::NoTextInteraction) {
|
||||
@ -1038,22 +1038,22 @@ void QWidgetTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget
|
||||
break;
|
||||
case QEvent::MouseButtonPress: {
|
||||
QMouseEvent *ev = static_cast<QMouseEvent *>(e);
|
||||
d->mousePressEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
|
||||
d->mousePressEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(),
|
||||
ev->buttons(), ev->globalPos());
|
||||
break; }
|
||||
case QEvent::MouseMove: {
|
||||
QMouseEvent *ev = static_cast<QMouseEvent *>(e);
|
||||
d->mouseMoveEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
|
||||
d->mouseMoveEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(),
|
||||
ev->buttons(), ev->globalPos());
|
||||
break; }
|
||||
case QEvent::MouseButtonRelease: {
|
||||
QMouseEvent *ev = static_cast<QMouseEvent *>(e);
|
||||
d->mouseReleaseEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
|
||||
d->mouseReleaseEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(),
|
||||
ev->buttons(), ev->globalPos());
|
||||
break; }
|
||||
case QEvent::MouseButtonDblClick: {
|
||||
QMouseEvent *ev = static_cast<QMouseEvent *>(e);
|
||||
d->mouseDoubleClickEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
|
||||
d->mouseDoubleClickEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(),
|
||||
ev->buttons(), ev->globalPos());
|
||||
break; }
|
||||
case QEvent::InputMethod:
|
||||
@ -1062,7 +1062,7 @@ void QWidgetTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget
|
||||
#ifndef QT_NO_CONTEXTMENU
|
||||
case QEvent::ContextMenu: {
|
||||
QContextMenuEvent *ev = static_cast<QContextMenuEvent *>(e);
|
||||
d->contextMenuEvent(ev->globalPos(), matrix.map(ev->pos()), contextWidget);
|
||||
d->contextMenuEvent(ev->globalPos(), transform.map(ev->pos()), contextWidget);
|
||||
break; }
|
||||
#endif // QT_NO_CONTEXTMENU
|
||||
case QEvent::FocusIn:
|
||||
@ -1077,7 +1077,7 @@ void QWidgetTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget
|
||||
#ifndef QT_NO_TOOLTIP
|
||||
case QEvent::ToolTip: {
|
||||
QHelpEvent *ev = static_cast<QHelpEvent *>(e);
|
||||
d->showToolTip(ev->globalPos(), matrix.map(ev->pos()), contextWidget);
|
||||
d->showToolTip(ev->globalPos(), transform.map(ev->pos()), contextWidget);
|
||||
break;
|
||||
}
|
||||
#endif // QT_NO_TOOLTIP
|
||||
@ -1094,13 +1094,13 @@ void QWidgetTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget
|
||||
break;
|
||||
case QEvent::DragMove: {
|
||||
QDragMoveEvent *ev = static_cast<QDragMoveEvent *>(e);
|
||||
if (d->dragMoveEvent(e, ev->mimeData(), matrix.map(ev->pos())))
|
||||
if (d->dragMoveEvent(e, ev->mimeData(), transform.map(ev->pos())))
|
||||
ev->acceptProposedAction();
|
||||
break;
|
||||
}
|
||||
case QEvent::Drop: {
|
||||
QDropEvent *ev = static_cast<QDropEvent *>(e);
|
||||
if (d->dropEvent(ev->mimeData(), matrix.map(ev->pos()), ev->dropAction(), ev->source()))
|
||||
if (d->dropEvent(ev->mimeData(), transform.map(ev->pos()), ev->dropAction(), ev->source()))
|
||||
ev->acceptProposedAction();
|
||||
break;
|
||||
}
|
||||
@ -1109,32 +1109,32 @@ void QWidgetTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget
|
||||
#if QT_CONFIG(graphicsview)
|
||||
case QEvent::GraphicsSceneMousePress: {
|
||||
QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);
|
||||
d->mousePressEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
d->mousePressEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
ev->screenPos());
|
||||
break; }
|
||||
case QEvent::GraphicsSceneMouseMove: {
|
||||
QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);
|
||||
d->mouseMoveEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
d->mouseMoveEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
ev->screenPos());
|
||||
break; }
|
||||
case QEvent::GraphicsSceneMouseRelease: {
|
||||
QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);
|
||||
d->mouseReleaseEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
d->mouseReleaseEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
ev->screenPos());
|
||||
break; }
|
||||
case QEvent::GraphicsSceneMouseDoubleClick: {
|
||||
QGraphicsSceneMouseEvent *ev = static_cast<QGraphicsSceneMouseEvent *>(e);
|
||||
d->mouseDoubleClickEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
d->mouseDoubleClickEvent(ev, ev->button(), transform.map(ev->pos()), ev->modifiers(), ev->buttons(),
|
||||
ev->screenPos());
|
||||
break; }
|
||||
case QEvent::GraphicsSceneContextMenu: {
|
||||
QGraphicsSceneContextMenuEvent *ev = static_cast<QGraphicsSceneContextMenuEvent *>(e);
|
||||
d->contextMenuEvent(ev->screenPos(), matrix.map(ev->pos()), contextWidget);
|
||||
d->contextMenuEvent(ev->screenPos(), transform.map(ev->pos()), contextWidget);
|
||||
break; }
|
||||
|
||||
case QEvent::GraphicsSceneHoverMove: {
|
||||
QGraphicsSceneHoverEvent *ev = static_cast<QGraphicsSceneHoverEvent *>(e);
|
||||
d->mouseMoveEvent(ev, Qt::NoButton, matrix.map(ev->pos()), ev->modifiers(),Qt::NoButton,
|
||||
d->mouseMoveEvent(ev, Qt::NoButton, transform.map(ev->pos()), ev->modifiers(),Qt::NoButton,
|
||||
ev->screenPos());
|
||||
break; }
|
||||
|
||||
@ -1148,12 +1148,12 @@ void QWidgetTextControl::processEvent(QEvent *e, const QMatrix &matrix, QWidget
|
||||
break;
|
||||
case QEvent::GraphicsSceneDragMove: {
|
||||
QGraphicsSceneDragDropEvent *ev = static_cast<QGraphicsSceneDragDropEvent *>(e);
|
||||
if (d->dragMoveEvent(e, ev->mimeData(), matrix.map(ev->pos())))
|
||||
if (d->dragMoveEvent(e, ev->mimeData(), transform.map(ev->pos())))
|
||||
ev->acceptProposedAction();
|
||||
break; }
|
||||
case QEvent::GraphicsSceneDrop: {
|
||||
QGraphicsSceneDragDropEvent *ev = static_cast<QGraphicsSceneDragDropEvent *>(e);
|
||||
if (d->dropEvent(ev->mimeData(), matrix.map(ev->pos()), ev->dropAction(), ev->source()))
|
||||
if (d->dropEvent(ev->mimeData(), transform.map(ev->pos()), ev->dropAction(), ev->source()))
|
||||
ev->accept();
|
||||
break; }
|
||||
#endif // QT_CONFIG(graphicsview)
|
||||
|
@ -252,7 +252,7 @@ public:
|
||||
QPalette palette() const;
|
||||
void setPalette(const QPalette &pal);
|
||||
|
||||
virtual void processEvent(QEvent *e, const QMatrix &matrix, QWidget *contextWidget = nullptr);
|
||||
virtual void processEvent(QEvent *e, const QTransform &transform, QWidget *contextWidget = nullptr);
|
||||
void processEvent(QEvent *e, const QPointF &coordinateOffset = QPointF(), QWidget *contextWidget = nullptr);
|
||||
|
||||
// control methods
|
||||
|
@ -1,2 +1,2 @@
|
||||
[deleteChildrenWithRunningGroup]
|
||||
osx-10.13
|
||||
macos
|
||||
|
@ -1,5 +1,6 @@
|
||||
[pauseAndPropertyAnimations]
|
||||
osx
|
||||
macos
|
||||
[multipleSequentialGroups]
|
||||
osx
|
||||
|
||||
macos
|
||||
[noTimerUpdates]
|
||||
macos
|
||||
|
@ -1,6 +1,6 @@
|
||||
[finishWithUncontrolledAnimation]
|
||||
windows-10 msvc-2015
|
||||
osx-10.13
|
||||
macos
|
||||
[groupWithZeroDurationAnimations]
|
||||
osx-10.13
|
||||
macos
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
[elapsed]
|
||||
osx-10.13
|
||||
macos
|
||||
windows-10
|
||||
|
@ -3298,7 +3298,10 @@ void tst_QDataStream::streamRealDataTypes()
|
||||
QCOMPARE(col, color);
|
||||
stream >> rGrad;
|
||||
QCOMPARE(rGrad.style(), radialBrush.style());
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
QCOMPARE(rGrad.matrix(), radialBrush.matrix());
|
||||
QT_WARNING_POP
|
||||
QCOMPARE(rGrad.gradient()->type(), radialBrush.gradient()->type());
|
||||
QCOMPARE(rGrad.gradient()->stops(), radialBrush.gradient()->stops());
|
||||
QCOMPARE(rGrad.gradient()->spread(), radialBrush.gradient()->spread());
|
||||
@ -3307,7 +3310,10 @@ void tst_QDataStream::streamRealDataTypes()
|
||||
QCOMPARE(((QRadialGradient *)rGrad.gradient())->radius(), ((QRadialGradient *)radialBrush.gradient())->radius());
|
||||
stream >> cGrad;
|
||||
QCOMPARE(cGrad.style(), conicalBrush.style());
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
QCOMPARE(cGrad.matrix(), conicalBrush.matrix());
|
||||
QT_WARNING_POP
|
||||
QCOMPARE(cGrad.gradient()->type(), conicalBrush.gradient()->type());
|
||||
QCOMPARE(cGrad.gradient()->stops(), conicalBrush.gradient()->stops());
|
||||
QCOMPARE(cGrad.gradient()->spread(), conicalBrush.gradient()->spread());
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,7 @@
|
||||
osx
|
||||
[tryAcquireWithTimeout:0.2s]
|
||||
windows
|
||||
osx-10.12
|
||||
osx-10.13
|
||||
macos
|
||||
[tryAcquireWithTimeout:2s]
|
||||
windows
|
||||
osx-10.12
|
||||
osx-10.13
|
||||
macos
|
||||
|
@ -2,6 +2,5 @@
|
||||
windows-10 msvc-2015
|
||||
osx
|
||||
[frameRate]
|
||||
osx-10.12
|
||||
osx-10.13
|
||||
macos
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include <qimage.h>
|
||||
#include <qimagereader.h>
|
||||
#include <qlist.h>
|
||||
#include <qmatrix.h>
|
||||
#include <qtransform.h>
|
||||
#include <qrandom.h>
|
||||
#include <stdio.h>
|
||||
|
||||
@ -1204,7 +1204,7 @@ void tst_QImage::rotate()
|
||||
// original.save("rotated90_original.png", "png");
|
||||
|
||||
// Initialize the matrix manually (do not use rotate) to avoid rounding errors
|
||||
QMatrix matRotate90;
|
||||
QTransform matRotate90;
|
||||
matRotate90.rotate(degrees);
|
||||
QImage dest = original;
|
||||
// And rotate it 4 times, then the image should be identical to the original
|
||||
@ -1218,7 +1218,7 @@ void tst_QImage::rotate()
|
||||
// dest.save("rotated90_result.png","png");
|
||||
QCOMPARE(original, dest);
|
||||
|
||||
// Test with QMatrix::rotate 90 also, since we trust that now
|
||||
// Test with QTransform::rotate 90 also, since we trust that now
|
||||
matRotate90.rotate(degrees);
|
||||
dest = original;
|
||||
// And rotate it 4 times, then the image should be identical to the original
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include <qbitmap.h>
|
||||
#include <qimage.h>
|
||||
#include <qimagereader.h>
|
||||
#include <qmatrix.h>
|
||||
#ifndef QT_NO_WIDGETS
|
||||
#include <qdesktopwidget.h>
|
||||
#include <qsplashscreen.h>
|
||||
|
@ -197,9 +197,14 @@ template<> struct TestValueFactory<QMetaType::QTextLength> {
|
||||
template<> struct TestValueFactory<QMetaType::QTextFormat> {
|
||||
static QTextFormat *create() { return new QTextFormat(QTextFormat::FrameFormat); }
|
||||
};
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
template<> struct TestValueFactory<QMetaType::QMatrix> {
|
||||
static QMatrix *create() { return new QMatrix(10, 20, 30, 40, 50, 60); }
|
||||
};
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
template<> struct TestValueFactory<QMetaType::QTransform> {
|
||||
static QTransform *create() { return new QTransform(10, 20, 30, 40, 50, 60); }
|
||||
};
|
||||
|
@ -402,6 +402,9 @@ void tst_QGuiVariant::toString()
|
||||
QCOMPARE( str, result );
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
void tst_QGuiVariant::matrix()
|
||||
{
|
||||
QVariant variant;
|
||||
@ -414,6 +417,8 @@ void tst_QGuiVariant::matrix()
|
||||
QVERIFY(mmatrix);
|
||||
QMetaType::destroy(QVariant::Matrix, mmatrix);
|
||||
}
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
|
||||
void tst_QGuiVariant::matrix4x4()
|
||||
{
|
||||
|
@ -2,10 +2,10 @@
|
||||
opensuse-leap
|
||||
[positioning:default]
|
||||
linux
|
||||
osx-10.12 ci
|
||||
macos ci
|
||||
winrt
|
||||
[positioning:fake]
|
||||
osx-10.12 ci
|
||||
macos ci
|
||||
[modalWithChildWindow]
|
||||
# QTBUG-66851
|
||||
# QTBUG-69160
|
||||
|
@ -3061,6 +3061,9 @@ void tst_QMatrixNxN::columnsAndRows()
|
||||
QVERIFY(m1.row(3) == QVector4D(4, 8, 12, 16));
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
// Test converting QMatrix objects into QMatrix4x4 and then
|
||||
// checking that transformations in the original perform the
|
||||
// equivalent transformations in the new matrix.
|
||||
@ -3107,6 +3110,8 @@ void tst_QMatrixNxN::convertQMatrix()
|
||||
QVERIFY(qFuzzyCompare(float(m5.dx()), float(m7.dx())));
|
||||
QVERIFY(qFuzzyCompare(float(m5.dy()), float(m7.dy())));
|
||||
}
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
|
||||
// Test converting QTransform objects into QMatrix4x4 and then
|
||||
// checking that transformations in the original perform the
|
||||
|
@ -1704,8 +1704,11 @@ void tst_QPainter::combinedMatrix()
|
||||
|
||||
QTransform ct = p.combinedTransform();
|
||||
#if QT_DEPRECATED_SINCE(5, 13)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
QMatrix cm = p.combinedMatrix();
|
||||
QCOMPARE(cm, ct.toAffine());
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
|
||||
QPointF pt = QPointF(0, 0) * ct.toAffine();
|
||||
@ -2245,7 +2248,7 @@ void tst_QPainter::clippedPolygon()
|
||||
{
|
||||
QFETCH(QSize, imageSize);
|
||||
QFETCH(QPainterPath, path);
|
||||
QPolygonF polygon = path.toFillPolygon();
|
||||
QPolygonF polygon = path.toFillPolygon(QTransform());
|
||||
QFETCH(QRect, clipRect);
|
||||
QPainterPath clipPath;
|
||||
clipPath.addRect(clipRect);
|
||||
@ -3066,7 +3069,7 @@ void tst_QPainter::fpe_steepSlopes_data()
|
||||
const qreal dsin = 0.000014946676875461832484392500630665523431162000633776187896728515625;
|
||||
const qreal dcos = 0.9999999998882984630910186751862056553363800048828125;
|
||||
|
||||
const QTransform transform = QTransform(QMatrix(dcos, dsin, -dsin, dcos, 64, 64));
|
||||
const QTransform transform = QTransform(dcos, dsin, -dsin, dcos, 64, 64);
|
||||
const QLineF line(2, 2, 2, 6);
|
||||
|
||||
QTest::newRow("task 207147 aa") << transform << line << true;
|
||||
@ -4064,7 +4067,7 @@ void tst_QPainter::drawPolygon()
|
||||
path.moveTo(2, 34);
|
||||
path.lineTo(34, 2);
|
||||
|
||||
QPolygonF poly = stroker.createStroke(path).toFillPolygon();
|
||||
QPolygonF poly = stroker.createStroke(path).toFillPolygon(QTransform());
|
||||
|
||||
img.fill(0xffffffff);
|
||||
QPainter p(&img);
|
||||
@ -4133,7 +4136,10 @@ void tst_QPainter::inactivePainter()
|
||||
p.setClipping(true);
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 13)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
p.combinedMatrix();
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
p.combinedTransform();
|
||||
|
||||
@ -4142,7 +4148,10 @@ void tst_QPainter::inactivePainter()
|
||||
|
||||
p.device();
|
||||
#if QT_DEPRECATED_SINCE(5, 13)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
p.deviceMatrix();
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
p.deviceTransform();
|
||||
|
||||
@ -4168,7 +4177,10 @@ void tst_QPainter::inactivePainter()
|
||||
p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false);
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 13)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
p.resetMatrix();
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
p.resetTransform();
|
||||
p.rotate(1);
|
||||
@ -4186,8 +4198,11 @@ void tst_QPainter::inactivePainter()
|
||||
p.setWindow(QRect(10, 10, 620, 460));
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 13)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
p.worldMatrix();
|
||||
p.setWorldMatrix(QMatrix().translate(43, 21), true);
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
p.setWorldMatrixEnabled(true);
|
||||
|
||||
|
@ -713,9 +713,5 @@ QPainterPath Paths::bezierQuadrant()
|
||||
path.closeSubpath();
|
||||
}
|
||||
|
||||
QMatrix m(2, 0,
|
||||
0, 2,
|
||||
0, 0);
|
||||
|
||||
return path;
|
||||
}
|
||||
|
@ -152,9 +152,9 @@ void tst_QPathClipper::initTestCase()
|
||||
for (int i = 0; i < paths.size(); ++i) {
|
||||
QRectF bounds = paths[i].boundingRect();
|
||||
|
||||
QMatrix m(1, 0,
|
||||
0, 1,
|
||||
-bounds.center().x(), -bounds.center().y());
|
||||
QTransform m(1, 0,
|
||||
0, 1,
|
||||
-bounds.center().x(), -bounds.center().y());
|
||||
|
||||
paths[i] = m.map(paths[i]);
|
||||
}
|
||||
|
@ -331,17 +331,13 @@ void tst_QTransform::mapToPolygon()
|
||||
|
||||
void tst_QTransform::qhash()
|
||||
{
|
||||
QMatrix m1;
|
||||
m1.shear(3.0, 2.0);
|
||||
m1.rotate(44);
|
||||
QTransform t1;
|
||||
t1.shear(3.0, 2.0);
|
||||
t1.rotate(44);
|
||||
|
||||
QMatrix m2 = m1;
|
||||
|
||||
QTransform t1(m1);
|
||||
QTransform t2(m2);
|
||||
QTransform t2 = t1;
|
||||
|
||||
// not really much to test here, so just the bare minimum:
|
||||
QCOMPARE(qHash(m1), qHash(m2));
|
||||
QCOMPARE(qHash(t1), qHash(t2));
|
||||
}
|
||||
|
||||
@ -376,6 +372,9 @@ void tst_QTransform::scale()
|
||||
QVERIFY( QTransform::fromScale( 1, 1 ) == QTransform());
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
void tst_QTransform::matrix()
|
||||
{
|
||||
QMatrix mat1;
|
||||
@ -414,7 +413,7 @@ void tst_QTransform::matrix()
|
||||
|
||||
QRect rect(43, 70, 200, 200);
|
||||
QPoint pt(43, 66);
|
||||
QCOMPARE(tranInv.map(pt), matInv.map(pt));
|
||||
QCOMPARE(tranInv.mapRect(rect), matInv.mapRect(rect));
|
||||
QCOMPARE(tranInv.map(pt), matInv.map(pt));
|
||||
|
||||
QPainterPath path;
|
||||
@ -431,6 +430,8 @@ void tst_QTransform::testOffset()
|
||||
const QMatrix &aff = trans.toAffine();
|
||||
QCOMPARE((void*)(&aff), (void*)(&trans));
|
||||
}
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
|
||||
void tst_QTransform::types()
|
||||
{
|
||||
|
@ -32,6 +32,9 @@
|
||||
#include <qmath.h>
|
||||
#include <qpolygon.h>
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 15)
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
|
||||
class tst_QWMatrix : public QObject
|
||||
{
|
||||
@ -324,5 +327,8 @@ void tst_QWMatrix::mapPolygon()
|
||||
}
|
||||
}
|
||||
|
||||
QT_WARNING_POP
|
||||
#endif
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QWMatrix)
|
||||
#include "tst_qwmatrix.moc"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user