Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package veyon for openSUSE:Factory checked 
in at 2022-03-09 18:48:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/veyon (Old)
 and      /work/SRC/openSUSE:Factory/.veyon.new.2349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "veyon"

Wed Mar  9 18:48:04 2022 rev:15 rq:960443 version:4.7.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/veyon/veyon.changes      2022-01-25 
17:37:11.885868214 +0100
+++ /work/SRC/openSUSE:Factory/.veyon.new.2349/veyon.changes    2022-03-11 
11:37:19.086341317 +0100
@@ -1,0 +2,22 @@
+Tue Mar  1 23:20:08 UTC 2022 - andy great <andythe_gr...@pm.me>
+
+- Update to version 4.7.2.
+  * Core:
+    * VncView: limit preferred size to available desktop geometry
+    (i.e. all monitors)
+  * Plugins
+    * AuthKeys: use file name only to determine key name
+    * AuthKeys: fixed loading key specified through the
+      VEYON_AUTH_KEY_NAME environment variable
+    * Demo: in window mode, resize the window according to the
+      available desktop geometry
+    * PowerControl: don't allow aborting the shutdown countdown by pressing 
Alt+F4
+    * RemoteAccess: allow screen switching by tab/backtab (in view-only mode)
+    * RemoteAccess: fixed window being created twice
+    * RemoteAccess: only update clipboard if a remote access window is opened
+    * ScreenLock: resize to available desktop geometry
+  * Master
+    * Computer zoom: allow screen switching by pressing tab or backtab
+
+
+-------------------------------------------------------------------

Old:
----
  veyon-4.7.1-src.tar.bz2

New:
----
  veyon-4.7.2-src.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ veyon.spec ++++++
--- /var/tmp/diff_new_pack.u6iwcH/_old  2022-03-11 11:37:19.642341969 +0100
+++ /var/tmp/diff_new_pack.u6iwcH/_new  2022-03-11 11:37:19.646341974 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           veyon
-Version:        4.7.1
+Version:        4.7.2
 Release:        0
 Summary:        Computer monitoring and classroom management
 License:        GPL-2.0-or-later

++++++ veyon-4.7.1-src.tar.bz2 -> veyon-4.7.2-src.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.centos.7.9/Dockerfile 
new/veyon-4.7.2/.ci/linux.centos.7.9/Dockerfile
--- old/veyon-4.7.1/.ci/linux.centos.7.9/Dockerfile     2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.centos.7.9/Dockerfile     2022-02-26 
14:52:46.000000000 +0100
@@ -3,6 +3,7 @@
 
 RUN \
        yum --enablerepo=extras install -y epel-release && \
+       yum install -y 
https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm && \
        yum install -y centos-release-scl && \
        yum install -y git devtoolset-7 ninja-build cmake3 rpm-build fakeroot \
                qt5-qtbase-devel qt5-qtbase qt5-linguist qt5-qttools 
qt5-qtquickcontrols2-devel qt5-qtwebkit-devel \
@@ -15,6 +16,7 @@
                procps-devel \
                lzo-devel \
                qca-qt5-devel qca-qt5-ossl \
+               ffmpeg-devel \
                cyrus-sasl-devel \
                openldap-devel && \
        ln -s /usr/bin/cmake3 /usr/bin/cmake
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.centos.8.4/Dockerfile 
new/veyon-4.7.2/.ci/linux.centos.8.4/Dockerfile
--- old/veyon-4.7.1/.ci/linux.centos.8.4/Dockerfile     2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.centos.8.4/Dockerfile     2022-02-26 
14:52:46.000000000 +0100
@@ -3,8 +3,9 @@
 
 RUN \
        yum --enablerepo=extras install -y epel-release dnf-plugins-core && \
+       yum install -y 
https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm && \
        yum config-manager --set-enabled powertools && \
-       dnf install -y 
https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm && \
+       dnf install -y 
https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-2.el8.noarch.rpm && \
        yum install -y git gcc-c++ make ninja-build cmake rpm-build fakeroot \
                qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtbase 
qt5-linguist qt5-qttools qt5-qtquickcontrols2-devel qt5-qtwebengine-devel \
                libXtst-devel libXrandr-devel libXinerama-devel 
libXcursor-devel libXrandr-devel libXdamage-devel libXcomposite-devel 
libXfixes-devel \
@@ -17,5 +18,6 @@
                procps-ng-devel \
                lzo-devel \
                qca-qt5-devel qca-qt5-ossl \
+               ffmpeg-devel \
                cyrus-sasl-devel \
                openldap-devel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.debian.bullseye/Dockerfile 
new/veyon-4.7.2/.ci/linux.debian.bullseye/Dockerfile
--- old/veyon-4.7.1/.ci/linux.debian.bullseye/Dockerfile        2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.debian.bullseye/Dockerfile        2022-02-26 
14:52:46.000000000 +0100
@@ -16,6 +16,7 @@
                libldap2-dev \
                libsasl2-dev \
                libqca-qt5-2-dev libqca-qt5-2-plugins \
+               libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
                && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.debian.buster/Dockerfile 
new/veyon-4.7.2/.ci/linux.debian.buster/Dockerfile
--- old/veyon-4.7.1/.ci/linux.debian.buster/Dockerfile  2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.debian.buster/Dockerfile  2022-02-26 
14:52:46.000000000 +0100
@@ -20,6 +20,7 @@
                libpng-dev \
                liblzo2-dev \
                libqca-qt5-2-dev libqca-qt5-2-plugins \
+               libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
                && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.debian.stretch/Dockerfile 
new/veyon-4.7.2/.ci/linux.debian.stretch/Dockerfile
--- old/veyon-4.7.1/.ci/linux.debian.stretch/Dockerfile 2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.debian.stretch/Dockerfile 2022-02-26 
14:52:46.000000000 +0100
@@ -19,6 +19,7 @@
                libpng-dev \
                liblzo2-dev \
                libqca-qt5-2-dev libqca-qt5-2-plugins \
+               libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
                && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.fedora.34/Dockerfile 
new/veyon-4.7.2/.ci/linux.fedora.34/Dockerfile
--- old/veyon-4.7.1/.ci/linux.fedora.34/Dockerfile      2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.fedora.34/Dockerfile      2022-02-26 
14:52:46.000000000 +0100
@@ -2,6 +2,7 @@
 MAINTAINER Tobias Junghans <toby...@veyon.io>
 
 RUN \
+       dnf install -y 
https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-34.noarch.rpm
 && \
        dnf install -y --setopt=install_weak_deps=False \
                git gcc-c++ ninja-build cmake rpm-build fakeroot fakeroot-libs \
                qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtbase 
