QFormLayout did not honor the vertical expanding state for widgets.
Therefore e.g. a QTextEdit was not expanded vertically when it was
inside a QFormLayout but worked fine inside a QGridLayout.
It was honored when a stretch factor was set though.
Fix it by not adding a dummy stretch item when one item is expanding.
[ChangeLog][QtWidgets][QFormLayout] Honor the vertical expanding state
of a widget inside a QFormLayout.
Fixes: QTBUG-72676
Change-Id: If4456145918afa5a10435063770cc93bb9315fbe
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
When an icon was specified with a style sheet, the content rect for the
toolbox label was not adjusted which results in an overlapping of the
text and the icon.
Fix it by adjusting the rect used by drawing the label when an icon is
specified with a style sheet.
Fixes: QTBUG-40871
Change-Id: I088b319e6355d78066d0bc4472882a5d9a599091
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Vitaly Fanaskov <vitaly.fanaskov@qt.io>
The evaluation mode of Qt hasn't been used since quite some time. Let's
just remove the remaining logic from the code base.
Change-Id: I61a2c432cbae78bf973f882848b3732e27431351
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When a modal dialog is called from a slot connected to the
editingFinished signal, the chain of events resulting from the focus
returning to this widget will make the editingFinished signal emitted
again. This patch uses a new variable to keep track of the fact that
there was a modification. Once editingFinished was emitted, that flag
is cleared so next time the signal will be emitted again only if a
modification was made to the line edit content.
[ChangeLog][QtWidget][QLineEdit] Behavior change: now the
editingFinished signal is emitted only once after the line edit content
was edited.
Fixes: QTBUG-40
Change-Id: Ia4760bad8717f1758c3939132c446b4b4c6cd498
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Similar to the kms backend a flip event handler can be retrieved using
the drmEvent API to implement vsync.
For this to work the acquire calls need to be done manuallly and the
automatic acquiring needs to be disabled.
Change-Id: I670d288ef68eb49846108db2a31993c6167d9313
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
With verbosity level 0, only the resolved properties are included
in the debug output, which is useful when debugging font resolving.
With verbosity level 1, the family, size, and weights are included,
plus any resolved property that is different from the default value.
Verbosity level 2, the QDebug default, has been kept unchanged,
except removing quotes and spaces by adding nospace() and qPrintable.
Verbosity level 3 includes all properties, regardless of whether or
not they have been resolved.
Levels 1 and 3 also include the resolve mask, to aid debugging.
This gives the following results for a QFont set to 100pt:
QFont(100pt)
QFont(".SF NS Text", 100pt, Weight::Normal, resolveMask=SizeResolved)
QFont(.SF NS Text,100,-1,5,50,0,0,0,0,0)
QFont(".SF NS Text", 100pt, StyleHint::AnyStyle, StyleStrategy::PreferDefault,
Weight::Normal, StyleNormal, underline=false, overline=false, strikeOut=false,
fixedPitch=false, AnyStretch, kerning=true, MixedCase, letterSpacing=0
(PercentageSpacing), PreferDefaultHinting, styleName="", resolveMask=SizeResolved)
Change-Id: Ib4aebd7346ef4a2946cc4450c12730cf7844c3bc
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
The Mir display server is now Wayland compatible, so a
dedicated Mir client library is no longer necessary.
[ChangeLog][Platform Specific Changes][Mir] The Mir platform plugin has been
removed: use the Wayland plugin when connecting to a Mir display server.
Change-Id: Ibc77698dd45a1afaf29f0d57b5e5cf7bd91735f5
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Switch to always using FT_Render_Glyph for all glyph types.
Change-Id: I9427bbffd30a8d1ca92d7ab9a92df8761f6b89c3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Nothing references this, not even commented out debug code, and some
functions doesn't even have implementations.
Change-Id: I344de26a650b1180f0da78eaece5bd5688fdcd95
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Add a simple private QBasicMutexLocker class, and let the
QOrderedMutexLocker operate on a QBasicMutex.
This allows the compiler to inline more things when handling
connections and speeds up activate() a bit more.
without change with change
string based connect: 3621 3368
pointer based connect: 4341 3919
not connected: 433 437
disconnected: 551 538
Change-Id: If979337891178aaeb0b3340b6d4f68b6f86b0260
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The main difference is that QObject itself also holds on reference
on the structure.
Also rename the orphaned flag to objectDeleted for clarity.
Change-Id: Ief9b9ff9c8b9cc3630dcfd29806ed24cd07150e4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Adn create that data structure on demand on the heap.
This reduces the size of QObjectPrivate if there are no
connections. If we have connections, it'll use the same
amount of allocations and memory as before.
Change-Id: I900f6980a2cd8a5f72c3ad18697b5dd49100217d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Squeezes another percent of performance out of
QMetaObject::activate().
Change-Id: I620b8c578681280efcc9bec50cfb1020d2afc928
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Refactor activate(), so that we eliminate almost all
checks for signal hooks in the common case.
Here are the benchmark numbers showing the improvement
for 100M signal emissions
without change with change
string based connect: 3836 3693
pointer based connect: 4571 4510
not connected: 479 433
disconnected: 559 522
Change-Id: I394e6ea5d5bc96e298e8cc0c763eed78c8041876
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Measurements show that it's just almost as fast to simply query
the connectionlist directly and avoid both the memory
overhead of the bitfield and the associated bookkeeping.
For connected signals, the difference is not relevant at all.
With a signal that was never connected, removing the bitfield will
cause signal emission to be ~2.5% faster. And if you ever disconnect
from a signal, the bitfields might not be accurate and this can
cause a major slowdown.
Here are some numbers to validate this. All times are measured
in ms for 100M signal emissions:
without change with change
string based connect: 3817 3836
pointer based connect: 4552 4571
not connected: 493 479
disconnected: 2113 559
Change-Id: Ia2c85036afaa7f991b883c8ff812f69cf4580f7e
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: hjk <hjk@qt.io>
And simply emit the signal spy and tracing callbacks in
that code path as well.
Change-Id: I17f65055c7044caf1be58fac94bb7fe3487f3060
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Consistently use space before line continuation marker.
Change-Id: Ib87d45f76b6fd174c78a04335f06b4dbed1bed13
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Adds QColorSpace and QColorTransform classes,
and parsing of a common subset of ICC profiles
found in images, and also parses the ICC profiles
in PNG and JPEGs.
For backwards compatibility no automatic color
handling is done by this patch.
[ChangeLog][QtGui] A QColorSpace class has been added,
and color spaces are now parsed from PNG and JPEG images.
No automatic color space conversion is done however, and
applications must request it.
Change-Id: Ic09935f84640a716467fa3a9ed1e73c02daf3675
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
The tails was off since f370410097
Fixes: QTBUG-73440
Change-Id: If86178c6cad3f87d9b5f0f89e90354d49cd386a4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Mark some long obsolete functions as deprecated so the can be removed
with Qt6:
- QGraphicsItem::matrix()/setMatrix()/resetMatrix()/sceneMatrix()
- QGraphicsItemAnimation::reset()
- QGraphicsScene::isSortCacheEnabled()/setSortCacheEnabled()
- QAbstractItemDelegate::elidedText()
- QAbstractItemView::setHorizontalStepsPerItem()/horizontalStepsPerItem()
- QAbstractItemView::setVerticalStepsPerItem()/verticalStepsPerItem()
Change-Id: I7244078552ebeac9dfbcf3291b3ae0c44cc2c1d9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.
Change-Id: I5e5bc1ae892f270d7c3419db1c179053561f1b26
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Cleanup the QtGui documentation:
- use new signal/slot syntax
- use range-based for loop instead foreach
Change-Id: Id49ff2cbe78f28a06ca0fb63e6ca6f7dc2736f7b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Cleanup the QtWidgets documentation:
- use new signal/slot syntax
- use range-based for loop instead foreach
Change-Id: I621b1ddac108d3df676209241d93d9b4f04a25fe
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Mark the two long obsolete (and empty) functions as deprecated so they
can be removed with Qt6:
- setStartTime()/startTime()
Change-Id: I7ee1d99ff194860e41723909f81adc181a71ec7c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.
Change-Id: Ieffbfffa76e3018257b667a3e8ad6e3b88486cde
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.
Change-Id: Id8056dc2364a372e40bc04e8cb9fcc443e49fb18
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Mark some long obsolete functions as deprecated so the can be removed
with Qt6:
- addRoundRect()
- subtractedInverted()
Change-Id: I4707c07e983a4ac65ec3706d25b09ec01a9de62c
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Mark some long obsolete functions as deprecated so the can be removed
with Qt6:
- initFrom()
- setMatrix()/matrix()/deviceMatrix()/resetMatrix()
- setWorldMatrix()/worldMatrix()/combinedMatrix()
- setMatrixEnabled()/matrixEnabled()
- drawRoundRect()
- setRedirected()/redirected()/restoreRedirected()
Change-Id: I0daed72c0ef06c192309f02366a7201154e75ac9
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
QPixmapCache::find(QString) and QPixmapCache::find(QString, QPixmap&)
are deprecated since Qt4 times.
Explicit mark them as deprecated so they can be removed with Qt6.
Change-Id: Iaf185f69afe02203559a1c812fbb4a95c9049a1d
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
With Qt 6 in sight, people need to start moving away from
their deprecated APIs, as we want to remove them all in 6.0.
We are marking deprecated APIs with deprecation attributes,
but by default we're disabling deprecation warnings, making
them an opt-in by the user.
We need to do the opposite: make deprecation warnings enabled
by default, and have an opt-out define.
[ChangeLog][QtCore][Important Behavior Changes] Qt now
enables by default warnings when using APIs marked as
deprecated. It is possible to disable such warnings by
defining the QT_NO_DEPRECATED_WARNINGS macro. The old
QT_DEPRECATED_WARNINGS macro which was used to enable
this warning now has no effect (warnings are automatically
enabled).
Task-number: QTBUG-73048
Change-Id: Ie2b024fd667eb876b6ac9054cbbbc5a455cb9d5c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
[ChangeLog][QtNetwork][SSL] The Schannel backend now supports ALPN and
thus HTTP/2.
Change-Id: I1819a936ec3c9e0118b9dad12681f791262d4db2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Mark functions which were obsolete since Qt4 times as deprecated so they
can be removed with Qt6:
- QBitmap::transformed(QMatrix)
- QImageIOHandler::name()
- QImageWriter::setDescription()
- QImageWriter::description()
- QPixmap::fill()
- QPixmap::grabWindow()
- QPixmap::grabWidget()
- QTransform::det()
Change-Id: I8523065eb59a3242c4c4c195f31ae15c4dcbf8f7
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Mark some long obsolete functions as deprecated so the can be removed
with Qt6:
- QTextFormat::setAnchorName()/anchorName()
- QTextList::isEmpty()
Change-Id: Ic1f5317980d116c846def3645d2a6cd61ba8679d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.
Change-Id: I914b6b2151554c06acc2d244eff004524cbb9a82
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.
Change-Id: I8d7e9c838da1399988a830669d58fc7f2f010696
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.
Change-Id: I101a61f5fad71cadb73bba9a8fd5dce6cc0836d0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
This checks that intenalHwnd in QEventDispatcherWin32::remainingTime is
initialized. If calling remaningTime, before createInternalHwnd
is called, the timeout member in the WinTimerInfo struct is not
initialized and contains a random value. This adds a check for that and
in that case returns the requested timer interval as the timer has not
yet been started. createInternalHwnd is called on the first request to
process events.
It also adds a test for checking the remaining time. But the issue can
only be seen if solely running the remainingTimeInitial test in
tst_QTimer. If running the test along side another test the other
test likely calls processEvents indirectly, which hides the issue. I
don't know if this is an issue in practice (the bug has been there
for as long a the git history goes back, 2011), but it causes the
basic_chrono test to fail if run as the only test.
Change-Id: I05c35105da778912dedf8d749aa7c953841d986e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When using QMouseEvent::pos to change the position of a widget, the
widget may shift in a shaking motion. This is warned about in its
documentation. For example if the system has a bit of load, we might
receive multiple mouse move events from the OS, before QMdiSubWindow
gets the first move event. In that case the first mouse move is ok,
but subsequent move events, will use a ::pos value that now does not
make sense as the position of the window have changed. The fix is to
use QMouseEvent::globalPos.
Fixes: QTBUG-72646
Change-Id: I3211cc6627ff8fe26c9520ad0457872f01c32471
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
If later we try to introduce multiple ocsp support, the API returning
a single response will be somewhat broken and illogical/not clear
how to use at all. Let's return a vector of responses (for now it's
one, can change in future). This makes isNull() redundant on a
response, also, we now need 'subject' - a cert that response was for.
Change-Id: Ibbd9dec163b53906b2fd61fa31c43db7d08adc4d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This patch updates the QPlatformDialogHelper class to use
QRegularExpression in place of QRegExp which is to be considered
deprecated.
Change-Id: I8a79c5425217d18a3210c87f7f505b1aa288801d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Following the update of qtbase because of QTBUG-72539, the code using
wildcardToRegularExpression must be updated as anchoredPattern is not
needed anymore.
Task-number: QTBUG-72539
Change-Id: I4989b42c737eb17d65c6b1d3cefab3ffd2163bfc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
QImage::convertTo can be used to change the format of an image in place.
[ChangeLog][QtGui][QImage] A new method convertTo is has been
added to change the format of a QImage in place.
Change-Id: Ib31379085c4b97e56c3cb569f144062bcd3fdc20
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Add those to be consistent with the rest of Qt and the STL.
Fixes: QTBUG-32793
Change-Id: Ib712b7b16b8be6627aeac79b90c6e9cdf92b60e0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>