Compare commits

..

8 Commits

Author SHA1 Message Date
Nicolas Fella
f8cd48fd5d Port framebuffers away from deprecated QDesktopWidget
Use QPlatformNativeInterface to get the WId instead
2022-08-04 13:22:57 +02:00
Nicolas Fella
04494dfeb0 Fix broken WId refactoring
Actually remove the WId member from the abtract framebuffer class and use the member in xcbframebuffer

qtframebuffer also uses the WId so add a member there
2022-08-04 11:57:55 +02:00
Nicolas Fella
4169a9f50a Don't pass unused window ids around
The wid is only relevant for the xcb framebuffer

We can just query it there, no need to pass it around everywhere
2022-08-03 22:00:16 +02:00
Friedrich W. H. Kossebau
5173e7ff29 Port away from deprecated KMessageBox::about()
GIT_SILENT
2022-07-16 01:03:44 +02:00
Friedrich W. H. Kossebau
745a5d53f2 Use ECMDeprecationSettings
GIT_SILENT
2022-07-16 01:01:12 +02:00
Friedrich W. H. Kossebau
ce0d6fe648 Adapt min Qt version to one implied by current min KF version
GIT_SILENT
2022-07-16 00:59:26 +02:00
Friedrich W. H. Kossebau
42ed3c5707 Remove definitions duplicated from KDE_COMPILERSETTINGS_LEVEL 5.91
GIT_SILENT
2022-07-16 00:58:55 +02:00
Albert Astals Cid
2cd15b6313 GIT_SILENT Upgrade release service version to 22.11.70. 2022-07-13 00:04:53 +02:00
24 changed files with 59 additions and 85 deletions

View File

@@ -2,13 +2,13 @@ cmake_minimum_required(VERSION 3.16)
# KDE Application Version, managed by release script
set (RELEASE_SERVICE_VERSION_MAJOR "22")
set (RELEASE_SERVICE_VERSION_MINOR "08")
set (RELEASE_SERVICE_VERSION_MICRO "3")
set (RELEASE_SERVICE_VERSION_MINOR "11")
set (RELEASE_SERVICE_VERSION_MICRO "70")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(krfb VERSION ${RELEASE_SERVICE_VERSION})
set(QT_MIN_VERSION 5.15.0)
set(QT_MIN_VERSION 5.15.2)
set(KF5_MIN_VERSION 5.91.0)
find_package(ECM ${KF5_MIN_VERSION} NO_MODULE REQUIRED)
@@ -21,6 +21,7 @@ include(ECMInstallIcons)
include(ECMAddAppIcon)
include(ECMSetupVersion)
include(ECMQtDeclareLoggingCategory)
include(ECMDeprecationSettings)
include(FeatureSummary)
include(CheckIncludeFile)
@@ -60,22 +61,11 @@ if(WIN32)
set(CMAKE_REQUIRED_INCLUDES ${KDEWIN32_INCLUDES})
endif(WIN32)
add_definitions(
-DQT_DEPRECATED_WARNINGS
-DQT_USE_QSTRINGBUILDER
-DQT_NO_CAST_TO_ASCII
-DQT_NO_CAST_FROM_ASCII
-DQT_NO_CAST_FROM_BYTEARRAY
-DQT_STRICT_ITERATORS
-DQT_NO_URL_CAST_FROM_STRING
-DQT_NO_SIGNALS_SLOTS_KEYWORDS
-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT
ecm_set_disabled_deprecation_versions(
QT 5.15.2
KF 5.91
)
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f02)
add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055A00)
include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} )
find_package(LibVNCServer REQUIRED)

View File

@@ -961,8 +961,8 @@ PWFrameBuffer::Private::~Private()
}
}
PWFrameBuffer::PWFrameBuffer(WId winid, QObject *parent)
: FrameBuffer (winid, parent),
PWFrameBuffer::PWFrameBuffer(QObject *parent)
: FrameBuffer (parent),
d(new Private(this))
{
fb = nullptr;

View File

@@ -30,7 +30,7 @@ public:
};
using Streams = QList<Stream>;
PWFrameBuffer(WId winid, QObject *parent = nullptr);
PWFrameBuffer(QObject *parent = nullptr);
virtual ~PWFrameBuffer() override;
void initDBus();

View File