qt5-linguist qt5-qttools qt5-qtquickcontrols2-devel qt5-qtwebengine-devel \
@@ -12,5 +13,6 @@
                pam-devel \
                procps-devel \
                qca-qt5-devel qca-qt5-ossl \
+               ffmpeg-devel \
                cyrus-sasl-devel \
                openldap-devel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.fedora.35/Dockerfile 
new/veyon-4.7.2/.ci/linux.fedora.35/Dockerfile
--- old/veyon-4.7.1/.ci/linux.fedora.35/Dockerfile      2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.fedora.35/Dockerfile      2022-02-26 
14:52:46.000000000 +0100
@@ -2,6 +2,7 @@
 MAINTAINER Tobias Junghans <toby...@veyon.io>
 
 RUN \
+       dnf install -y 
https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-35.noarch.rpm
 && \
        dnf install -y --setopt=install_weak_deps=False \
                git gcc-c++ ninja-build cmake rpm-build fakeroot fakeroot-libs \
                qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtbase 
qt5-linguist qt5-qttools qt5-qtquickcontrols2-devel qt5-qtwebengine-devel \
@@ -12,5 +13,6 @@
                pam-devel \
                procps-devel \
                qca-qt5-devel qca-qt5-ossl \
+               ffmpeg-devel \
                cyrus-sasl-devel \
                openldap-devel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.opensuse.15.2/Dockerfile 
new/veyon-4.7.2/.ci/linux.opensuse.15.2/Dockerfile
--- old/veyon-4.7.1/.ci/linux.opensuse.15.2/Dockerfile  2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.opensuse.15.2/Dockerfile  2022-02-26 
14:52:46.000000000 +0100
@@ -13,6 +13,7 @@
                procps-devel \
                pam-devel lzo-devel \
                libqca-qt5-devel libqca-qt5-plugins \
+               libavcodec-devel libavformat-devel libavutil-devel 
libswscale-devel \
                cyrus-sasl-devel \
                openldap2-devel
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.opensuse.15.3/Dockerfile 
new/veyon-4.7.2/.ci/linux.opensuse.15.3/Dockerfile
--- old/veyon-4.7.1/.ci/linux.opensuse.15.3/Dockerfile  2021-08-12 
16:34:28.000000000 +0200
+++ new/veyon-4.7.2/.ci/linux.opensuse.15.3/Dockerfile  2022-01-24 
14:18:16.000000000 +0100
@@ -14,6 +14,7 @@
                procps-devel \
                pam-devel lzo-devel \
                libqca-qt5-devel libqca-qt5-plugins \
+               libavcodec-devel libavformat-devel libavutil-devel 
libswscale-devel \
                cyrus-sasl-devel \
                openldap2-devel
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.ubuntu.bionic/Dockerfile 
new/veyon-4.7.2/.ci/linux.ubuntu.bionic/Dockerfile
--- old/veyon-4.7.1/.ci/linux.ubuntu.bionic/Dockerfile  2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.ubuntu.bionic/Dockerfile  2022-02-26 
14:52:46.000000000 +0100
@@ -18,6 +18,7 @@
                libpng-dev \
                liblzo2-dev \
                libqca-qt5-2-dev libqca-qt5-2-plugins \
+               libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
                && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/.ci/linux.ubuntu.focal/Dockerfile 
new/veyon-4.7.2/.ci/linux.ubuntu.focal/Dockerfile
--- old/veyon-4.7.1/.ci/linux.ubuntu.focal/Dockerfile   2022-01-14 
09:49:23.000000000 +0100
+++ new/veyon-4.7.2/.ci/linux.ubuntu.focal/Dockerfile   2022-02-26 
14:52:46.000000000 +0100
@@ -19,6 +19,7 @@
                libpng-dev \
                liblzo2-dev \
                libqca-qt5-2-dev libqca-qt5-2-plugins \
+               libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
                && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/CMakeLists.txt 
new/veyon-4.7.2/CMakeLists.txt
--- old/veyon-4.7.1/CMakeLists.txt      2022-01-24 10:41:45.000000000 +0100
+++ new/veyon-4.7.2/CMakeLists.txt      2022-02-26 14:52:46.000000000 +0100
@@ -98,7 +98,7 @@
 if(NOT VERSION_STRING)
        set(VERSION_MAJOR 4)
        set(VERSION_MINOR 7)
-       set(VERSION_PATCH 1)
+       set(VERSION_PATCH 2)
        set(VERSION_BUILD 0)
        set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
 else()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/core/src/LockWidget.cpp 
new/veyon-4.7.2/core/src/LockWidget.cpp
--- old/veyon-4.7.1/core/src/LockWidget.cpp     2022-01-14 14:20:38.000000000 
+0100
+++ new/veyon-4.7.2/core/src/LockWidget.cpp     2022-02-26 14:52:46.000000000 
+0100
@@ -26,9 +26,6 @@
 #include "PlatformInputDeviceFunctions.h"
 
 #include <QApplication>
-#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
-#include <QDesktopWidget>
-#endif
 #include <QPainter>
 #include <QScreen>
 #include <QWindow>
@@ -60,11 +57,11 @@
        setWindowTitle( {} );
        show();
        move( 0, 0 );
-#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
-       setFixedSize( screen()->size() );
-#else
-       setFixedSize( qApp->desktop()->size() );
+       setFixedSize(
+#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
+               windowHandle()->
 #endif
+                                 screen()->virtualSize());
        VeyonCore::platform().coreFunctions().raiseWindow( this, true );
        showFullScreen();
        setFocusPolicy( Qt::StrongFocus );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/core/src/VeyonCore.cpp 
new/veyon-4.7.2/core/src/VeyonCore.cpp
--- old/veyon-4.7.1/core/src/VeyonCore.cpp      2022-01-14 14:20:38.000000000 
+0100
+++ new/veyon-4.7.2/core/src/VeyonCore.cpp      2022-02-26 14:52:46.000000000 
+0100
@@ -687,6 +687,7 @@
                                m_authenticationCredentials->loadPrivateKey( 
VeyonCore::filesystem().privateKeyPath( authKeyName ) ) )
                {
                        m_authenticationCredentials->setAuthenticationKeyName( 
authKeyName );
+                       return true;
                }
        }
        else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/core/src/VncViewWidget.cpp 
new/veyon-4.7.2/core/src/VncViewWidget.cpp
--- old/veyon-4.7.1/core/src/VncViewWidget.cpp  2022-01-14 14:20:38.000000000 
+0100
+++ new/veyon-4.7.2/core/src/VncViewWidget.cpp  2022-02-16 15:14:00.000000000 
+0100
@@ -25,13 +25,8 @@
 #include <QApplication>
 #include <QMouseEvent>
 #include <QPainter>
-#include <QtMath>
-
-#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
 #include <QScreen>
-#else
-#include <QDesktopWidget>
-#endif
+#include <QWindow>
 
 #include "VeyonConnection.h"
 #include "VncConnection.h"
