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
Pick-to: 6.5 6.2 5.15
Change-Id: Ic6679cfd59291092294d2cc75632a5485c2529b7
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
This commit is contained in:
Axel Spoerl 2023-03-22 11:09:41 +01:00
parent e7cb3cb041
commit df0b661bfc

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