Fix QComboBox popup from opening on wrong screen

Nothing seems to be telling the popup on which screen it should be shown
on. To fix this, simply set same screen the QComboBox uses to the popup.

Task-number: QTBUG-58392
Change-Id: If62a26fe4e51bcf3d770ee72c9baa998541618f4
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
This commit is contained in:
Joni Poikelin 2017-01-24 20:12:04 +02:00
parent 2a41e05fde
commit 903a59042e

View File

@ -2746,6 +2746,22 @@ void QComboBox::showPopup()
bool startTimer = !container->isVisible(); bool startTimer = !container->isVisible();
container->raise(); container->raise();
container->create();
QWindow *containerWindow = container->window()->windowHandle();
if (containerWindow) {
QWindow *win = window()->windowHandle();
if (win) {
QScreen *currentScreen = win->screen();
if (currentScreen && !currentScreen->virtualSiblings().contains(containerWindow->screen())) {
containerWindow->setScreen(currentScreen);
// This seems to workaround an issue in xcb+multi GPU+multiscreen
// environment where the window might not always show up when screen
// is changed.
container->hide();
}
}
}
container->show(); container->show();
container->updateScrollers(); container->updateScrollers();
view()->setFocus(); view()->setFocus();