@@ -68,14 +63,6 @@
 
        show();
 
-#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
-       const auto screenGeometry = screen()->availableGeometry();
-#else
-       const auto screenGeometry = QApplication::desktop()->availableGeometry( 
this );
-#endif
-
-       resize( screenGeometry.size() - QSize( 10, 30 ) );
-
        setFocusPolicy( Qt::WheelFocus );
        setFocus();
 
@@ -99,7 +86,32 @@
 
 QSize VncViewWidget::sizeHint() const
 {
-       return effectiveFramebufferSize();
+       QSize 
availableSize{QGuiApplication::primaryScreen()->availableVirtualSize()};
+#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
+       const auto* windowScreen = windowHandle() ? windowHandle()->screen() : 
nullptr;
+#else
+       const auto* windowScreen = screen();
+#endif
+       if (windowScreen)
+       {
+               availableSize = windowScreen->availableVirtualSize();
+       }
+
+       availableSize -= window()->frameSize() - window()->size();
+
+       const auto size = effectiveFramebufferSize();
+       if (size.isEmpty())
+       {
+               return availableSize;
+       }
+
+       if (size.width() > availableSize.width() ||
+               size.height() > availableSize.height())
+       {
+               return size.scaled(availableSize, Qt::KeepAspectRatio);
+       }
+
+       return size;
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/master/src/ComputerMonitoringWidget.cpp 
new/veyon-4.7.2/master/src/ComputerMonitoringWidget.cpp
--- old/veyon-4.7.1/master/src/ComputerMonitoringWidget.cpp     2022-01-24 
10:41:45.000000000 +0100
+++ new/veyon-4.7.2/master/src/ComputerMonitoringWidget.cpp     2022-02-26 
14:52:46.000000000 +0100
@@ -283,6 +283,13 @@
 
 
 
+void ComputerMonitoringWidget::resetIgnoreNumberOfMouseEvents( )
+{
+       m_ignoreNumberOfMouseEvents = IgnoredNumberOfMouseEventsWhileHold;
+}
+
+
+
 void ComputerMonitoringWidget::runMousePressAndHoldFeature( )
 {
        m_mousePressAndHold.stop();
@@ -292,18 +299,20 @@
                selectedInterfaces.count() < 2 &&
                selectedInterfaces.first()->state() == 
ComputerControlInterface::State::Connected &&
                selectedInterfaces.first()->hasValidFramebuffer() )
-   {
+       {
                m_ignoreMousePressAndHoldEvent = true;
-               m_ignoreNumberOfMouseEvents = 
IgnoredNumberOfMouseEventsWhileHold;
+               resetIgnoreNumberOfMouseEvents();
                delete m_computerZoomWidget;
                m_computerZoomWidget = new ComputerZoomWidget( 
selectedInterfaces.first()  );
-   }
+               connect( m_computerZoomWidget, 
&ComputerZoomWidget::keypressInComputerZoomWidget, this, 
&ComputerMonitoringWidget::resetIgnoreNumberOfMouseEvents );
+       }
 }
 
 
 
 void ComputerMonitoringWidget::stopMousePressAndHoldFeature( )
 {
+       disconnect( m_computerZoomWidget, 
&ComputerZoomWidget::keypressInComputerZoomWidget, this, 
&ComputerMonitoringWidget::resetIgnoreNumberOfMouseEvents );
        m_ignoreMousePressAndHoldEvent = false;
        m_ignoreNumberOfMouseEvents = 0;
        m_computerZoomWidget->close();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/master/src/ComputerMonitoringWidget.h 
new/veyon-4.7.2/master/src/ComputerMonitoringWidget.h
--- old/veyon-4.7.1/master/src/ComputerMonitoringWidget.h       2022-01-24 
10:41:45.000000000 +0100
+++ new/veyon-4.7.2/master/src/ComputerMonitoringWidget.h       2022-02-25 
15:27:08.000000000 +0100
@@ -53,6 +53,8 @@
                m_ignoreWheelEvent = enabled;
        }
 
+       void resetIgnoreNumberOfMouseEvents( );
+
        QTimer m_mousePressAndHold;
 
 private:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/master/src/ComputerZoomWidget.cpp 
new/veyon-4.7.2/master/src/ComputerZoomWidget.cpp
--- old/veyon-4.7.1/master/src/ComputerZoomWidget.cpp   2022-01-24 
10:41:45.000000000 +0100
+++ new/veyon-4.7.2/master/src/ComputerZoomWidget.cpp   2022-02-25 
15:27:08.000000000 +0100
@@ -24,6 +24,7 @@
 
 #include <QApplication>
 #include <QIcon>
+#include <QKeyEvent>
 
 #include "ComputerZoomWidget.h"
 #include "VeyonConfiguration.h"
@@ -56,6 +57,7 @@
        setAttribute( Qt::WA_DeleteOnClose, true );
 
        m_vncView->move( 0, 0 );
+       m_vncView->installEventFilter( this );
        connect( m_vncView, &VncViewWidget::sizeHintChanged, this, 
&ComputerZoomWidget::updateSize );
 
        setWindowState(Qt::WindowMaximized);
@@ -73,6 +75,62 @@
 
 
 