@@ -30,11 +30,9 @@ PWFrameBufferPlugin::PWFrameBufferPlugin(QObject *parent, const QVariantList &ar
}
FrameBuffer *PWFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
FrameBuffer *PWFrameBufferPlugin::frameBuffer(const QVariantMap &args)
{
//NOTE WId is irrelevant in Wayland
auto pwfb = new PWFrameBuffer(id);
auto pwfb = new PWFrameBuffer;
if (args.contains(QLatin1String("name"))) {
pwfb->startVirtualMonitor(args[QStringLiteral("name")].toString(), args[QStringLiteral("resolution")].toSize(), args[QStringLiteral("scale")].toDouble());
} else {

View File

@@ -34,7 +34,7 @@ class PWFrameBufferPlugin: public FrameBufferPlugin
public:
PWFrameBufferPlugin(QObject *parent, const QVariantList &args);
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
FrameBuffer *frameBuffer(const QVariantMap &args) override;
private:
Q_DISABLE_COPY(PWFrameBufferPlugin)

View File

@@ -24,6 +24,7 @@ target_link_libraries (krfb_framebuffer_qt
Qt5::Core
Qt5::Gui
KF5::CoreAddons
Qt::GuiPrivate
krfbprivate
)

View File

@@ -13,17 +13,20 @@
#include <QRegion>
#include <QPixmap>
#include <QBitmap>
#include <QGuiApplication>
#include <QApplication>
#include <QScreen>
#include <qpa/qplatformnativeinterface.h>
const int UPDATE_TIME = 500;
QtFrameBuffer::QtFrameBuffer(WId id, QObject *parent)
: FrameBuffer(id, parent)
QtFrameBuffer::QtFrameBuffer(QObject *parent)
: FrameBuffer(parent)
{
QScreen *screen = QGuiApplication::primaryScreen();
QPlatformNativeInterface* native = qApp->platformNativeInterface();
if (screen) {
win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), screen));
primaryScreen = screen;
fbImage = screen->grabWindow(win).toImage();
fb = new char[fbImage.sizeInBytes()];

View File

@@ -22,7 +22,7 @@ class QtFrameBuffer : public FrameBuffer
{
Q_OBJECT
public:
explicit QtFrameBuffer(WId id, QObject *parent = nullptr);
explicit QtFrameBuffer(QObject *parent = nullptr);
~QtFrameBuffer() override;
@@ -38,6 +38,7 @@ public Q_SLOTS:
void updateFrameBuffer();
private:
WId win;
QImage fbImage;
QTimer *t;
QScreen *primaryScreen;

View File

@@ -31,10 +31,10 @@ QtFrameBufferPlugin::QtFrameBufferPlugin(QObject *parent, const QVariantList &ar
{
}
FrameBuffer *QtFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
FrameBuffer *QtFrameBufferPlugin::frameBuffer(const QVariantMap &args)
{
Q_UNUSED(args);
return new QtFrameBuffer(id);
return new QtFrameBuffer;
}
#include "qtframebufferplugin.moc"

View File

@@ -34,7 +34,7 @@ class QtFrameBufferPlugin : public FrameBufferPlugin
public:
QtFrameBufferPlugin(QObject *parent, const QVariantList &args);
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
FrameBuffer *frameBuffer(const QVariantMap &args) override;
private:
Q_DISABLE_COPY(QtFrameBufferPlugin)

View File

@@ -20,6 +20,7 @@ add_library(krfb_framebuffer_xcb MODULE ${krfb_framebuffer_xcb_SRCS})
target_link_libraries (krfb_framebuffer_xcb
Qt5::Core
Qt5::Gui
Qt::GuiPrivate
XCB::XCB
XCB::RENDER
XCB::SHAPE

View File

@@ -19,10 +19,11 @@
#include <sys/shm.h>
#include <QX11Info>
#include <QCoreApplication>
#include <QApplication>
#include <QGuiApplication>
#include <QScreen>
#include <QAbstractNativeEventFilter>
#include <qpa/qplatformnativeinterface.h>
class KrfbXCBEventFilter: public QAbstractNativeEventFilter
@@ -130,6 +131,7 @@ public:
bool running;
QRect area; // capture area, primary monitor coordinates
WId win;
};
@@ -144,8 +146,8 @@ static xcb_screen_t *get_xcb_screen(xcb_connection_t *conn, int screen_num) {
XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent):
FrameBuffer(winid, parent), d(new XCBFrameBuffer::P)
XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
FrameBuffer(parent), d(new XCBFrameBuffer::P)
{
d->running = false;
d->damage = XCB_NONE;
@@ -162,6 +164,8 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent):
QScreen *primaryScreen = QGuiApplication::primaryScreen();
if (primaryScreen) {
QPlatformNativeInterface* native = qApp->platformNativeInterface();
d->win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), primaryScreen));
qreal scaleFactor = primaryScreen->devicePixelRatio();
d->area = { primaryScreen->geometry().topLeft() * scaleFactor,
primaryScreen->geometry().bottomRight() * scaleFactor };
@@ -177,7 +181,7 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent):
}
d->framebufferImage = xcb_image_get(QX11Info::connection(),
this->win,
d->win,
d->area.left(),
d->area.top(),
d->area.width(),
@@ -246,7 +250,7 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent):
// will return 1 on success (yes!)
int shmget_res = xcb_image_shm_get(
QX11Info::connection(),
this->win,
d->win,
d->updateTile,
d->shminfo,
d->area.left(), // x
@@ -554,7 +558,7 @@ QList<QRect> XCBFrameBuffer::modifiedTiles() {
// translate whe coordinates
xcb_shm_get_image_cookie_t sgi_cookie = xcb_shm_get_image(
QX11Info::connection(),
this->win,
d->win,
d->area.left() + r.left(),
d->area.top() + r.top(),
r.width(),
@@ -609,7 +613,7 @@ QList<QRect> XCBFrameBuffer::modifiedTiles() {
// need function that copies pixels from one image to another
xcb_image_t *damagedImage = xcb_image_get(
QX11Info::connection(),
this->win,
d->win,
r.left(),
r.top(),
r.width(),
@@ -649,7 +653,7 @@ void XCBFrameBuffer::startMonitor() {
d->running = true;
d->damage = xcb_generate_id(QX11Info::connection());
xcb_damage_create(QX11Info::connection(), d->damage, this->win,
xcb_damage_create(QX11Info::connection(), d->damage, d->win,
XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES);
// (currently) we do not call xcb_damage_subtract() EVER, because

View File

@@ -22,7 +22,7 @@ class XCBFrameBuffer: public FrameBuffer
{
Q_OBJECT
public:
explicit XCBFrameBuffer(WId winid, QObject *parent = nullptr);
explicit XCBFrameBuffer(QObject *parent = nullptr);
~XCBFrameBuffer() override;
public:

View File

@@ -29,10 +29,10 @@ XCBFrameBufferPlugin::XCBFrameBufferPlugin(QObject *parent, const QVariantList &
{
}
FrameBuffer *XCBFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
FrameBuffer *XCBFrameBufferPlugin::frameBuffer(const QVariantMap &args)
{
Q_UNUSED(args);
return new XCBFrameBuffer(id);
return new XCBFrameBuffer;
}
#include "xcb_framebufferplugin.moc"

View File

@@ -34,7 +34,7 @@ class XCBFrameBufferPlugin: public FrameBufferPlugin
public:
XCBFrameBufferPlugin(QObject *parent, const QVariantList &args);
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
FrameBuffer *frameBuffer(const QVariantMap &args) override;
private:
Q_DISABLE_COPY(XCBFrameBufferPlugin)

View File

@@ -13,8 +13,8 @@
#include <QCursor>
FrameBuffer::FrameBuffer(WId id, QObject *parent)
: QObject(parent), win(id)
FrameBuffer::FrameBuffer(QObject *parent)
: QObject(parent)
{
}

View File

@@ -29,7 +29,7 @@ class KRFBPRIVATE_EXPORT FrameBuffer : public QObject
{
Q_OBJECT
public:
explicit FrameBuffer(WId id, QObject *parent = nullptr);
explicit FrameBuffer(QObject *parent = nullptr);
~FrameBuffer() override;
@@ -52,7 +52,6 @@ Q_SIGNALS:
void frameBufferChanged();
protected:
WId win;
char *fb = nullptr;
QList<QRect> tiles;

View File

@@ -81,7 +81,7 @@ QSharedPointer<FrameBuffer> FrameBufferManager::frameBuffer(WId id, const QVaria
if (it.key() == KrfbConfig::preferredFrameBufferPlugin()) {
qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin();
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(id, args));
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(args));
if (frameBuffer) {
m_frameBuffers.insert(id, frameBuffer.toWeakRef());

View File

@@ -37,7 +37,7 @@ public:
explicit FrameBufferPlugin(QObject *parent, const QVariantList &args);
~FrameBufferPlugin() override;
virtual FrameBuffer *frameBuffer(WId id, const QVariantMap &args) = 0;
virtual FrameBuffer *frameBuffer(const QVariantMap &args) = 0;
};
#endif // Header guard

View File

@@ -33,7 +33,6 @@ Comment[id]=Desktop Sharing
Comment[is]=Skjáborðamiðlun
Comment[it]=Condivisione del desktop
Comment[ja]=デスクトップ共有
Comment[ka]=სამუშაო მაგიდის გაზიარება
Comment[kk]=Үстелді ортақтастыру
Comment[km]=ការ​ចែក​រំលែក​ផ្ទែ​តុ
Comment[ko]=데스크톱 공유
@@ -102,7 +101,6 @@ Name[id]=Pengguna Menyetujui Koneksi
Name[is]=Notandi samþykkir tengingar
Name[it]=L'utente accetta la connessione
Name[ja]=ユーザが接続を許可
Name[ka]=მომხმარებელი დაეთანხმა მიერთებას
Name[kk]=Пайдаланушы қосылымды қабылдайды
Name[km]=អ្នក​ប្រើ​ទទួល​យក​ការ​ត​ភ្ជាប់
Name[ko]=사용자가 연결을 수락함
@@ -167,7 +165,6 @@ Comment[id]=Pengguna menyetujui koneksi
Comment[is]=Notandi samþykkir tengingu
Comment[it]=L'utente accetta la connessione
Comment[ja]=ユーザが接続を許可
Comment[ka]=მომხმარებელი დაეთანხმა მიერთებას
Comment[kk]=Пайдаланушы қосылымды қабылдайды
Comment[km]=អ្នក​ប្រើ​ទទួល​យក​ការ​ត​ភ្ជាប់
Comment[ko]=사용자가 연결을 수락함
@@ -237,7 +234,6 @@ Name[id]=Pengguna Menampik Koneksi
Name[is]=Notandi hafnar tengingum
Name[it]=L'utente rifiuta la connessione
Name[ja]=ユーザが接続を拒否
Name[ka]=მომხმარებელმა უარყო მიერთებას
Name[kk]=Пайдаланушы қосылымдан бас тартады
Name[km]=អ្នក​ប្រើ​បដិសេធ​ការ​ត​ភ្ជាប់
Name[ko]=사용자가 연결을 거부함
@@ -302,7 +298,6 @@ Comment[id]=Pengguna menampik koneksi
Comment[is]=Notandi hafnar tengingu
Comment[it]=L'utente rifiuta la connessione
Comment[ja]=ユーザが接続を拒否
Comment[ka]=მომხმარებელმა უარყო მიერთებას
Comment[kk]=Пайдаланушы қосылымды қабылдамайды
Comment[km]=អ្នក​ប្រើ​បដិសេធ​ការ​ត​ភ្ជាប់
Comment[ko]=사용자가 연결을 거부함
@@ -372,7 +367,6 @@ Name[id]=Koneksi Ditutup
Name[is]=Tengingu lokað
Name[it]=Connessione chiusa
Name[ja]=接続切断
Name[ka]=კავშირი დაიხურა
Name[kk]=Қосылымдан жабылды
Name[km]=បាន​បិទ​ការ​ត​ភ្ជាប់
Name[ko]=연결이 닫힘
@@ -440,7 +434,6 @@ Comment[id]=Koneksi ditutup
Comment[is]=Tengingu lokað
Comment[it]=Connessione chiusa
Comment[ja]=接続が閉じられました
Comment[ka]=კავშირი დახურულია
Comment[kk]=Қосылым жабылды
Comment[km]=បាន​បិទ​ការ​ត​ភ្ជាប់
Comment[ko]=연결이 닫힘
@@ -513,7 +506,6 @@ Name[id]=Sandi Tidak Absah
Name[is]=Ógilt lykilorð
Name[it]=Password non valida
Name[ja]=無効なパスワード
Name[ka]=არასწორი პაროლი
Name[kk]=Жарамсыз паролі
Name[km]=ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ
Name[ko]=잘못된 암호
@@ -581,7 +573,6 @@ Comment[id]=Sandi tidak absah
Comment[is]=Lykilorð ógilt
Comment[it]=Password non valida
Comment[ja]=無効なパスワード
Comment[ka]=არასწორი პაროლი
Comment[kk]=Паролі дұрыс емес
Comment[km]=ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ
Comment[ko]=잘못된 암호
@@ -657,7 +648,6 @@ Name[id]=Undangan Sandi Tidak Absah
Name[is]=Ógild lykilorðsboð
Name[it]=Password di invito non valida
Name[ja]=招待に対する無効なパスワード
Name[ka]=არასწორი პაროლის მოსაწვევები
Name[kk]=Жарамсыз паролімен шақыру
Name[km]=ការ​អញ្ជើញ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ
Name[ko]=잘못된 암호 초대장
@@ -1051,7 +1041,6 @@ Name[id]=Terlalu Banyak Koneksi
Name[is]=Of margar tengingar
Name[it]=Troppe connessioni
Name[ja]=多すぎる接続
Name[ka]=მეტისმეტად ბევრი მიერთება
Name[kk]=Тым көп қосылым
Name[km]=ការ​តភ្ជាប់​ច្រើន​ពេក
Name[ko]=너무 많은 연결
@@ -1116,7 +1105,6 @@ Comment[id]=Sibuk, koneksi ditampik
Comment[is]=Uptekinn, tengingu hafnað
Comment[it]=Occupato, connessione rifiutata
Comment[ja]=ビジーです、接続を拒否しました
Comment[ka]=დაკავებულია, დაკავშირება უარყოფილია
Comment[kk]=Бос емес, қосылым болмады
Comment[km]=រវល់ បដិសេធ​ការ​ត​ភ្ជាប់
Comment[ko]=바쁨, 연결 거부됨
@@ -1187,7 +1175,6 @@ Name[id]=Koneksi Tak Terduga
Name[is]=Óvænt Tenging
Name[it]=Connessione inattesa
Name[ja]=予期しない接続
Name[ka]=მოულოდნელი შეერთება
Name[kk]=Күтпеген қосылым
Name[km]=ការ​តភ្ជាប់​ដែល​មិន​បាន​រំពឹង​ទុក
Name[ko]=예상하지 않은 연결

View File

@@ -33,7 +33,7 @@
#include <QSet>
#include <QNetworkInterface>
#include <QHostInfo>
#include <QMessageBox>
class TCP: public QWidget, public Ui::TCP
{
@@ -219,16 +219,16 @@ void MainWindow::passwordChanged(const QString& password)
void MainWindow::aboutConnectionAddress()
{
KMessageBox::about(this,
i18n("This field contains the address of your computer and the port number, separated by a colon.\n\nThe address is just a hint - you can use any address that can reach your computer.\n\nDesktop Sharing tries to guess your address from your network configuration, but does not always succeed in doing so.\n\nIf your computer is behind a firewall it may have a different address or be unreachable for other computers."),
i18n("KDE Desktop Sharing"));
QMessageBox::about(this,
i18n("KDE Desktop Sharing"),
i18n("This field contains the address of your computer and the port number, separated by a colon.\n\nThe address is just a hint - you can use any address that can reach your computer.\n\nDesktop Sharing tries to guess your address from your network configuration, but does not always succeed in doing so.\n\nIf your computer is behind a firewall it may have a different address or be unreachable for other computers."));
}
void MainWindow::aboutUnattendedMode()
{
KMessageBox::about(this,
i18n("Any remote user with normal desktop sharing password will have to be authenticated.\n\nIf unattended access is on, and the remote user provides unattended mode password, desktop sharing access will be granted without explicit confirmation."),
i18n("KDE Desktop Sharing"));
QMessageBox::about(this,
i18n("KDE Desktop Sharing"),
i18n("Any remote user with normal desktop sharing password will have to be authenticated.\n\nIf unattended access is on, and the remote user provides unattended mode password, desktop sharing access will be granted without explicit confirmation."));
}
void MainWindow::showConfiguration()

View File

@@ -20,7 +20,6 @@
<name xml:lang="ia">Krfb</name>
<name xml:lang="id">Krfb</name>
<name xml:lang="it">Krfb</name>
<name xml:lang="ka">Krfb</name>
<name xml:lang="ko">Krfb</name>
<name xml:lang="nl">Krfb</name>
<name xml:lang="nn">Krfb</name>
@@ -57,7 +56,6 @@
<summary xml:lang="ia">Compartir tu scriptorio a un altere computator via VNC</summary>
<summary xml:lang="id">Bagikan desktopmu ke komputer lainnya via VNC</summary>
<summary xml:lang="it">Condividi il desktop con un altro computer tramite VNC</summary>
<summary xml:lang="ka">სამუშაო მაგიდის გაზიარება Krfb-სთან ერთად VNC-სთან ერთად</summary>
<summary xml:lang="ko">내 데스크톱을 VNC로 다른 컴퓨터와 공유</summary>
<summary xml:lang="nl">Uw bureaublad delen naar een andere computer via VNC</summary>
<summary xml:lang="nn">Del skrivebordet med ei anna maskin via VNC</summary>
@@ -134,7 +132,6 @@
<caption xml:lang="ia">Compartir scriptorio con Krfb</caption>
<caption xml:lang="id">Berbagi desktop dengan Krfb</caption>
<caption xml:lang="it">Condivisone del desktop con Krfb</caption>
<caption xml:lang="ka">სამუშაო მაგიდის გაზიარება Krfb-სთან ერთად</caption>
<caption xml:lang="ko">Krfb로 데스크톱 공유</caption>
<caption xml:lang="nl">Bureaublad delen met Krfb</caption>
<caption xml:lang="nn">Skrivebordsdeling med Krfb</caption>
@@ -159,9 +156,9 @@
</provides>
<project_group>KDE</project_group>
<releases>
<release version="22.08.3" date="2022-11-03"/>
<release version="22.08.2" date="2022-10-13"/>
<release version="22.08.1" date="2022-09-08"/>
<release version="22.08.0" date="2022-08-18"/>
<release version="22.04.3" date="2022-07-07"/>
<release version="22.04.2" date="2022-06-09"/>
<release version="22.04.1" date="2022-05-12"/>
<release version="22.04.0" date="2022-04-21"/>
</releases>
</component>

View File

@@ -37,7 +37,6 @@ Name[id]=Krfb
Name[is]=Krfb
Name[it]=Krfb
Name[ja]=Krfb
Name[ka]=Krfb
Name[kk]=Krfb
Name[km]=Krfb
Name[ko]=Krfb
@@ -90,7 +89,6 @@ GenericName[fi]=Työpöydän jakaminen (VNC)
GenericName[fr]=Partage de bureaux (VNC)
GenericName[ia]=Compartir de scriptorio (VNC)
GenericName[it]=Condivisione del desktop (VNC)
GenericName[ka]=სამუშაო მაგიდის გაზიარება(VNC).
GenericName[ko]=데스크톱 공유(VNC)
GenericName[nl]=Bureaublad delen (VNC)
GenericName[nn]=Skrivebordsdeling (VNC)
@@ -139,7 +137,6 @@ Comment[id]=Desktop Sharing
Comment[is]=Skjáborðamiðlun
Comment[it]=Condivisione del desktop
Comment[ja]=デスクトップ共有
Comment[ka]=სამუშაო მაგიდის გაზიარება
Comment[kk]=Үстелді ортақтастыру
Comment[km]=ការ​ចែក​រំលែក​ផ្ទែ​តុ
Comment[ko]=데스크톱 공유

View File

@@ -11,12 +11,10 @@ Name[cs]=Virtuální monitor KRFB
Name[el]=Εικονική οθόνη του KRFB
Name[en_GB]=KRFBs Virtual Monitor
Name[es]=Monitor virtual de KRFB
Name[eu]=KRFBren alegiazko monitorea
Name[fi]=KRFB:n virtuaalinäyttö
Name[fr]=Moniteur virtuel « Krfb »
Name[ia]=Virtual Monitor de KRFB
Name[it]=Monitor virtuale di KRFB
Name[ka]=KRFB-
Name[ko]=KRFBs
Name[nl]=Virtuele monitor van KRFB
Name[pl]=Monitor wirtualny KRFB
@@ -38,12 +36,10 @@ Comment[cs]=Vzdálený virtuální monitor
Comment[el]=Απομακρυσμένη εικονική οθόνη
Comment[en_GB]=Remote Virtual Monitor
Comment[es]=Monitor virtual remoto
Comment[eu]=Urruneko alegiazko monitorea
Comment[fi]=Virtuaalinen etänäyttö
Comment[fr]=Moniteur virtuel distant
Comment[ia]=Monitor Virtual Remote
Comment[it]=Monitor virtuale remoto
Comment[ka]=
Comment[ko]=
Comment[nl]=Virtual Monitor op afstand
Comment[pl]=Zdalny monitor wirtualny