viewer: re-implemented auto viewer full screen from menubar/keyboard shortcut

This commit is contained in:
itsmattkc
2020-04-01 19:22:53 +11:00
parent ed48d24cbc
commit 1319d7141f
6 changed files with 63 additions and 21 deletions
+37 -19
View File
@@ -275,6 +275,40 @@ void ViewerWidget::SetMatrix(const QMatrix4x4 &mat)
}
}
void ViewerWidget::SetFullScreen(QScreen *screen)
{
if (!screen) {
// Try to find the screen that contains the mouse cursor currently
foreach (QScreen* test, QGuiApplication::screens()) {
if (test->geometry().contains(QCursor::pos())) {
screen = test;
break;
}
}
// Fallback, just use the first screen
if (!screen) {
screen = QGuiApplication::screens().first();
}
}
ViewerWindow* vw = new ViewerWindow(this);
vw->showFullScreen();
vw->setGeometry(screen->geometry());
vw->gl_widget()->ConnectColorManager(main_gl_widget()->color_manager());
main_gl_widget()->ConnectSibling(vw->gl_widget());
connect(vw, &ViewerWindow::destroyed, this, &ViewerWidget::WindowAboutToClose);
connect(vw->gl_widget(), &ViewerGLWidget::customContextMenuRequested, this, &ViewerWidget::ShowContextMenu);
if (GetConnectedNode()) {
vw->SetResolution(GetConnectedNode()->video_params().width(), GetConnectedNode()->video_params().height());
}
windows_.append(vw);
gl_widgets_.append(vw->gl_widget());
}
VideoRenderBackend *ViewerWidget::video_renderer() const
{
return video_renderer_;
@@ -379,25 +413,9 @@ void ViewerWidget::UpdateStack()
}
}
void ViewerWidget::SetFullScreenDisplay(QAction *action)
void ViewerWidget::ContextMenuSetFullScreen(QAction *action)
{
QScreen* target = QGuiApplication::screens().at(action->data().toInt());
ViewerWindow* vw = new ViewerWindow(this);
vw->showFullScreen();
vw->setGeometry(target->geometry());
vw->gl_widget()->ConnectColorManager(main_gl_widget()->color_manager());
main_gl_widget()->ConnectSibling(vw->gl_widget());
connect(vw, &ViewerWindow::destroyed, this, &ViewerWidget::WindowAboutToClose);
connect(vw->gl_widget(), &ViewerGLWidget::customContextMenuRequested, this, &ViewerWidget::ShowContextMenu);
if (GetConnectedNode()) {
vw->SetResolution(GetConnectedNode()->video_params().width(), GetConnectedNode()->video_params().height());
}
windows_.append(vw);
gl_widgets_.append(vw->gl_widget());
SetFullScreen(QGuiApplication::screens().at(action->data().toInt()));
}
void ViewerWidget::WindowAboutToClose()
@@ -515,7 +533,7 @@ void ViewerWidget::ShowContextMenu(const QPoint &pos)
a->setData(i);
}
connect(full_screen_menu, &QMenu::triggered, this, &ViewerWidget::SetFullScreenDisplay);
connect(full_screen_menu, &QMenu::triggered, this, &ViewerWidget::ContextMenuSetFullScreen);
menu.exec(static_cast<QWidget*>(sender())->mapToGlobal(pos));
}