+bool ComputerZoomWidget::eventFilter( QObject* object, QEvent* event )
+{
+       if( event->type() == QEvent::KeyPress )
+       {
+               Q_EMIT keypressInComputerZoomWidget( );
+
+               const auto screens = 
m_vncView->computerControlInterface()->screens();
+               const auto key = static_cast<QKeyEvent *>( event )->key();
+               if ( screens.size() > 1 && ( key == Qt::Key_Tab || key == 
Qt::Key_Backtab ) )
+               {
+                       if( key == Qt::Key_Tab )
+                       {
+                               if ( m_currentScreen < screens.size() - 1 )
+                               {
+                                       m_currentScreen++;
+                               } else
+                               {
+                                       m_currentScreen = -1;
+                               }
+                       }
+
+                       if( key == Qt::Key_Backtab )
+                       {
+                               if ( m_currentScreen == -1 )
+                               {
+                                       m_currentScreen = screens.size()-1;
+                               } else if ( m_currentScreen > 0 )
+                               {
+                                       m_currentScreen--;
+                               } else
+                               {
+                                       m_currentScreen = -1;
+                               }
+                       }
+
+                       showNormal();
+                       if ( m_currentScreen == -1)
+                       {
+                               m_vncView->setViewport( {} );
+                       }
+                       else
+                       {
+                               
m_vncView->setViewport(screens[m_currentScreen].geometry);
+                       }
+                       setWindowState(Qt::WindowMaximized);
+                       return true;
+               }
+
+               return false;
+       }
+
+       return QObject::eventFilter(object, event);
+}
+
+
+
 void ComputerZoomWidget::updateComputerZoomWidgetTitle()
 {
        const auto username = 
m_vncView->computerControlInterface()->userFullName().isEmpty() ?
@@ -116,5 +174,6 @@
 
 void ComputerZoomWidget::closeEvent( QCloseEvent* event )
 {
+       m_vncView->setViewport({});
        QApplication::restoreOverrideCursor();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/master/src/ComputerZoomWidget.h 
new/veyon-4.7.2/master/src/ComputerZoomWidget.h
--- old/veyon-4.7.1/master/src/ComputerZoomWidget.h     2022-01-24 
10:41:45.000000000 +0100
+++ new/veyon-4.7.2/master/src/ComputerZoomWidget.h     2022-02-25 
15:27:08.000000000 +0100
@@ -39,14 +39,20 @@
        ~ComputerZoomWidget() override;
 
 protected:
+       bool eventFilter( QObject* object, QEvent* event ) override;
+
        void resizeEvent( QResizeEvent* event ) override;
+       void closeEvent( QCloseEvent* event ) override;
 
 private:
        void updateSize();
        void updateComputerZoomWidgetTitle();
 
-       void closeEvent( QCloseEvent* event ) override;
+       int m_currentScreen{-1};
 
        VncViewWidget* m_vncView;
 
+Q_SIGNALS:
+       void keypressInComputerZoomWidget( );
+
 } ;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/plugins/authkeys/AuthKeysManager.cpp 
new/veyon-4.7.2/plugins/authkeys/AuthKeysManager.cpp
--- old/veyon-4.7.1/plugins/authkeys/AuthKeysManager.cpp        2022-01-14 
14:20:38.000000000 +0100
+++ new/veyon-4.7.2/plugins/authkeys/AuthKeysManager.cpp        2022-02-26 
14:52:46.000000000 +0100
@@ -461,7 +461,8 @@
 
 QString AuthKeysManager::keyNameFromExportedKeyFile( const QString& keyFile )
 {
-       const auto keyNameMatch = QRegularExpression( 
QStringLiteral("^(.*)_(.*)_key.pem$") ).match( keyFile );
+       const auto keyNameMatch = QRegularExpression( 
QStringLiteral("^(.*)_(.*)_key.pem$") )
+                                                                 
.match(QFileInfo(keyFile).fileName());
 
        if( keyNameMatch.hasMatch() )
        {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/plugins/demo/DemoClient.cpp 
new/veyon-4.7.2/plugins/demo/DemoClient.cpp
--- old/veyon-4.7.1/plugins/demo/DemoClient.cpp 2022-01-14 14:20:38.000000000 
+0100
+++ new/veyon-4.7.2/plugins/demo/DemoClient.cpp 2022-02-16 15:41:53.000000000 
+0100
@@ -23,13 +23,7 @@
  */
 
 #include <QApplication>
-#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
-#include <QScreen>
-#else
-#include <QDesktopWidget>
-#endif
 #include <QIcon>
-#include <QLayout>
 
 #include "DemoClient.h"
 #include "VeyonConfiguration.h"
@@ -54,29 +48,15 @@
        m_toplevel->setWindowTitle( tr( "%1 Demo" ).arg( 
VeyonCore::applicationName() ) );
        m_toplevel->setWindowIcon( QPixmap( QStringLiteral(":/core/icon64.png") 
) );
        m_toplevel->setAttribute( Qt::WA_DeleteOnClose, false );
+       m_toplevel->installEventFilter(this);
 
        if( fullscreen == false )
        {
                m_toplevel->setWindowFlags( Qt::Window | 
Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint );
-
-#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
-               const auto screenGeometry = 
m_toplevel->screen()->availableGeometry();
-#else
-               const auto screenGeometry = 
QApplication::desktop()->availableGeometry( m_toplevel );
-#endif
-
-               m_toplevel->resize( screenGeometry.size() - QSize( 10, 30 ) );
        }
 
        m_vncView = new VncViewWidget( m_computerControlInterface, viewport, 
m_toplevel );
 
-       auto toplevelLayout = new QVBoxLayout;
-       toplevelLayout->setContentsMargins( 0, 0, 0, 0 );
-       toplevelLayout->setSpacing( 0 );
-       toplevelLayout->addWidget( m_vncView );
-
-       m_toplevel->setLayout( toplevelLayout );
-
        connect( m_toplevel, &QObject::destroyed, this, 
&DemoClient::viewDestroyed );
        connect( m_vncView, &VncViewWidget::sizeHintChanged, this, 
&DemoClient::resizeToplevelWidget );
 
@@ -90,6 +70,8 @@
                m_toplevel->show();
        }
 
+       resizeToplevelWidget();
+
        VeyonCore::platform().coreFunctions().raiseWindow( m_toplevel, 
fullscreen );
 
        VeyonCore::platform().coreFunctions().disableScreenSaver();
@@ -106,6 +88,19 @@
 
 
 
+bool DemoClient::eventFilter(QObject* watched, QEvent* event)
+{
+       if (watched == m_toplevel && event->type() == QEvent::Resize)
+       {
+               m_vncView->setFixedSize(m_toplevel->size());
+               return true;
+       }
+
+       return QObject::eventFilter(watched, event);
+}
+
+
+
 void DemoClient::viewDestroyed( QObject* obj )
 {
        // prevent double deletion of toplevel widget
@@ -123,10 +118,10 @@
 {
        if( m_toplevel->windowState() & Qt::WindowFullScreen )
        {
-               m_vncView->resize( m_toplevel->size() );
+               m_vncView->setFixedSize(m_toplevel->size());
        }
        else
        {
-               m_toplevel->resize( m_vncView->sizeHint() );
+               m_toplevel->resize(m_vncView->sizeHint());
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/plugins/demo/DemoClient.h 
new/veyon-4.7.2/plugins/demo/DemoClient.h
--- old/veyon-4.7.1/plugins/demo/DemoClient.h   2022-01-14 14:20:38.000000000 
+0100
+++ new/veyon-4.7.2/plugins/demo/DemoClient.h   2022-02-16 15:41:53.000000000 
+0100
@@ -37,6 +37,9 @@
        DemoClient( const QString& host, int port, bool fullscreen, QRect 
viewport, QObject* parent = nullptr );
        ~DemoClient() override;
 
+protected:
+       bool eventFilter(QObject* watched, QEvent* event) override;
+
 private:
        void viewDestroyed( QObject* obj );
        void resizeToplevelWidget();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/veyon-4.7.1/plugins/powercontrol/PowerControlFeaturePlugin.cpp 
new/veyon-4.7.2/plugins/powercontrol/PowerControlFeaturePlugin.cpp
--- old/veyon-4.7.1/plugins/powercontrol/PowerControlFeaturePlugin.cpp  
2022-01-14 14:20:38.000000000 +0100
+++ new/veyon-4.7.2/plugins/powercontrol/PowerControlFeaturePlugin.cpp  
2022-02-26 14:52:46.000000000 +0100
@@ -22,6 +22,7 @@
  *
  */
 
+#include <QEvent>
 #include <QMessageBox>
 #include <QNetworkInterface>
 #include <QProgressBar>
@@ -287,6 +288,20 @@
 
 
 
+bool PowerControlFeaturePlugin::eventFilter(QObject* watched, QEvent* event)
+{
+       if (event->type() == QEvent::Close &&
+               qobject_cast<QProgressDialog *>(watched))
+       {
+               event->ignore();
+               return true;
+       }
+
+       return QObject::eventFilter(watched, event);
+}
+
+
+
 bool PowerControlFeaturePlugin::confirmFeatureExecution( const Feature& 
feature, bool all, QWidget* parent )
 {
        if( VeyonCore::config().confirmUnsafeActions() == false )
@@ -411,7 +426,7 @@
 
        if( remainingSeconds <= 0 )
        {
-               VeyonCore::platform().coreFunctions().powerDown( false );
+               dialog->accept();
        }
 
 }
@@ -424,6 +439,7 @@
        dialog.setMaximum( shutdownTimeout );
        dialog.setCancelButton( nullptr );
        dialog.setWindowFlags( Qt::Window | Qt::CustomizeWindowHint | 
Qt::WindowTitleHint );
+       dialog.installEventFilter(this);
 
        auto progressBar = dialog.findChild<QProgressBar *>();
        if( progressBar )
@@ -444,4 +460,6 @@
        } );
 
        dialog.exec();
+
+       VeyonCore::platform().coreFunctions().powerDown(false);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/veyon-4.7.1/plugins/powercontrol/PowerControlFeaturePlugin.h 
new/veyon-4.7.2/plugins/powercontrol/PowerControlFeaturePlugin.h
--- old/veyon-4.7.1/plugins/powercontrol/PowerControlFeaturePlugin.h    
2022-01-14 14:20:38.000000000 +0100
+++ new/veyon-4.7.2/plugins/powercontrol/PowerControlFeaturePlugin.h    
2022-02-26 14:52:46.000000000 +0100
@@ -109,6 +109,9 @@
        CommandLinePluginInterface::RunResult handle_help( const QStringList& 
arguments );
        CommandLinePluginInterface::RunResult handle_on( const QStringList& 
arguments );
 
+protected:
+       bool eventFilter(QObject* watched, QEvent* event) override;
+
 private:
        bool confirmFeatureExecution( const Feature& feature, bool all, 
QWidget* parent );
        static bool broadcastWOLPacket( QString macAddress );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessFeaturePlugin.cpp 
new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessFeaturePlugin.cpp
--- old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessFeaturePlugin.cpp  
2022-01-14 14:20:38.000000000 +0100
+++ new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessFeaturePlugin.cpp  
2022-02-26 14:52:46.000000000 +0100
@@ -34,6 +34,7 @@
 #include "VeyonConfiguration.h"
 #include "VeyonMasterInterface.h"
 #include "VeyonServerInterface.h"
+#include "VncView.h"
 
 
 RemoteAccessFeaturePlugin::RemoteAccessFeaturePlugin( QObject* parent ) :
@@ -149,7 +150,14 @@
 
        if (message.featureUid() == m_clipboardExchangeFeature.uid())
        {
-               loadClipboardData(message);
+               for (auto it = m_vncViews.constBegin(), end = 
m_vncViews.constEnd(); it != end; ++it)
+               {
+                       if (it->first && it->second->computerControlInterface() 
== computerControlInterface)
+                       {
+                               loadClipboardData(message);
+                       }
+               }
+
                return true;
        }
 
@@ -354,7 +362,6 @@
 void RemoteAccessFeaturePlugin::createRemoteAccessWindow(const 
ComputerControlInterface::Pointer& computerControlInterface,
                                                                                
                                 bool viewOnly)
 {
-       new RemoteAccessWidget(computerControlInterface, viewOnly, 
remoteViewEnabled() && remoteControlEnabled());
        auto widget = new RemoteAccessWidget(computerControlInterface, viewOnly,
                                                                                
  remoteViewEnabled() && remoteControlEnabled());
 
@@ -363,6 +370,22 @@
                         {
                                 
sendClipboardData(widget->computerControlInterface());
                         });
+
+       connect(widget, &QObject::destroyed, this, [this](QObject* view) {
+               for (auto it = m_vncViews.begin(); it != m_vncViews.end();)
+               {
+                       if (it->first == nullptr || it->first == view)
+                       {
+                               it = m_vncViews.erase(it);
+                       }
+                       else
+                       {
+                               it++;
+                       }
+               }
+       });
+
+       m_vncViews.append(qMakePair(widget, widget->vncView()));
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessFeaturePlugin.h 
new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessFeaturePlugin.h
--- old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessFeaturePlugin.h    
2022-01-14 14:20:38.000000000 +0100
+++ new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessFeaturePlugin.h    
2022-02-26 14:52:46.000000000 +0100
@@ -28,6 +28,7 @@
 #include "FeatureProviderInterface.h"
 #include "CommandLinePluginInterface.h"
 
+class VncView;
 
 class RemoteAccessFeaturePlugin : public QObject, CommandLinePluginInterface, 
FeatureProviderInterface, PluginInterface
 {
@@ -149,4 +150,6 @@
        QString m_clipboardText;
        QImage m_clipboardImage;
 
+       QList<QPair<QPointer<QObject>, VncView *> > m_vncViews{};
+
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessWidget.cpp 
new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessWidget.cpp
--- old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessWidget.cpp 2022-01-14 
14:20:38.000000000 +0100
+++ new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessWidget.cpp 2022-02-26 
14:52:46.000000000 +0100
@@ -93,30 +93,30 @@
 #if QT_VERSION < 0x050600
 #warning Building legacy compat code for unsupported version of Qt
        connect( shortcutMenu->addAction( tr( "Ctrl+Alt+Del" ) ), 
&QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutCtrlAltDel ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutCtrlAltDel ); } );
        connect( shortcutMenu->addAction( tr( "Ctrl+Esc" ) ), 
&QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutCtrlEscape ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutCtrlEscape ); } );
        connect( shortcutMenu->addAction( tr( "Alt+Tab" ) ), 
&QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutAltTab ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutAltTab ); } );
        connect( shortcutMenu->addAction( tr( "Alt+F4" ) ), &QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutAltF4 ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutAltF4 ); } );
        connect( shortcutMenu->addAction( tr( "Win+Tab" ) ), 
&QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutWinTab ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutWinTab ); } );
        connect( shortcutMenu->addAction( tr( "Win" ) ), &QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutWin ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutWin ); } );
        connect( shortcutMenu->addAction( tr( "Menu" ) ), &QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutMenu ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutMenu ); } );
        connect( shortcutMenu->addAction( tr( "Alt+Ctrl+F1" ) ), 
&QAction::triggered,
-                        vncView, [=]() { vncView->sendShortcut( 
VncView::ShortcutAltCtrlF1 ); } );
+                        this, [=]() { vncView->sendShortcut( 
VncView::ShortcutAltCtrlF1 ); } );
 #else
