viewer: keep track of which screens have full screen viewers on them
Fixes #1307
This commit is contained in:
@@ -129,7 +129,7 @@ ViewerWidget::~ViewerWidget()
|
||||
{
|
||||
instances_.removeOne(this);
|
||||
|
||||
QList<ViewerWindow*> windows = windows_;
|
||||
auto windows = windows_;
|
||||
|
||||
foreach (ViewerWindow* window, windows) {
|
||||
delete window;
|
||||
@@ -311,6 +311,11 @@ void ViewerWidget::SetFullScreen(QScreen *screen)
|
||||
}
|
||||
}
|
||||
|
||||
if (windows_.contains(screen)) {
|
||||
delete windows_.take(screen);
|
||||
return;
|
||||
}
|
||||
|
||||
ViewerWindow* vw = new ViewerWindow(this);
|
||||
|
||||
vw->setGeometry(screen->geometry());
|
||||
@@ -326,7 +331,7 @@ void ViewerWidget::SetFullScreen(QScreen *screen)
|
||||
|
||||
vw->display_widget()->SetImage(display_widget_->last_loaded_buffer());
|
||||
|
||||
windows_.append(vw);
|
||||
windows_.insert(screen, vw);
|
||||
}
|
||||
|
||||
void ViewerWidget::ForceUpdate()
|
||||
@@ -745,7 +750,7 @@ void ViewerWidget::ContextMenuSetCustomSafeMargins()
|
||||
|
||||
void ViewerWidget::WindowAboutToClose()
|
||||
{
|
||||
windows_.removeOne(static_cast<ViewerWindow*>(sender()));
|
||||
windows_.remove(windows_.key(static_cast<ViewerWindow*>(sender())));
|
||||
}
|
||||
|
||||
void ViewerWidget::ContextMenuScopeTriggered(QAction *action)
|
||||
@@ -854,6 +859,8 @@ void ViewerWidget::ShowContextMenu(const QPoint &pos)
|
||||
QString::number(s->size().height())));
|
||||
|
||||
a->setData(i);
|
||||
a->setCheckable(true);
|
||||
a->setChecked(windows_.contains(QGuiApplication::screens().at(i)));
|
||||
}
|
||||
|
||||
connect(full_screen_menu, &QMenu::triggered, this, &ViewerWidget::ContextMenuSetFullScreen);
|
||||
|
||||
@@ -223,7 +223,7 @@ private:
|
||||
|
||||
AudioWaveformView* waveform_view_;
|
||||
|
||||
QList<ViewerWindow*> windows_;
|
||||
QHash<QScreen*, ViewerWindow*> windows_;
|
||||
|
||||
ViewerDisplayWidget* display_widget_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user