Explicitly propagate screen to QComboBoxListView constructor

QComboBoxListView is constructed without a parent. It therefore
inherits the current screen, which normally is the screen on which the
related QComboBox is located.

With two identical screens in Windows, that can lead to the popup
showing on the wrong screen. The issue occurs, when the other screen
is found before the right one.

This patch calls setScreen() in the constructor, to explicitly inherit
the screen from the combobox, if a valid pointer is passed.

Fixes: QTBUG-106099
Change-Id: Ic6679cfd59291092294d2cc75632a5485c2529b7
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
(cherry picked from commit df0b661bfc015bfe3eaeed3e811d63c91929e61c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Axel Spoerl 2023-03-22 11:09:41 +01:00 committed by Qt Cherry-pick Bot
parent 2e1025dd4a
commit a555d11289

View File

@ -49,7 +49,11 @@ class QComboBoxListView : public QListView
{
Q_OBJECT
public:
QComboBoxListView(QComboBox *cmb = nullptr) : combo(cmb) {}
QComboBoxListView(QComboBox *cmb = nullptr) : combo(cmb)
{
if (cmb)
setScreen(cmb->screen());
}
protected:
void resizeEvent(QResizeEvent *event) override