-       shortcutMenu->addAction( tr( "Ctrl+Alt+Del" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutCtrlAltDel ); }  );
-       shortcutMenu->addAction( tr( "Ctrl+Esc" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutCtrlEscape ); }  );
-       shortcutMenu->addAction( tr( "Alt+Tab" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutAltTab ); }  );
-       shortcutMenu->addAction( tr( "Alt+F4" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutAltF4 ); }  );
-       shortcutMenu->addAction( tr( "Win+Tab" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutWinTab ); }  );
-       shortcutMenu->addAction( tr( "Win" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutWin ); }  );
-       shortcutMenu->addAction( tr( "Menu" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutMenu ); }  );
-       shortcutMenu->addAction( tr( "Alt+Ctrl+F1" ), vncView, [=]() { 
vncView->sendShortcut( VncView::ShortcutAltCtrlF1 ); }  );
+       shortcutMenu->addAction( tr( "Ctrl+Alt+Del" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutCtrlAltDel ); }  );
+       shortcutMenu->addAction( tr( "Ctrl+Esc" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutCtrlEscape ); }  );
+       shortcutMenu->addAction( tr( "Alt+Tab" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutAltTab ); }  );
+       shortcutMenu->addAction( tr( "Alt+F4" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutAltF4 ); }  );
+       shortcutMenu->addAction( tr( "Win+Tab" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutWinTab ); }  );
+       shortcutMenu->addAction( tr( "Win" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutWin ); }  );
+       shortcutMenu->addAction( tr( "Menu" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutMenu ); }  );
+       shortcutMenu->addAction( tr( "Alt+Ctrl+F1" ), this, [=]() { 
vncView->sendShortcut( VncView::ShortcutAltCtrlF1 ); }  );
 #endif
 
        m_sendShortcutButton->setMenu( shortcutMenu );
