| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Task-number: QTBUG-73202
Change-Id: Id0f760f0dd41079c823234b916b5419bf8c68552
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a button is pressed long enough
(QStyleHints::mousePressAndHoldInterval()) and there is a connection
(e.g. signal handler) to the pressAndHold() signal, it is emitted.
If nothing is connected to the signal, clicked() is emitted.
Before this patch, QQuickAbstractButton used
QObjectPrivate::isSignalConnected() to check whether or not anything
was connected to pressAndHold(). The problem with this function is
described by Olivier:
"[...] there is an optimisation for the first 64 signals
we store a bit in a 64bit integer to quickly see if a signal is
connected. There is also the problem that it can return true even
if the signal has been disconnected."
This is also mentioned in a comment in the code:
Returns \c true if the signal with index \a signal_index from object
\a sender is connected. Signals with indices above a certain range
are always considered connected (see connectedSignals in
QObjectPrivate).
When 5adce04 added inset signals to QQuickControl, it meant that
signals in QQuickAbstractButton (which derives from QQuickControl) were
pushed outside of that 64 signal range, resulting in the
IS_SIGNAL_CONNECTED macro returning true.
This patch fixes the issue by using QObject::isSignalConnected(), which
does not use the 64 signal optimization.
Fixes: QTBUG-72811
Change-Id: Ic6e54d6cab062e528522ef7e3cf27c1023d31347
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't add duplicate change listeners, since only one of them will be
removed.
Coincidentally, this is the same fix as d56c193e, which was reverted
for unrelated reasons as part of a bulk revert in d3545dbd.
Change-Id: If6fde09f884929c7928f3a1f78625559c9fcbf07
Fixes: QTBUG-72746
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|
|
|
|
| |
Change-Id: I6878b06d67b6066da1ca187cd879b77b96539ddc
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
c2fd8f7d made the following changes to the geometry calculation of
QQuickDialogButtonBox's contentItem:
@@ -244,11 +252,8 @@ void QQuickDialogButtonBoxPrivate::resizeContent()
return;
QRectF geometry = q->boundingRect().adjusted(q->leftPadding(), q->topPadding(), -q->rightPadding(), -q->bottomPadding());
- if (alignment != 0) {
- qreal cw = (alignment & Qt::AlignHorizontal_Mask) == 0 ? q->availableWidth() : contentItem->property("contentWidth").toReal();
- qreal ch = (alignment & Qt::AlignVertical_Mask) == 0 ? q->availableHeight() : contentItem->property("contentHeight").toReal();
- geometry = alignedRect(q->isMirrored() ? Qt::RightToLeft : Qt::LeftToRight, alignment, QSizeF(cw, ch), geometry);
- }
+ if (alignment != 0)
+ geometry = alignedRect(q->isMirrored() ? Qt::RightToLeft : Qt::LeftToRight, alignment, QSizeF(contentWidth, contentHeight), geometry);
It turns out that this breaks the use case of a fixed width box (e.g.
where a Dialog is assigned a width of 400 and the box assumes that
width) with a single button.
For example, in the case of the Default style,
QQuickDialogButtonBox::contentWidth is 100 because Button's
implicitWidth is 100. Since contentWidth is "used for calculating the
total implicit width" of the box, it's not useful for positioning
items which have an explicit width. The result is that
QQuickDialogButtonBox thinks the contentItem is smaller than it really
is, and therefore the ListView is positioned too far to the right.
Only the Default and Universal styles are affected, as they are the
only styles that resize the button to cover half of the button box.
This patch fixes the issue by reverting the code above to its original
state, where the content size of the contentItem is used instead
of the contentWidth of the box.
Change-Id: Idd2f94f3b4d3413fc2057c0ade2efdd66d701c08
Fixes: QTBUG-72372
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|
|
|
|
|
|
|
|
| |
Don't propagate wheel events when reaching the limits.
Sync the behavior with Qt widgets and SpinBox/ComboBox.
Task-number: QTBUG-72750
Change-Id: Iefb8562c1d9632badc4a39bc4c301bd96b8a515b
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After 6858d4e9, the background of the Material style TextField does not respect
the width of the control if the control is resized (e.g. due to being in a
layout).
- The first time resizeBackground() is called, !extra.isAllocated() returns
true - that is, extra has not been allocated yet.
- The if statement is executed and the background's width is set to the
available width of the control (e.g. 120).
- As a result of the background's width being set, its widthValid flag is set
to true. This would previously be undone directly afterwards by setting
widthValid flag to false.
- In the case of the test case, the implicitWidth was already 120,
so geometryChanged is not emitted. However, when the height of the background
is set, this *does* cause itemGeometryChanged() to be called, which in turn
does the following:
extra.value().hasBackgroundWidth = p->widthValid;
extra.value().hasBackgroundHeight = p->heightValid;
resizeBackground();
So now all of the following checks evaluate to false:
(!p->widthValid || !extra.isAllocated() || !extra->hasBackgroundWidth)
This prevents the background from being resized.
This patch fixes the issue by unsetting the widthValid (and heightValid) flags
of the background directly after setting its width. To be safe, it also only
unsets it if we were the ones to set it. By doing this, the check mentioned
above succeeds because p->widthValid and extra->hasBackgroundWidth are both now
false.
It also adds some extra safety into itemGeometryChanged() that ensures that
extra.value().hasBackgroundWidth is only set if necessary, and therefore
prevents the extra data from unnecessarily being allocated. This is not
necessary for the fix, but feels like the right thing to do.
Change-Id: I051e281718bd8a2a20c100767d929fb71497ce1b
Fixes: QTBUG-71875
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@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: I51c895560866079c9cc27fa076e29fa4546ecf8f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\
| |
| |
| | |
Change-Id: I7fe9e74beff3cdbfbf02ee0f129a8204ad31046e
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts the following commits:
d5cb26bc56a3b6f6e99c88654d4f7a65f43551ac - Menu: ensure the correct delegates are used when created via Component
d923dd467c1aeb3e195a09949b04862084002f88 - MenuBar: ensure the correct delegates are used when created via Component
d56c193eb4ceb640611d66f22e1f26aae91cd7d1 - QQuickPopupPositioner: avoid adding duplicate item change listeners
567a2de8cd493aabe0055d6dbc367b39447e70dd - Stabilize tst_qquickmenubar
953fbac6131823e4fce0eb4707a854469c4c04ff - Fix Instantiator-created MenuItems disappearing
936d31179d44220571ded15840bedeccb581c83b - tst_qquickmenu: add a test for MenuItems before and after a Repeater
fc1832810f6c09505d9413685ed0b2d6295bea4a - QQuickMenuBar: fix menu not opening
The fix for QTBUG-67559 has caused lots of issues, with the latest being a
crash right before the 5.12 release. The bug that they fix is a P2,
so it's not worth the hassle. The patches might be able to be resubmitted
to dev after the crash is fixed.
Change-Id: Ic192c7a302176bcdb2503b636b3462b10898a2ba
Fixes: QTBUG-71770
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a Menu is declared within a MenuBar, a MenuBarItem has to be created for
it. Creation takes the following steps:
- 1 Begin creation of the item
- 1.1 Set the parent of the MenuBarItem to the MenuBar
- 2 Set the menu on the item
- 3 Complete creation of the item
- 4 Add the item
When setting the parent of the MenuBarItem, the following call stack can be
observed:
1 QQuickContainer::itemChange qquickcontainer.cpp 757 0x7fff6e5f4544
2 QQuickItemPrivate::itemChange qquickitem.cpp 6213 0x7fff6aa226f7
3 QQuickItemPrivate::addChild qquickitem.cpp 2964 0x7fff6aa1e663
4 QQuickItem::setParentItem qquickitem.cpp 2753 0x7fff6aa0f57c
5 QQuickMenuBarPrivate::beginCreateItem qquickmenubar.cpp 100 0x7fff6e627c08
6 QQuickMenuBarPrivate::createItem qquickmenubar.cpp 115 0x7fff6e627c98
7 QQuickMenuBarPrivate::contentData_append qquickmenubar.cpp 263 0x7fff6e6285d9
In particular, the following function is called:
void QQuickContainer::itemChange(ItemChange change, const ItemChangeData &data)
{
Q_D(QQuickContainer);
QQuickControl::itemChange(change, data);
if (change == QQuickItem::ItemChildAddedChange && isComponentComplete() && data.item != d->background && data.item != d->contentItem) {
if (!QQuickItemPrivate::get(data.item)->isTransparentForPositioner() && d->contentModel->indexOf(data.item, nullptr) == -1)
addItem(data.item);
}
}
This check is for items that are added after component completion of the
control (QQuickMenuBar), as there is a isComponentComplete() check.
Before d923dd46, QQuickMenuBarItems were constructed the moment their
QQuickMenus were appended to QQuickMenuBar's contentData, which was before
component completion. This meant that the isComponentComplete() check above
failed as expected and the item was instead added after its creation process
was completed (step #4 in the list above):
void QQuickMenuBarPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj)
{
QQuickMenuBar *menuBar = static_cast<QQuickMenuBar *>(prop->object);
if (QQuickMenu *menu = qobject_cast<QQuickMenu *>(obj))
obj = QQuickMenuBarPrivate::get(menuBar)->createItem(menu);
QQuickContainerPrivate::contentData_append(prop, obj); // leads to addItem() being called
}
Part of the process of an item being added to QQuickMenuBar involves connecting
to the signals of its corresponding QQuickMenu (if it has a menu). Quoting the
code from QQuickMenuBar::itemAdded():
if (QQuickMenu *menu = menuBarItem->menu())
QObjectPrivate::connect(menu, &QQuickPopup::aboutToHide, d, &QQuickMenuBarPrivate::onMenuAboutToHide);
After d923dd46, QQuickMenuBarItems are now constructed *after* component
completion to ensure that delegates declared outside of the menu bar have
been completed. This means that the isComponentComplete() check in
QQuickContainer::itemChange() no longer fails and the item is added
before its QQuickMenu is set on it (step #2). As a result, it never
connects to the QQuickPopup::aboutToHide() signal and hence it stays
activated/highlighted even after the menu has been dismissed, which
results in having to click twice on the QQuickMenuBarItem to open
the menu the next time.
This patch fixes the issue by simply setting the menu on the item before
setting its parent:
- 1 Begin creation of the item
- 1.1 Set the menu on the item
- 1.2 Set the parent of the MenuBarItem to the MenuBar
- 2 Complete creation of the item
- 3 Add the item
This ensures that the item has a menu and the connection is made.
Change-Id: I93edf7e5a8616a851595ce28ed43f0348078f0b5
Fixes: QTBUG-71583
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
when setting null to footer
Fixes: QTBUG-71444
Change-Id: Id4b0a3fd7aa104357674b4e2be6206894f8878da
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When d5cb26bc fixed a bug in Menu, it also broke the use case
of having an Instantiator create menu items. Using an Instantiator
like this allows users to create a "Recent Files" menu, for example.
The issue was that we would indiscriminately recreate items, even
those owned by an Instantiator.
This patch avoids recreating items owned by Instantiators.
It also adds a logging category for Menu, to aid debugging.
Fixes: QTBUG-71066
Change-Id: Ie0e46de1cbfaee81b43d63f3143435f2514371d5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change makes all Qt Quick Controls 2 imports match the current
Qt minor version, which is 12 as of this patch.
It also updates all other Qt Quick imports to match.
This will also make future version bumps easier as all version numbers
in existing code/docs will match.
The following commands were used to verify that no old versions remain:
for i in `seq 0 11`; do git grep "import QtGraphicalEffects.*1.$i$"; done
for i in `seq 0 11`; do git grep "import QtQuick 2.$i$"; done
for i in `seq 0 11`; do git grep "import QtQuick.Layouts 1.$i$"; done
for i in `seq 0 5`; do git grep "import QtQuick.Controls.*2.$i$"; done
for i in `seq 0 11`; do git grep "import QtQuick.Templates 2.$i as T$"; done
[ChangeLog] From Qt 5.12 onwards, all import versions in
Qt Quick Controls 2 follow the same minor version as Qt's
minor version number. For example, the import version for Qt 5.12 is:
"import QtQuick.Controls 2.12".
Change-Id: I6d87573f20912e041d9c3b7c773cc7bf7b152ec3
Fixes: QTBUG-71095
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The crash was not 100% reliable and depends on the order in the hash().
Something in beginDeferred() has a side effect on deferData->bindings
and an element gets deleted. This causes a crash while iterating (++it).
Therefore we do a copy of the hash.
I added a regression test. The test did only crash for SpinBox and it did
only crash roughly half the time.
Task-number: QTBUG-71942
Change-Id: I339e0a4382f97db44f6ff2e9f07f2be7278d1e24
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This patch updates the QQuickComboBox code to use QRegularExpression in
place of QRegExp which is to be considered deprecated.
Change-Id: I6551fac80b071073e3cd09d2016ef99df510e8ff
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The current documentation says:
"All controls, except non-interactive indicators,
do not let clicks and touches through to items below them.
For example, if Pane is used as the header or footer of
ApplicationWindow, items underneath it will not get mouse
or touch events."
This can be confusing, because a Pane declared as a child
of a MouseArea is "below" the MouseArea in code, but is
"above" the MouseArea in the scene.
Add a code example to make it less ambiguous.
Also, link to the Event Handling section from Pane's docs.
Task-number: QTBUG-71735
Change-Id: I97f4d6501af410bd5d5c0c0e48b14ca65605357d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
GCC 4.8 doesn't like using QPointer in signal connections.
Change-Id: Idc61984b155b0af8d1afb9d43c9eaf44ca9073cd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A ScrollView lets you add the Flickable that should be decorated as
a child. If that flickable has one (and only one) child, the
contentWidth/Height properties of the ScrollView will be calculated
by using the implicit size of that child (unless you assign something
else to those properties explicitly).
This logic goes wrong when the flickable is a TableView for several
reasons. The first is that TableView will populate the content item
dynamically, and for the first delegate item added, the content size
of the ScrollView will be set to be the size of this item (since the
TableView only got one child at that point). The second is that
TableView has its own set of contentWidth/Height properties. And those
properties are not respected by ScrollView. So even if TableView set
the contentWidth/Height to be the size of the table, this will not
be used by ScrollView. The result is that ScrollView concludes that
the content item is empty, which means that no scrollbars end up
visible or usable.
This patch will fix this by overriding getContentWidth()/Height()
from QQuickPane. The implementation will check if the flickable
has valid contentWidth/Height values set, and if so, use
them. Otherwise it will fall back to the old QQuickPane implementation
(which will inspect the children etc).
Fixes: QTBUG-71974
Change-Id: I027b9b939a10df2aeb816dea596adcb452f914b9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|/
|
|
|
|
|
|
| |
Introduce casts where required.
Fixes: QTBUG-71952
Change-Id: I63a99d6918bc00367439e967e3c45a733b41c482
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/quicktemplates2/qquickmenubar.cpp
src/quicktemplates2/qquickmenubar_p.h
src/quicktemplates2/qquickmenubar_p_p.h
Change-Id: I5c2115f05826f68f1b1f5ce6762273cd91e6997e
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The issue is that QQuickPopupPositioner::setParentItem() is called when
the delegate has been created and assigned to the Repeater, then the
ancestor listeners are added, and then straight after that, the
benchmark item itself is parented to benchmarkRoot, which causes
QQuickPopupPositioner::itemParentChanged() to be called, which adds a
single ancestor listener: the QQuickRootItem (which was just added
previously as a result of QQuickPopupPositioner::setParentItem()
being called).
The item could be arbitrarily high up in the ancestry tree, so there's
no nice (i.e. fast) way of checking for duplicates in Controls 2
itself. Instead, use the new
QQuickItemPrivate::updateOrAddItemChangeListener() function which only
adds the listener if it doesn't already exist.
This avoids a heap-use-after-free in qmlbench when creating Menus.
Task-number: QTBUG-70729
Change-Id: I0efaa10167c4c9a9c4c1b65a5c34e683c3ec5732
Fixes: QTBUG-70729
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Don't add items until we're complete, as the delegate could change in
the meantime. Instead, add them to contentData and create them when
we're complete.
A similar fix was already done for Menu in d5cb26bc.
Task-number: QTBUG-67559
Change-Id: Idb43b7a69fcf1c1ad6396c73a3c090b92e460ab8
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QV4::Object::getIndexed(uint) is deprecated in favor of get(uint).
On this occasion, fix signedness warnings by changing j and len to be of
type uint.
Fixes:
qquickstackview_p.cpp:103:66: warning: ‘QV4::ReturnedValue QV4::Object::getIndexed(uint, bool*) const’ is deprecated [-Wdeprecated-declarations]
QV4::ScopedValue value(scope, array->getIndexed(j));
QT_DEPRECATED inline ReturnedValue getIndexed(uint idx, bool *hasProperty = nullptr) const
qquickstackview_p.cpp:107:78: warning: ‘QV4::ReturnedValue QV4::Object::getIndexed(uint, bool*) const’ is deprecated [-Wdeprecated-declarations]
QV4::ScopedValue props(scope, array->getIndexed(j + 1));
QT_DEPRECATED inline ReturnedValue getIndexed(uint idx, bool *hasProperty = nullptr) const
Change-Id: I6c0b0d54dd4119a2531f847788c531daf92e6954
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I3fa0011d8b69db2a004feb177a7f89ccb75a724d
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Don't add items until we're complete, as the delegate could change in
the meantime. Instead, add them to contentData and create them when
we're complete.
Task-number: QTBUG-67559
Change-Id: I5f42129f49de861ff5f15d0069daeda0b4e5017c
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ic1cc85ed76c3ee534b7dda43449140a791cff36d
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QPlatformDialogHelper's meta-object is added to QQuickDialogButtonBox's
meta-object as a related meta object, and all of its enums are merged
into the same namespace by the QML engine. This produces a conflict with
the enum values of the ButtonLayout in QQuickDialogButtonBox, which is
a duplicate of the one that's already pulled in.
Fixes: QTBUG-70141
Task-number: QTBUG-70141
Change-Id: Ib33dc8ddbe8aa80d03183eb23861658c9e978f04
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This ensures that the contentItem is created (lazily) in cases like
SplitView, which creates an empty QQuickContentItem. If we don't do
this, items added to SplitView don't show up because it has no
contentItem.
Change-Id: Ide3ce45a2173cc13ee7b194ad6dc501287d6fc6c
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
|
|\|
| |
| |
| | |
Change-Id: I828b8ea2fef35e4e7ab0bb594e683f8643c793a1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Check transitioner for nullptr before access.
The transitioner created only on some transition setter called
and remain nullptr on base unstyled StackView from templates.
Task-number: QTBUG-69897
Change-Id: I51564c5e7195112764f5a63b3b48c302a6d29146
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
|
|\|
| |
| |
| | |
Change-Id: Icd5d8a4292be3a335000a7bd0f30384ad83ff36d
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As the styles are subject to change over time, it's best to use the
most fine-grained properties for specifying padding (topPadding,
bottomPadding, etc.). Using these specific properties will ensure that
what the user specifies always wins over what the style specifies.
Task-number: QTBUG-69551
Change-Id: I4163e9918010fad0cb6ec701b49dbc59b086cf47
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/quickcontrols2/qquickstyle.cpp
src/quicktemplates2/qquickscrollview.cpp
tests/auto/qquickstyle/tst_qquickstyle.cpp
Change-Id: I9afddf07a956f43cf0445e91b8d1a02f167b6bd5
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
3b5143bb67cdaaff6b0eabedff1034e4add7ec87 already fixed a crash with the same
stack trace in dev. The same fix works with the referenced bug report.
Task-number: QTBUG-66483
Change-Id: I05450d2ff40f317d9b5b59e28991fa92b414022e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Mention some important details about contentWidth and contentHeight.
Task-number: QTBUG-69376
Change-Id: Iea6c6e36bb11436d30a0284a666c60ab7716f31b
Reviewed-by: J-P Nurmi <jpnurmi@gmail.com>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-68298
Change-Id: I049ff1de079f065182429f43a20e1a3899f4a962
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I0ea789c0ba3a153b00ac3ab6501ecf10f6c733ce
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This makes debugging significantly easier, in that it's now possible
to use one qDebug() statement for the assignment rather than a handful
at different places in the code.
Change-Id: Ic6fdc2943b6eeb0496148b07d7a3ece0b6399c1b
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/imports/controls/Menu.qml
src/imports/controls/fusion/Menu.qml
src/imports/controls/imagine/Menu.qml
src/imports/controls/material/Menu.qml
src/imports/controls/universal/Menu.qml
Change-Id: I017949e5ac617c1cdeece71204e5aa519776fb39
|
| |
| |
| |
| |
| |
| |
| | |
Not sure why this was ever an integer...
Change-Id: Ibfa2a547741328a7492c0da1c5cc87d5f6f885e1
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/imports/controls/imagine/TextArea.qml
src/imports/controls/imagine/TextField.qml
tests/auto/controls/data/tst_tumbler.qml
Change-Id: I25a8228a4299fb7a53db70b7223663a1637ed933
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Surround the function with parentheses as suggested:
QWARN : tst_Snippets::verify(qtquickcontrols2-spinbox-custom) Warning: Using function expressions as statements in scripts is not compliant with the ECMAScript specification:
"function(value, locale) { return Number(value).toLocaleString(locale, ..."
This will throw a syntax error in Qt 5.12. If you want a function expression, surround it by parentheses.
Change-Id: I39df9af9b3dc62ffaf6fcba071c04c8933698c07
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The use case in the referenced bug report looks something like this:
Tumbler {
model: 4
// ...
onModelChanged: {
currentIndex = model - 2;
}
}
The problem was that setting currentIndex in onModelChanged would cause
the wrap to change to true, which in turn caused the internal view to
change to PathView. This would cause the currentIndex to be set to 0
on successive model changes (i.e ++model).
By keeping track of whether or not the user set the currentIndex during
a model change, we can ignore changes in the internal view's
currentIndex and restore the user's currentIndex afterwards.
Task-number: QTBUG-68737
Change-Id: I25738f36cf58a331d1b8e50b5029b4aa1dd27db5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The following binding in the Fusion style's TabButton.qml
implementation causes the last tab's background not to cover its full
width:
height: control.height - (control.checked ? 0 : 2)
It seems that this line is executed upon the completion of
deferred execution of the background, which somehow results in the
early return check in itemGeometryChanged() not being executed.
After that, there are these two lines:
extra.value().hasBackgroundWidth = p->widthValid;
extra.value().hasBackgroundHeight = p->heightValid;
Even though this was just a change in height, hasBackgroundWidth was
set to true early on (when the width was 8; the combined left and right
padding), preventing the control from setting a width on the background
in the future.
This patch fixes the issue by only setting hasBackgroundWidth if the
width was changed, and only setting hasBackgroundHeight if the height
was changed.
Task-number: QTBUG-68556
Change-Id: I4c7dbc60d8e73c60c025e5d6c65f3917e6e4ea08
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of creating and setting the QQuickTheme instance from each
style plugin (e.g. QtQuickControls2MaterialStylePlugin), create the
QQuickTheme instance in QtQuickControls2Plugin when the style is
being resolved, and just pass the instance to be initialized by the
style plugin(s). This avoids the problem that QQuickTheme API was
virtual, and sub-classes created from plugins would have vtables
destroyed before the QQuickTheme was destroyed.
Task-number: QTBUG-67062
Task-number: QTBUG-68087
Change-Id: I19e9ced5296b708c2668c30163389cb3da6be7cf
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
We don't have the conflicting virtual getters anymore.
Change-Id: Ia20bfa0a0b1aa67c35a23270eb0241018f8e0ada
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows us to add more themable attributes (on the side of fonts
and palettes) after the QQuickTheme API has been made public, because
it won't require adding virtuals. Only the resolve() method is virtual.
Task-number: QTBUG-67062
Change-Id: I6a5cc8d15aeaa5a9a0fe9b6d2591077f8822daac
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Avoid giving a wrong impression that the theme instance could be
changed on the fly.
Change-Id: Ifb5078422385d2f15da6a416d89cc9d6f46b0f40
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This property adds two new ways of interacting with the dial:
horizontally and vertically. These new input modes use a relative
input system, which means that, unlike the old absolute input system,
changes to the dial's position are "added" to its value. This results
in a dial that is less "jumpy", making it safe for operations that
could be harmful if done incorrectly, like adjusting audio levels.
[ChangeLog][Controls][Dial] Added the inputMode property. This property
controls how the dial is interacted with. The circular input mode
(default, old behavior) operates on an absolute input system, whereas
the horizontal and vertical input modes use a relative input system.
Task-number: QTBUG-56323
Change-Id: Iab4e7f048b4797ab626741326ce709914e67bd31
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|