| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When changing the enabled state of a Menu after component completion,
the background would not change. The problem was that
QQuickPopup::paletteChanged() was not being emitted when the enabled
state changed, resulting in QQuickControl::palette() (which
QQuickPopup::palette() forwards calls to via its popupItem) not
being called. QQuickControl::palette() changes the palette's current
color group to QPalette::Disabled when it is disabled, so if it's not
called, the popup's colors won't change.
Fix the issue by adding a virtual enabledChange() function to
QQuickControl, which QQuickPopupItem can override to emit both
QQuickPopup::enabledChanged() (saving a connection in the process)
and QQuickPopup::paletteChanged(). This ensures that bindings to
QQuickPopup::palette are re-evaluated.
The patch adds a virtual instead of just emitting paletteChanged()
in QQuickPopup::setEnabled(), because we also want to be notified
of indirect enabled state changes, such as those coming from
parent items.
Change-Id: Ibdbd05f27b5a74fe731bda9d6698cbf6b8f81785
Fixes: QTBUG-73447
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|
|
|
|
|
| |
Change-Id: I7eb394ca3991eae585fbbd8e665c46b11ef64a07
Fixes: QTBUG-70181
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
When a menu item with a sub-menu was triggered by key or mouse,
it would open the sub-menu with the first menu item highlighted.
This doesn't make sense for disabled menu items, so this patch
makes it find the first enabled item.
Change-Id: I9df1c750749e5a77b027b6f476b8ae1f5ea035bd
Fixes: QTBUG-69540
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In 5.11, the font palette read from the qtquickcontrols2.conf file was
respected. After some large architectural changes (around the time of
94780538) required to fix a crash, 5.12 stopped respecting these
settings.
This patch fixes the issue by setting the default font as the System
scope font, because that's what QQuickControlPrivate::parentFont() uses
as its fallback if no parent item has a font explicitly set.
QQuickControlPrivate::parentFont() is used as the starting point for
font inheritance/resolution for each control.
The same fix is used for palettes.
Change-Id: I706a9f109c9959b8ea6b91f842146dbfc876cb2b
Fixes: QTBUG-72023
Reviewed-by: Nils Jeisecke <nils.jeisecke@saltation.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem
Consider the following code:
Menu {
title: "Menu"
Action {
text: "Item"
onTriggered: enabled = false
}
}
A MenuItem (AbstractButton) is created for the Action, and when it is
clicked, this function is called:
void QQuickAbstractButtonPrivate::trigger()
{
Q_Q(QQuickAbstractButton);
if (action && action->isEnabled())
QQuickActionPrivate::get(action)->trigger(q, false);
else if (effectiveEnable)
emit q->clicked();
}
QQuickActionPrivate::get(action)->trigger(q, false) results in this
function being called:
void QQuickAbstractButtonPrivate::click()
{
Q_Q(QQuickAbstractButton);
if (effectiveEnable)
emit q->clicked();
}
Since the action (and hence the menu item) was disabled in the signal
handler, the effectiveEnable check fails and clicked() is not emitted.
This causes the menu to not be dismissed.
Solution
Before calling QQuickActionPrivate::get(action)->trigger(), store
the button's enabled state. If triggering the action causes the action
to be disabled (due to the signal handler), we can then choose whether
or not we emit QQuickAbstractButton::clicked(). Specifically, we emit
clicked() if:
- we were enabled before triggering the action, and
- we have no associated action, or it's no longer enabled
Task-number: QTBUG-69682
Change-Id: Ib4e3c313b776decc74089a6beffe415605c430be
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|\
| |
| |
| | |
Change-Id: I555418c45b33fa9bc02072b32736403090f1bdbc
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
(cherry picked from commit bbc81363f082ab6a2736f8de83968a3941e367e2)
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
|
| |\
| | |
| | |
| | | |
Change-Id: I442b103e352bc49b35fb816104c87c112e2fd958
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Binary compatibility file added.
Change-Id: Icc07524dfd195642a2e5fc2d566f4270e4f505e0
Reviewed-by: Sergio Ahumada <sahumada@texla.cl>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a style is loaded, QtQuickControls2Plugin::loadStylePlugins() is
called. This function uses QPluginLoader to search the style directory
for the style plugin. On Windows, the code was looking for the plugin
without the debug "d" suffix, causing the style plugin to fail to load
for debug builds. This results in the QQuickTheme subclasses not being
created, causing controls to be shown with default font sizes.
This patch fixes the issue by appending the "d" suffix on Windows.
Change-Id: I706dbe39325a104bcd6ce72cb0a8d37025adb055
Fixes: QTBUG-71902
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
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>
|
|/
|
|
|
|
|
|
| |
It is actually possible to get the test to fail in command line
environments.
Change-Id: I9e37e968bd259e3c7ad4acdb8bf289a64f199891
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Just to verify that it works, as a similar test was added for
Instantiator in another patch.
Change-Id: I1ab55d98a3726bff1a2984db0d81ae444e05d630
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Set it to the bottom of the text if there is text.
Change-Id: I03e14ec587e0868e1f2104dd464591b243ea9264
Fixes: QTBUG-71554
Reviewed-by: Pierre-Yves Siret <gr3cko@gmail.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@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>
|
|
|
|
|
|
|
|
|
|
| |
30fcc735 introduced this to work around a crash that was apparently
caused by 4c71db75. The commit that added the workaround is now three
years old, and removing it fixes a crash that is blocking CI.
Change-Id: Iefbb32e00d57e5ad86c43977e10120fdc92a3635
Fixes: QTBUG-70064
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
|
|
|
|
|
|
|
|
| |
Ensure the QByteArray we set as the current test name outlives
the test.
Task-number: QTBUG-71387
Change-Id: Id5f75b5ffcd1a710b5d8be4796cf48ee8dd1896d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
| |
It crashes, but I'm unable to debug it with a CI VM because it won't
build.
Task-number: QTBUG-70063
Change-Id: Ia9c32a145c40cc55ab56dcf3fd52468d7a925f40
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/quicktemplates2/qquickmenubar.cpp
src/quicktemplates2/qquickmenubar_p.h
src/quicktemplates2/qquickmenubar_p_p.h
Change-Id: I5c2115f05826f68f1b1f5ce6762273cd91e6997e
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Something about postponing delegate creation to component completion
means that the fileMenuBarItem->isHighlighted() check fails
occasionally.
Give it a chance to sort itself out before sending move events.
Change-Id: I140ec835b5cb4ec7d784215a20567469ad422c5b
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
takeItem() unparents the item, so we need to make sure it gets deleted.
The leak was caught by valgrind:
==10039== 832 (32 direct, 800 indirect) bytes in 1 blocks are definitely lost in loss record 6,465 of 6,706
==10039== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10039== by 0x112C1E: tst_QQuickMenu::count() (tst_qquickmenu.cpp:121)
==10039== by 0x12F313: tst_QQuickMenu::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (tst_qquickmenu.moc:156)
==10039== by 0x612B6B2: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (qmetaobject.cpp:2305)
==10039== by 0x41B07CD: invoke (qmetaobject.h:123)
==10039== by 0x41B07CD: QTest::TestMethods::invokeTestOnData(int) const (qtestcase.cpp:915)
==10039== by 0x41B15BF: QTest::TestMethods::invokeTest(int, char const*, QTest::WatchDog*) const (qtestcase.cpp:1114)
==10039== by 0x41B1D07: QTest::TestMethods::invokeTests(QObject*) const (qtestcase.cpp:1456)
==10039== by 0x41B2381: QTest::qRun() (qtestcase.cpp:1896)
==10039== by 0x41B24E1: QTest::qExec(QObject*, int, char**) (qtestcase.cpp:1783)
==10039== by 0x12F468: main (tst_qquickmenu.cpp:1505)
Change-Id: I459c7897c1088c8b58152d2e0b5ceb8f3684e589
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The qmlClearTypeRegistrations() call causes a crash and it's not clear
why. Until we can fix it, skip it so that other changes can get in.
It should be skipped rather than blacklisted as it shouldn't be run at
all.
Task-number: QTBUG-70063
Change-Id: I1ff47e034f121014370bbf9d65e8ac68769a8d31
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ic5311418d3f25398380c4a32b35753329efb6f3f
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Ensure that the window is active before trying to activate keyboard
shortcuts.
Task-number: QTBUG-70413
Change-Id: Ibac1526efd9c53f1f2aa3401da3855ce26d35d6a
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In openSUSE 15.0 /etc/os-release the ID of the OS was
changed from "opensuse" to "opensuse-leap". So every blacklisting
we did for opensuse, didn't cover opensuse-leap. This one adds
opensuse-leap as a blacklisted platform whenever opensuse
was blacklisted.
Task-number: QTBUG-70413
Change-Id: Ib84cda329160d4cfed28cb168f380269c24f8435
Reviewed-by: Liang Qi <liang.qi@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>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-70413
Change-Id: Ie4ae23a7869bb0cbb41f452637ccf55c58b24182
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-70413
Change-Id: I86b6d4924b6042b9d934bf3f15901eb9a8a6c7f5
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Move DummyStyle into a subdirectory of the "data" directory, because
otherwise availableStyles() picks it up and makes us fail.
Task-number: QTBUG-70065
Change-Id: Ib69075832b5bcf30c6b960e6a4bcda69f016baf2
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: I483081703594a8398d51a23c6d2266ac0ae9dfb0
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QQuickIconImage::componentComplete() calls
QQuickIconImagePrivate::updateIcon(), which loads the icon's image via
QQuickImageBase::load(). That eventually calls
QQuickImageBase::requestFinished(), which calls
QQuickIconImage::pixmapChange(). That then calls
QQuickIconImagePrivate::updateFillMode(), which can in turn cause
QQuickIconImage::pixmapChange() to be called again, causing recursion.
This recursion resulted in icon.color being applied twice.
We already have a recursion check in place in
QQuickIconImagePrivate::updateFillMode(), so we can reuse that in
QQuickIconImage::pixmapChange() to know whether or not we should apply
the color to the image.
Task-number: QTBUG-69506
Change-Id: I5cd9edaa524c7ceb9c41c53a9efefcc4c647e246
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
qrcStylePaths() uses :/qrcStyles1 and :/qrcStyles2, which conflicts
with qrcInQtQuickControlsStylePathEnvVar() in a way that would require
us (qrcInQtQuickControlsStylePathEnvVar()) to be aware of tests that
ran before us.
Avoid this issue by adding more qrc-based styles.
Change-Id: I7a5e24f4ea532c19db30d240fe7c077ac2a09a4e
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/quickcontrols2/qquickstyle.cpp
src/quicktemplates2/qquickscrollview.cpp
tests/auto/qquickstyle/tst_qquickstyle.cpp
Change-Id: I9afddf07a956f43cf0445e91b8d1a02f167b6bd5
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Parse the environment variable manually when the platform's list separator
is ':', to avoid issues with qrc paths (which start with ':') not working.
Task-number: QTBUG-68219
Change-Id: Ic71d49da5a72a37bc1d2e7b19fbf1de71b3917f3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
'cause it's better.
Change-Id: I00a538013a10a7ff3b551b9f550427f898610dbb
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use Window.window instead of ApplicationWindow.window, as the former
will always result in a window regardless of which type of window is
in use.
Task-number: QTBUG-68858
Change-Id: I3bdb60350d92b13621b0f4db9085bf067b6ff6e2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|