@@ -144,6 +144,9 @@
 
        connect( vncView->computerControlInterface().data(), 
&ComputerControlInterface::screensChanged,
                         this, &RemoteAccessWidgetToolBar::updateScreens );
+
+       connect( m_parent, 
&RemoteAccessWidget::screenChangedInRemoteAccessWidget,
+                        this, 
&RemoteAccessWidgetToolBar::updateScreenSelectActions );
 }
 
 
@@ -182,6 +185,26 @@
 
 
 
+void RemoteAccessWidgetToolBar::updateScreenSelectActions( int newScreen )
+{
+       const auto screens = 
m_parent->vncView()->computerControlInterface()->screens();
+       const auto m_screenSelectActions = 
m_selectScreenButton->menu()->actions();
+       for (const auto& screenSelectAction : m_screenSelectActions)
+       {
+               if ( newScreen == -1 )
+               {
+                       screenSelectAction->setChecked(true);
+                       break;
+               }
+               if ( screenSelectAction->text() == screens[newScreen].name )
+               {
+                       screenSelectAction->setChecked(true);
+               }
+       }
+}
+
+
+
 void RemoteAccessWidgetToolBar::leaveEvent( QEvent *event )
 {
        disappear();
@@ -326,6 +349,8 @@
 
        showNormal();
 
+       updateSize();
+
        setViewOnly( startViewOnly );
 }
 
@@ -338,6 +363,13 @@
 
 
 
+VncView* RemoteAccessWidget::vncView() const
+{
+       return m_vncView;
+}
+
+
+
 bool RemoteAccessWidget::eventFilter( QObject* object, QEvent* event )
 {
        if( event->type() == QEvent::KeyRelease &&
@@ -353,6 +385,52 @@
                m_toolBar->disappear();
        }
 
+       if( event->type() == QEvent::KeyPress && m_vncView->viewOnly() )
+       {
+               const auto screens = 
m_vncView->computerControlInterface()->screens();
+               const auto key = static_cast<QKeyEvent *>( event )->key();
+               if ( screens.size() > 1 && ( key == Qt::Key_Tab || key == 
Qt::Key_Backtab ) )
+               {
+                       if( key == Qt::Key_Tab )
+                       {
+                               if ( m_currentScreen < screens.size() - 1 )
+                               {
+                                       m_currentScreen++;
+                               } else
+                               {
+                                       m_currentScreen = -1;
+                               }
+                       }
+
+                       if( key == Qt::Key_Backtab )
+                       {
+                               if ( m_currentScreen == -1 )
+                               {
+                                       m_currentScreen = screens.size()-1;
+                               } else if ( m_currentScreen > 0 )
+                               {
+                                       m_currentScreen--;
+                               } else
+                               {
+                                       m_currentScreen = -1;
+                               }
+                       }
+
+                       if ( m_currentScreen == -1)
+                       {
+                               m_vncView->setViewport( {} );
+                       }
+                       else
+                       {
+                               
m_vncView->setViewport(screens[m_currentScreen].geometry);
+                       }
+                       Q_EMIT 
screenChangedInRemoteAccessWidget(m_currentScreen);
+                       return true;
+               }
+
+               return false;
+       }
+
        return QWidget::eventFilter( object, event );
 }
 
@@ -387,7 +465,7 @@
 
 void RemoteAccessWidget::resizeEvent( QResizeEvent* event )
 {
-       m_vncView->resize( size() );
+       m_vncView->setFixedSize(size());
        m_toolBar->setFixedSize( width(), m_toolBar->height() );
 
        QWidget::resizeEvent( event );
@@ -397,8 +475,7 @@
 
 void RemoteAccessWidget::updateSize()
 {
-       if( !( windowState() & Qt::WindowFullScreen ) &&
-                       m_vncView->sizeHint().isEmpty() == false )
+       if (!(windowState() & Qt::WindowFullScreen))
        {
                resize( m_vncView->sizeHint() );
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessWidget.h 
new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessWidget.h
--- old/veyon-4.7.1/plugins/remoteaccess/RemoteAccessWidget.h   2022-01-14 
14:20:38.000000000 +0100
+++ new/veyon-4.7.2/plugins/remoteaccess/RemoteAccessWidget.h   2022-02-25 
15:27:08.000000000 +0100
@@ -30,6 +30,7 @@
 
 class QActionGroup;
 
+class VncView;
 class VncViewWidget;
 class RemoteAccessWidget;
 class ToolButton;
@@ -47,6 +48,7 @@
        void appear();
        void disappear();
        void updateControls( bool viewOnly );
+       void updateScreenSelectActions( int newScreen );
 
 
 protected:
@@ -93,10 +95,7 @@
                return m_computerControlInterface;
        }
 
-       VncViewWidget* vncView() const
-       {
-               return m_vncView;
-       }
+       VncView* vncView() const;
 
        void toggleFullScreen( bool );
        void setViewOnly( bool viewOnly );
@@ -122,4 +121,9 @@
 
        static constexpr int AppearDelay = 500;
 
+       int m_currentScreen{-1};
+
+Q_SIGNALS:
+       void screenChangedInRemoteAccessWidget( int newScreen );
+
 } ;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/project.yml new/veyon-4.7.2/project.yml
--- old/veyon-4.7.1/project.yml 2022-01-24 10:41:45.000000000 +0100
+++ new/veyon-4.7.2/project.yml 2022-02-26 14:52:46.000000000 +0100
@@ -1,6 +1,6 @@
 project:
   name: Veyon
-  version: 4.7.1
+  version: 4.7.2
   copyright: 2004-2022
   author: Tobias Junghans
   contact: Tobias Junghans <toby...@veyon.io>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/translations/veyon_fr.ts 
new/veyon-4.7.2/translations/veyon_fr.ts
--- old/veyon-4.7.1/translations/veyon_fr.ts    2022-01-24 10:48:51.000000000 
+0100
+++ new/veyon-4.7.2/translations/veyon_fr.ts    2022-02-27 14:03:46.000000000 
+0100
@@ -2621,7 +2621,7 @@
     </message>
     <message>
         <source>Query timeout</source>
-        <translation type="unfinished"></translation>
+        <translation>D??lai d&apos;expiration de la requ??te</translation>
     </message>
     <message>
         <source> ms</source>
@@ -3398,11 +3398,11 @@
     </message>
     <message>
         <source>Exchange clipboard contents</source>
-        <translation type="unfinished"></translation>
+        <translation>??changer le contenu du presse-papiers</translation>
     </message>
     <message>
         <source>No computer has been selected so you can enter a hostname or 
IP address of a computer for manual access:</source>
-        <translation type="unfinished"></translation>
+        <translation>Aucun ordinateur n&apos;a ??t?? s??lectionn??, vous 
pouvez donc saisir le nom d&apos;h??te ou l&apos;adresse IP d&apos;un 
ordinateur pour un acc??s manuel??:</translation>
     </message>
 </context>
 <context>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/translations/veyon_it.ts 
new/veyon-4.7.2/translations/veyon_it.ts
--- old/veyon-4.7.1/translations/veyon_it.ts    2022-01-24 10:48:50.000000000 
+0100
+++ new/veyon-4.7.2/translations/veyon_it.ts    2022-02-27 14:03:46.000000000 
+0100
@@ -2608,7 +2608,7 @@
     </message>
     <message>
         <source>Query timeout</source>
-        <translation type="unfinished"></translation>
+        <translation>Timeout query</translation>
     </message>
     <message>
         <source> ms</source>
@@ -3385,11 +3385,11 @@
     </message>
     <message>
         <source>Exchange clipboard contents</source>
-        <translation type="unfinished"></translation>
+        <translation>Scambia il contenuto degli appunti</translation>
     </message>
     <message>
         <source>No computer has been selected so you can enter a hostname or 
IP address of a computer for manual access:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nessun computer ?? stato selezionato, quindi puoi 
inserire un nome host o un indirizzo IP di un computer per l&apos;accesso 
manuale:</translation>
     </message>
 </context>
 <context>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/translations/veyon_ja.ts 
new/veyon-4.7.2/translations/veyon_ja.ts
--- old/veyon-4.7.1/translations/veyon_ja.ts    2022-01-24 10:48:51.000000000 
+0100
+++ new/veyon-4.7.2/translations/veyon_ja.ts    2022-02-27 14:03:46.000000000 
+0100
@@ -1900,7 +1900,7 @@
     </message>
     <message>
         <source>Rotate log files</source>
-        <translation type="unfinished"></translation>
+        <translation>??????????????????????????????????????????</translation>
     </message>
     <message>
         <source>x</source>
@@ -2980,7 +2980,7 @@
     </message>
     <message>
         <source>Hide computer filter field</source>
-        <translation type="unfinished"></translation>
+        
<translation>&quot;??????????????????????????????&quot;???????????????</translation>
     </message>
     <message>
         <source>Actions such as rebooting or powering down computers</source>
@@ -3072,7 +3072,7 @@
     </message>
     <message>
         <source>Hide local session</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????????????????????????????</translation>
     </message>
     <message>
         <source> px</source>
@@ -3665,7 +3665,7 @@
     </message>
     <message>
         <source>Network port numbers</source>
-        <translation type="unfinished"></translation>
+        <translation>?????????????????????</translation>
     </message>
     <message>
         <source>Veyon server</source>
@@ -3677,7 +3677,7 @@
     </message>
     <message>
         <source>Feature manager</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????????????????</translation>
     </message>
     <message>
         <source>Demo server</source>
@@ -3685,23 +3685,23 @@
     </message>
     <message>
         <source>Miscellaneous network settings</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????????????????????????????</translation>
     </message>
     <message>
         <source>Session mode</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????????????????</translation>
     </message>
     <message>
         <source>Local session mode (single server instance for primary local 
session)</source>
-        <translation type="unfinished"></translation>
+        
<translation>??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</translation>
     </message>
     <message>
         <source>Active session mode (single server instance for active local 
or remote session)</source>
-        <translation type="unfinished"></translation>
+        
<translation>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</translation>
     </message>
     <message>
         <source>Multi session mode (distinct server instance for each local 
and remote desktop session)</source>
-        <translation type="unfinished"></translation>
+        
<translation>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</translation>
     </message>
 </context>
 <context>
@@ -4255,7 +4255,7 @@
     </message>
     <message>
         <source>Use input device interception driver</source>
-        <translation type="unfinished"></translation>
+        
<translation>???????????????????????????????????????????????????</translation>
     </message>
 </context>
 <context>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/translations/veyon_uk.ts 
new/veyon-4.7.2/translations/veyon_uk.ts
--- old/veyon-4.7.1/translations/veyon_uk.ts    2022-01-24 10:48:50.000000000 
+0100
+++ new/veyon-4.7.2/translations/veyon_uk.ts    2022-02-27 14:03:46.000000000 
+0100
@@ -2620,7 +2620,7 @@
     </message>
     <message>
         <source>Query timeout</source>
-        <translation type="unfinished"></translation>
+        <translation>?????????????????????? ???????? ???????????????????? ???? 
?????????????????? ????????????</translation>
     </message>
     <message>
         <source> ms</source>
@@ -3397,11 +3397,11 @@
     </message>
     <message>
         <source>Exchange clipboard contents</source>
-        <translation type="unfinished"></translation>
+        <translation>?????????? ?????????????? ???????????? ???????????? 
????????????</translation>
     </message>
     <message>
         <source>No computer has been selected so you can enter a hostname or 
IP address of a computer for manual access:</source>
-        <translation type="unfinished"></translation>
+        <translation>???? ?????????????? ?????????????? 
????????&apos;??????????. ???? ???????????? ???????????? ?????????? ?????????? 
?????? IP-???????????? ????????&apos;?????????? ?????? ?????????????? 
????????????:</translation>
     </message>
 </context>
 <context>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/translations/veyon_zh_CN.ts 
new/veyon-4.7.2/translations/veyon_zh_CN.ts
--- old/veyon-4.7.1/translations/veyon_zh_CN.ts 2022-01-24 10:48:51.000000000 
+0100
+++ new/veyon-4.7.2/translations/veyon_zh_CN.ts 2022-02-27 14:03:46.000000000 
+0100
@@ -736,7 +736,7 @@
     </message>
     <message>
         <source>The import of CSV files is possible through the command line 
interface. For more information, see the &lt;a 
href=&quot;https://docs.veyon.io/en/latest/admin/cli.html#network-object-directory&quot;&gt;online
 documentation&lt;/a&gt;.</source>
-        
<translation>??????????????????????????????CSV?????????????????????????????????&lt;a
 
href=&quot;https://docs.veyon.io/en/latest/admin/cli.html#network-object-directory&quot;&gt;????????????&lt;/a&gt;???</translation>
+        
<translation>??????????????????????????????CSV?????????????????????????????????&lt;a
 
href=&quot;https://docs.veyon.io/en/latest/admin/cli.html#network-object-directory&quot;&gt;????????????&lt;/a&gt;???</translation>
     </message>
     <message>
         <source>New location</source>
@@ -1344,11 +1344,11 @@
     </message>
     <message>
         <source>Share your own screen in a window</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????????????????????????????</translation>
     </message>
     <message>
         <source>Share selected user&apos;s screen in fullscreen mode</source>
-        <translation type="unfinished"></translation>
+        <translation>??????????????????????????????????????????</translation>
     </message>
     <message>
         <source>In this mode the screen of the selected user is being 
displayed in full screen mode on all computers while the input devices of the 
users are locked.</source>
@@ -1356,7 +1356,7 @@
     </message>
     <message>
         <source>Share selected user&apos;s screen in a window</source>
-        <translation type="unfinished"></translation>
+        <translation>???????????????????????????????????????</translation>
     </message>
     <message>
         <source>In this mode the screen of the selected user being displayed 
in a window on all computers. The users are able to switch to other windows as 
needed.</source>
@@ -1364,15 +1364,15 @@
     </message>
     <message>
         <source>Please select a user screen to share.</source>
-        <translation type="unfinished"></translation>
+        <translation>??????????????????????????????????????????</translation>
     </message>
     <message>
         <source>Please select only one user screen to share.</source>
-        <translation type="unfinished"></translation>
+        
<translation>?????????????????????????????????????????????</translation>
     </message>
     <message>
         <source>All screens</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????</translation>
     </message>
 </context>
 <context>
@@ -1426,11 +1426,11 @@
     </message>
     <message>
         <source>Applications &amp; websites</source>
-        <translation type="unfinished"></translation>
+        <translation>?????? &amp; ??????</translation>
     </message>
     <message>
         <source>Predefined applications</source>
-        <translation type="unfinished"></translation>
+        <translation>??????????????????</translation>
     </message>
     <message>
         <source>Add new application</source>
@@ -1442,7 +1442,7 @@
     </message>
     <message>
         <source>Add new website</source>
-        <translation type="unfinished"></translation>
+        <translation>??????????????????</translation>
     </message>
     <message>
         <source>New application</source>
@@ -1481,7 +1481,7 @@
     </message>
     <message>
         <source>Custom application</source>
-        <translation type="unfinished"></translation>
+        <translation>???????????????</translation>
     </message>
     <message>
         <source>Start apps and open websites in user sessions</source>
@@ -1532,7 +1532,7 @@
     </message>
     <message>
         <source>Custom application</source>
-        <translation type="unfinished"></translation>
+        <translation>???????????????</translation>
     </message>
 </context>
 <context>
@@ -1601,19 +1601,19 @@
     </message>
     <message>
         <source>Lock the screen</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????</translation>
     </message>
     <message>
         <source>Display a text message</source>
-        <translation type="unfinished"></translation>
+        <translation>??????????????????</translation>
     </message>
     <message>
         <source>Test message</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????</translation>
     </message>
     <message>
         <source>Start an application</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????</translation>
     </message>
     <message>
         <source>Stops the specified feature on the specified host by 
connecting to the Veyon Server running remotely. The feature can be specified 
by name or UID. Use the ``show`` command to see all available features.</source>
@@ -1621,7 +1621,7 @@
     </message>
     <message>
         <source>Unlock the screen</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????</translation>
     </message>
     <message>
         <source>The specified command does not exist or no help is available 
for it.</source>
@@ -1653,7 +1653,7 @@
     </message>
     <message>
         <source>Plugin</source>
-        <translation type="unfinished"></translation>
+        <translation>??????</translation>
     </message>
     <message>
         <source>Invalid feature name or UID specified</source>
@@ -3493,7 +3493,7 @@
     </message>
     <message>
         <source>All screens</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????</translation>
     </message>
 </context>
 <context>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/veyon-4.7.1/translations/veyon_zh_TW.ts 
new/veyon-4.7.2/translations/veyon_zh_TW.ts
--- old/veyon-4.7.1/translations/veyon_zh_TW.ts 2022-01-24 10:48:50.000000000 
+0100
+++ new/veyon-4.7.2/translations/veyon_zh_TW.ts 2022-02-27 14:03:46.000000000 
+0100
@@ -2621,7 +2621,7 @@
     </message>
     <message>
         <source>Query timeout</source>
-        <translation type="unfinished"></translation>
+        <translation>????????????</translation>
     </message>
     <message>
         <source> ms</source>
@@ -3398,11 +3398,11 @@
     </message>
     <message>
         <source>Exchange clipboard contents</source>
-        <translation type="unfinished"></translation>
+        <translation>?????????????????????</translation>
     </message>
     <message>
         <source>No computer has been selected so you can enter a hostname or 
IP address of a computer for manual access:</source>
-        <translation type="unfinished"></translation>
+        
<translation>???????????????????????????????????????????????????????????? IP 
???????????????????????????:</translation>
     </message>
 </context>
 <context>

Reply via email to