Merge branch 'system-wide-config' of https://github.com/jblaine/tigervnc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cd5a23b..a9e7f4e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,10 +21,10 @@
include(CMakeMacroLibtoolFile)
project(tigervnc)
-set(VERSION 1.6.80)
+set(VERSION 1.7.80)
# The RC version must always be four comma-separated numbers
-set(RCVERSION 1,6,80,0)
+set(RCVERSION 1,7,80,0)
# Installation paths
set(BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin")
@@ -104,8 +104,9 @@
message(STATUS "32-bit build")
endif()
-# CMake doesn't properly support resource compilation with MinGW. Boo!
-if(MINGW)
+# Versions of CMake before 2.8.7 do not properly support resource compilation
+# with MinGW. Boo!
+if(MINGW AND "${CMAKE_VERSION}" VERSION_LESS "2.8.7")
if(NOT DEFINED RC)
set(CMAKE_RC_COMPILER_INIT windres)
else()
diff --git a/common/os/Thread.h b/common/os/Thread.h
index 1a9aa54..4c39884 100644
--- a/common/os/Thread.h
+++ b/common/os/Thread.h
@@ -17,7 +17,9 @@
*/
#ifndef __OS_THREAD_H__
-#define __OP_THREAD_H__
+#define __OS_THREAD_H__
+
+#include <stddef.h>
namespace os {
class Mutex;
diff --git a/common/rfb/Configuration.cxx b/common/rfb/Configuration.cxx
index 8e1ea6e..a5c2302 100644
--- a/common/rfb/Configuration.cxx
+++ b/common/rfb/Configuration.cxx
@@ -23,24 +23,14 @@
#include <ctype.h>
#include <string.h>
+#include <os/Mutex.h>
+
#include <rfb/util.h>
#include <rfb/Configuration.h>
#include <rfb/LogWriter.h>
#include <rfb/Exception.h>
-#include <rfb/Threading.h>
-#ifdef __RFB_THREADING_IMPL
-// On platforms that support Threading, we use Locks to make getData safe
-#define LOCK_CONFIG Lock l(*configLock())
-rfb::Mutex* configLock_ = 0;
-static rfb::Mutex* configLock() {
- if (!configLock_)
- configLock_ = new rfb::Mutex;
- return configLock_;
-}
-#else
-#define LOCK_CONFIG
-#endif
+#define LOCK_CONFIG os::AutoMutex a(mutex)
#include <rdr/HexOutStream.h>
#include <rdr/HexInStream.h>
@@ -195,9 +185,12 @@
_next = conf->head;
conf->head = this;
+
+ mutex = new os::Mutex();
}
VoidParameter::~VoidParameter() {
+ delete mutex;
}
const char*
diff --git a/common/rfb/Configuration.h b/common/rfb/Configuration.h
index da93fdd..fbf161d 100644
--- a/common/rfb/Configuration.h
+++ b/common/rfb/Configuration.h
@@ -45,6 +45,8 @@
#include <rfb/util.h>
+namespace os { class Mutex; }
+
namespace rfb {
class VoidParameter;
struct ParameterIterator;
@@ -174,6 +176,8 @@
bool immutable;
const char* name;
const char* description;
+
+ os::Mutex* mutex;
};
class AliasParameter : public VoidParameter {
diff --git a/common/rfb/Hostname.h b/common/rfb/Hostname.h
index f70347f..bd68dc0 100644
--- a/common/rfb/Hostname.h
+++ b/common/rfb/Hostname.h
@@ -19,6 +19,7 @@
#ifndef __RFB_HOSTNAME_H__
#define __RFB_HOSTNAME_H__
+#include <assert.h>
#include <stdlib.h>
#include <rdr/Exception.h>
#include <rfb/util.h>
@@ -26,30 +27,72 @@
namespace rfb {
static void getHostAndPort(const char* hi, char** host, int* port, int basePort=5900) {
- CharArray portBuf;
- CharArray hostBuf;
+ const char* hostStart;
+ const char* hostEnd;
+ const char* portStart;
+
if (hi == NULL)
throw rdr::Exception("NULL host specified");
+
+ assert(host);
+ assert(port);
+
if (hi[0] == '[') {
- if (!strSplit(&hi[1], ']', &hostBuf.buf, &portBuf.buf))
+ hostStart = &hi[1];
+ hostEnd = strchr(hostStart, ']');
+ if (hostEnd == NULL)
throw rdr::Exception("unmatched [ in host");
+
+ portStart = hostEnd + 1;
+ if (*portStart == '\0')
+ portStart = NULL;
} else {
- portBuf.buf = strDup(hi);
- }
- if (strSplit(portBuf.buf, ':', hostBuf.buf ? 0 : &hostBuf.buf, &portBuf.buf)) {
- if (portBuf.buf[0] == ':') {
- *port = atoi(&portBuf.buf[1]);
+ hostStart = &hi[0];
+ hostEnd = strrchr(hostStart, ':');
+
+ if (hostEnd == NULL) {
+ hostEnd = hostStart + strlen(hostStart);
+ portStart = NULL;
} else {
- *port = atoi(portBuf.buf);
- if (*port < 100) *port += basePort;
+ if ((hostEnd > hostStart) && (hostEnd[-1] == ':'))
+ hostEnd--;
+ portStart = strchr(hostStart, ':');
+ if (portStart != hostEnd) {
+ // We found more : in the host. This is probably an IPv6 address
+ hostEnd = hostStart + strlen(hostStart);
+ portStart = NULL;
+ }
}
- } else {
- *port = basePort;
}
- if (strlen(hostBuf.buf) == 0)
+
+ if (hostStart == hostEnd)
*host = strDup("localhost");
- else
- *host = hostBuf.takeBuf();
+ else {
+ size_t len;
+ len = hostEnd - hostStart + 1;
+ *host = new char[len];
+ strncpy(*host, hostStart, len-1);
+ (*host)[len-1] = '\0';
+ }
+
+ if (portStart == NULL)
+ *port = basePort;
+ else {
+ char* end;
+
+ if (portStart[0] != ':')
+ throw rdr::Exception("invalid port specified");
+
+ if (portStart[1] != ':')
+ *port = strtol(portStart + 1, &end, 10);
+ else
+ *port = strtol(portStart + 2, &end, 10);
+ if (*end != '\0')
+ throw rdr::Exception("invalid port specified");
+
+ if ((portStart[1] != ':') && (*port < 100))
+ *port += basePort;
+ }
}
};
diff --git a/common/rfb/KeyRemapper.cxx b/common/rfb/KeyRemapper.cxx
index d33f0a4..b4c2793 100644
--- a/common/rfb/KeyRemapper.cxx
+++ b/common/rfb/KeyRemapper.cxx
@@ -17,6 +17,9 @@
*/
#include <stdio.h>
+
+#include <os/Mutex.h>
+
#include <rfb/KeyRemapper.h>
#include <rfb/Configuration.h>
#include <rfb/LogWriter.h>
@@ -27,14 +30,21 @@
KeyRemapper KeyRemapper::defInstance;
-#ifdef __RFB_THREADING_IMPL
-static Mutex mappingLock;
-#endif
+KeyRemapper::KeyRemapper(const char* m)
+{
+ mutex = new os::Mutex;
+
+ setMapping(m);
+}
+
+KeyRemapper::~KeyRemapper()
+{
+ delete mutex;
+}
void KeyRemapper::setMapping(const char* m) {
-#ifdef __RFB_THREADING_IMPL
- Lock l(mappingLock);
-#endif
+ os::AutoMutex a(mutex);
+
mapping.clear();
while (m[0]) {
int from, to;
@@ -59,9 +69,8 @@
}
rdr::U32 KeyRemapper::remapKey(rdr::U32 key) const {
-#ifdef __RFB_THREADING_IMPL
- Lock l(mappingLock);
-#endif
+ os::AutoMutex a(mutex);
+
std::map<rdr::U32,rdr::U32>::const_iterator i = mapping.find(key);
if (i != mapping.end())
return i->second;
diff --git a/common/rfb/KeyRemapper.h b/common/rfb/KeyRemapper.h
index a4b7aa0..1406bad 100644
--- a/common/rfb/KeyRemapper.h
+++ b/common/rfb/KeyRemapper.h
@@ -22,16 +22,20 @@
#include <map>
#include <rdr/types.h>
+namespace os { class Mutex; }
+
namespace rfb {
class KeyRemapper {
public:
- KeyRemapper(const char* m="") { setMapping(m); }
+ KeyRemapper(const char* m="");
+ ~KeyRemapper();
void setMapping(const char* m);
rdr::U32 remapKey(rdr::U32 key) const;
static KeyRemapper defInstance;
private:
std::map<rdr::U32,rdr::U32> mapping;
+ os::Mutex* mutex;
};
};
diff --git a/common/rfb/Logger_file.cxx b/common/rfb/Logger_file.cxx
index ebe15d5..149ad40 100644
--- a/common/rfb/Logger_file.cxx
+++ b/common/rfb/Logger_file.cxx
@@ -21,36 +21,30 @@
#include <stdlib.h>
#include <string.h>
+#include <os/Mutex.h>
+
#include <rfb/util.h>
#include <rfb/Logger_file.h>
-#include <rfb/Threading.h>
using namespace rfb;
-
-// If threading is available then protect the write() operation
-// from concurrent accesses
-#ifdef __RFB_THREADING_IMPL
-static Mutex logLock;
-#endif
-
-
Logger_File::Logger_File(const char* loggerName)
: Logger(loggerName), indent(13), width(79), m_filename(0), m_file(0),
m_lastLogTime(0)
{
+ mutex = new os::Mutex();
}
Logger_File::~Logger_File()
{
closeFile();
+ delete mutex;
}
void Logger_File::write(int level, const char *logname, const char *message)
{
-#ifdef __RFB_THREADING_IMPL
- Lock l(logLock);
-#endif
+ os::AutoMutex a(mutex);
+
if (!m_file) {
if (!m_filename) return;
CharArray bakFilename(strlen(m_filename) + 1 + 4);
diff --git a/common/rfb/Logger_file.h b/common/rfb/Logger_file.h
index 5e0c917..5b5c34e 100644
--- a/common/rfb/Logger_file.h
+++ b/common/rfb/Logger_file.h
@@ -24,6 +24,8 @@
#include <time.h>
#include <rfb/Logger.h>
+namespace os { class Mutex; }
+
namespace rfb {
class Logger_File : public Logger {
@@ -43,6 +45,7 @@
char* m_filename;
FILE* m_file;
time_t m_lastLogTime;
+ os::Mutex* mutex;
};
bool initFileLogger(const char* filename);
diff --git a/common/rfb/Logger_syslog.cxx b/common/rfb/Logger_syslog.cxx
index 291d36c..dc1d0c1 100644
--- a/common/rfb/Logger_syslog.cxx
+++ b/common/rfb/Logger_syslog.cxx
@@ -25,7 +25,6 @@
#include <rfb/util.h>
#include <rfb/Logger_syslog.h>
#include <rfb/LogWriter.h>
-#include <rfb/Threading.h>
using namespace rfb;
diff --git a/contrib/packages/rpm/el6/SPECS/tigervnc.spec b/contrib/packages/rpm/el6/SPECS/tigervnc.spec
index 16d1ba5..447eb7f 100644
--- a/contrib/packages/rpm/el6/SPECS/tigervnc.spec
+++ b/contrib/packages/rpm/el6/SPECS/tigervnc.spec
@@ -10,7 +10,7 @@
Name: tigervnc
Version: @VERSION@
-Release: 4%{?snap:.%{snap}}%{?dist}
+Release: 5%{?snap:.%{snap}}%{?dist}
Summary: A TigerVNC remote display system
Group: User Interface/Desktops
@@ -177,7 +177,7 @@
for all in `find . -type f -perm -001`; do
chmod -x "$all"
done
-patch -p1 -b --suffix .vnc < ../xserver115.patch
+patch -p1 -b --suffix .vnc < ../xserver117.patch
popd
%patch16 -p0 -b .man
@@ -339,7 +339,7 @@
-DJAVA_KEY_ALIAS=%{_key_alias} \
-DJAVA_STOREPASS=":env STOREPASS" \
-DJAVA_KEYPASS=":env KEYPASS" \
- -DJAVA_TSA_URL=https://timestamp.geotrust.com/tsa .
+ -DJAVA_TSA_URL=http://timestamp.geotrust.com/tsa .
%endif
JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" make
@@ -460,6 +460,9 @@
%endif
%changelog
+* Mon Jun 20 2016 Brian P. Hinz <bphinz@users.sourceforge.net> 1.6.80-5
+- Patch for Xorg 1.17 due to vendor bump of Xorg version
+
* Sat Apr 02 2016 Brian P. Hinz <bphinz@users.sourceforge.net> 1.6.80-4
- Fixed CVE-2015-8803 CVE-2015-8804 CVE-2015-8805 secp256r1 and secp384r1 bugs
diff --git a/contrib/packages/rpm/el7/SPECS/tigervnc.spec b/contrib/packages/rpm/el7/SPECS/tigervnc.spec
index c440d98..ac58d5b 100644
--- a/contrib/packages/rpm/el7/SPECS/tigervnc.spec
+++ b/contrib/packages/rpm/el7/SPECS/tigervnc.spec
@@ -259,7 +259,7 @@
-DJAVA_KEY_ALIAS=%{_key_alias} \
-DJAVA_STOREPASS=":env STOREPASS" \
-DJAVA_KEYPASS=":env KEYPASS" \
- -DJAVA_TSA_URL=https://timestamp.geotrust.com/tsa .
+ -DJAVA_TSA_URL=http://timestamp.geotrust.com/tsa .
%endif
JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" make
diff --git a/doc/keyboard-test.txt b/doc/keyboard-test.txt
index 800faec..89b5088 100644
--- a/doc/keyboard-test.txt
+++ b/doc/keyboard-test.txt
@@ -3,6 +3,15 @@
Platform specific tests/issues are marked with [].
+These tests are primarily about what is sent over the protocol and some
+may be difficult or impossible to test using normal applications. In
+these cases you can turn on debug logging in either the client or the
+server by specifying "-Log *:stderr:100".
+
+We currently have a limitation in Xvnc where it can run out of symbols,
+resulting in nothing being sent to the applications. Just run setxkbmap
+with any layout to reset the symbol table.
+
Client
------
@@ -11,74 +20,95 @@
- ASCII characters
- Latin 1 character
- Unicode BMP characters
- - Unicode non-BMP characters
+ - Unicode non-BMP characters (does any layout actually have these?)
- Dead keys:
+ These are not available on a single layout, so you need to switch to
+ test everything. The useful layouts also differ per platform:
+
+ X11: US International for most, Greek for some specific diacretics
+ Win: US International, Czech, Greek Polytonic, Vietnamese
+ OS X: ABC Extended (FIXME: lots of broken keys),
+ Greek (FIXME: cannot be used with TigerVNC)
+
- Grave
- Acute
- Circumflex
- Tilde
- - Macron
+ - Macron (FIXME: broken on Win)
- Breve
- Dot above
+ - Dot below
- Diaeresis
- Ring above
- Double acute
- Caron
- Cedilla
- Ogonek
- - Ypogegrammeni
- - Katakana voiced mark
- - Katakana semi-voiced mark
- - Dialytika tonos
+ - Ypogegrammeni (iota below) (FIXME: broken on Win)
+ - Dialytika tonos [Win] (Diaresis on X11, and maybe OS X?)
+ - Comma above (FIXME: broken on Win)
+ - Reversed comma above (FIXME: broken on Win)
+ - Horn [X11?]
+ - Hook above [Win?]
+ - Hook below [X11?, Win?]
+ - Dakuten (Katakana voiced mark) (Only Input Methods layouts?)
+ - Handakuten (Katakana semi-voiced mark) (Only Input Methods layouts?)
- FIXME: Many more that we currently probably don't support
- No composition on client
- Modifiers:
+ X11: You can usually toggle Hyper/Super and Compose/Scroll_Lock using
+ XKB options.
+
- CapsLock, NumLock (sent but ignored by server)
- Shift, Ctrl
- Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win)
+ - Meta [X11]
- Left/right identification (FIXME: broken for Shift on Win)
- - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [Mac]
+ - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [OS X]
- Hyper sends Super [X11]
- CapsLock, Shift and AltGr affect symbol lookup
- - NumLock affects symbol lookup [Win, X11]
- Ctrl does not affect symbol lookup
- - Shift inverts NumLock behaviour [X11]
- - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent)
- - CtrlL+AltR fake release [Win]
- - Ctrl+Alt+any (note behaviour above though)
- - Ctrl+AltGr+any (FIXME: broken on Win)
+ - CtrlL+AltR is fake released to compensate for Windows' AltGr magic [Win]
+ - Ctrl+Alt+<ANY> sends the same symbol as <ANY> (note behaviour above though)
+ - Ctrl+AltGr+<ANY> sends the same symbol as AltGr+<ANY> (FIXME: broken on Win)
- "Shift press, A press, Shift release, A release" should not send "a release"
- Numpad:
+ - NumLock affects symbol lookup [Win, X11]
- Numpad specific symbols are sent
- - Affected by NumLock
- Decimal key should send Decimal for layouts with . as a symbol, and
Separator for layouts with , as a symbol
+ - Shift inverts NumLock behaviour [X11]
+ - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent)
- Multimedia keys:
+ OS X: FIXME: all broken
+
- Back, Forward, Refresh, Stop
- - HomePage, Search, Favourites
+ - HomePage, Search, Favourites (FIXME: broken on Win)
- Mail, Calculator
- Volume up, down, mute
- Media next, previous, stop, play
- - Sleep
+ - Sleep (FIXME: broken on Win)
- FIXME: probably more keys exist
- Non-character keys:
- - F1-F24
- - Tab, Space, Backspace, Return
- - LeftTab sends Tab
- - Esc, PrntScrn, ScrollLock, Pause
- - Insert, Delete, Home, End, PageUp, PageDown
+ - F1-F24 (FIXME: F14-F15 broken on OS X)
+ - Tab, Space, Backspace, Return, Esc
+ - LeftTab sends Tab [X11?]
+ - PrntScrn, ScrollLock, Pause [X11, Win]
+ - Help [X11?, OS X]
+ - Insert [X11, Win]
+ - Delete, Home, End, PageUp, PageDown
- Arrow keys
- Menu
- Alt+PrntScrn sends Sys_Req [Win]
@@ -93,7 +123,7 @@
- Local input methods are disabled/enabled with focus
-- System keys should be grabbed in full screen
+- System keys should be grabbed in full screen (FIXME: lots missing on Win)
The exact keys depends on the system and configuration, but it
is usually variants of these:
diff --git a/java/CMakeLists.txt b/java/CMakeLists.txt
index 8f698ac..7f7b298 100644
--- a/java/CMakeLists.txt
+++ b/java/CMakeLists.txt
@@ -2,7 +2,7 @@
project(tigervnc-java Java)
if(NOT VERSION)
- set(VERSION 1.6.80)
+ set(VERSION 1.7.80)
endif()
find_package(Java)
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
index 887174b..8fcb64e 100644
--- a/po/CMakeLists.txt
+++ b/po/CMakeLists.txt
@@ -1,7 +1,7 @@
# Gettext support - mostly borrowed from the Licq project
set(po_FILES
- bg da de el eo es fi fr it nl pl pt_BR ru sk sr sv tr uk zh_CN
+ bg da de el eo es fi fr it nl pl pt_BR ru sk sr sv tr uk vi zh_CN
)
if (NOT GETTEXT_MSGMERGE_EXECUTABLE AND NOT GETTEXT_MSGFMT_EXECUTABLE)
diff --git a/po/da.po b/po/da.po
index ec0574c..f917aeb 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,14 +1,14 @@
# Danish translation of tigervnc.
-# Copyright (C) 2015 the TigerVNC Team (msgids)
+# Copyright (C) 2016 the TigerVNC Team (msgids)
# This file is distributed under the same license as the tigervnc package.
-# Joe Hansen <joedalton2@yahoo.dk>, 2015.
+# Joe Hansen <joedalton2@yahoo.dk>, 2015, 2016.
#
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc 1.5.90\n"
+"Project-Id-Version: tigervnc 1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2015-12-08 15:00+0000\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-04 15:00+0000\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
@@ -17,108 +17,98 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "forbundet til værten %s på port %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Skrivebordsnavn: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Vært: %.80s port: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Størrelse: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Billedformat: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(serverstandard %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Anmodt kodning: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Sidst anvendt kodning: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Linjehastighedsestimat: %d kbit/s"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Protokolversion: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Sikkerhedsmetode: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "SetDesktopSize fejlede: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr "Ugyldig SetColourMapEntries fra server!"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Ukendt kodning %d"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Ukendt kodning"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Aktiverer fortsættende opdateringer"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Gennemløb %d kbit/s - ændrer til kvalitet %d"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Gennemløb %d kbit/s - fuld farve er nu %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "deaktiveret"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "aktiveret"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "Bruger %s-kodning"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Bruger billedpunktsformat %s"
@@ -127,25 +117,25 @@
msgid "Invalid geometry specified!"
msgstr "Ugyldig geometri angivet!"
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Justerer vinduesstørrelse for at undgå utilsigtet anmodning om fuld skærm"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Kunne ikke fange tastatur"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Kunne ikke fange mus"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr "Ugyldig skærmlayout beregnet for anmodning om ny størrelse!"
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Ikke nok hukommelse for framebuffer"
@@ -162,160 +152,164 @@
msgstr "VNC-fremviser: Forbindelsesindstillinger"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Afbryd"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "O.k."
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Komprimering"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Vælg automatisk"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Foretrukken kodning"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Farveniveau"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "Fuld (alle tilgængelige farver)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "Mellem (256 farver)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "Lav (64 farver)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "Meget lav (8 farver)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Tilpasset komprimeringsniveau:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "niveau (1=hurtig, 6=bedst [4-6 bruges sjældent])"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "Tillad JPEG-komprimering:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "kvalitet (0=dårlig, 9=bedst)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Sikkerhed"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Kryptering"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Ingen"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "TLS med anonyme certifikater"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "TLS med X509-certifikater"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Sti til X509 CA-certifikat"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Sti til X509 CRL-fil"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Godkendelse"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "Standard-VNC (usikker uden kryptering)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Bruernavn og adgangskode (usikker uden kryptering)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Inddata"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Vis kun (ignorer mus og tastatur)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Accepter udklipsholderen fra serveren"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Angiv også primær markering"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Send udklipsholderen til serveren"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Send primær markering og klip mellemlager som udklipsholder"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Send primær markering som udklipsholder"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Videresend systemnøgler direkte til serveren (fuld skærm)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Menutast"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Skærm"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Ændr størrelse for ekstern session ved forbind"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Ændr størrelse for ekstern session til det lokale vindue"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Tilstand for fuld skærm"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Aktiver tilstand for fuld skærm over alle skærme"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Div."
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Delt (afbryd ikke andre fremvisere)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Vis punktum når ingen markør"
@@ -367,112 +361,112 @@
msgid "Username:"
msgstr "Brugernavn:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr "Kan ikke oprette platformspecifik framebuffer: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr "Bruger framebuffer uafhængig af platform"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Ingen skanningskode for udvidet virtuel nøgle 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Ingen skanningskode for virtuel nøgle 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Intet symbol for udvidet virtuel nøgle 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Intet symbol for virtuel nøgle 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Intet symbol for nøglekode 0x%02x (i den nuværende tilstand)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Intet symbol for nøglekode %d (i den nuværende tilstand)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "&Afslut fremviser"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&Fuld skærm"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "&Minimer"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "Ændr størrelse for &vindue til session"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&Ctrl"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&Alt"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "Send %s"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "Send Ctrl-Alt-&Slet"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "&Opdater skærm"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "&Indstillinger ..."
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "Forbindelses&info ..."
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "Om &TigerVNC-fremviseren ..."
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Fjern %menu"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "VNC-forbindelsesinfo"
@@ -494,123 +488,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr "Skærm mangler pixmap-format for standarddybde"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr "Kunne ikke finde et egnet pixmap-format"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr "Kun skærme med »true colour« er understøttet"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Bruger standardfarvekort og visuel, TrueColor, dybde %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Kunne ikke oprette framebuffer-billede"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "Navnet på parameteren %s var for lang til at kunne skrives til registret"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "Parameteren %s var for lang til at kunne skrives til registret"
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Kunne ikke skrive parameteren %s af typen %s til registret: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "Navnet for parameteren %s var for lang til at kunne læses fra registret"
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr "Kunne ikke læse parameteren %s fra registret: %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "Parameteren %s var for lang til at kunne læses fra registret"
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Kunne ikke oprette registernøgle: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Ukendt parametertype for parameteren %s"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Kunne ikke lukke registernøgle: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Kunne ikke åbne registernøgle: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr "Kunne ikke skrive konfigurationsfil, kan ikke indhente hjemmemappens sti."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Kunne ikke skrive konfigurationsfil, kan ikke åbne %s: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr "Kunne ikke læse konfigurationsfil, kan ikke indhente hjemmemappens sti."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Kunne ikke læse konfigurationsfil, kan ikke åbne %s: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Kunne ikke læse linje %d i filen %s: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Linjen er for lang"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "Konfigurationsfilen %s er i et ugyldigt format"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Ugyldigt format"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Ugyldigt format eller for stor værdi"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Ukendt parameter %s på linje %d i filen %s"
@@ -632,86 +626,92 @@
msgid "About TigerVNC Viewer"
msgstr "Om TigerVNC-fremviseren"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Intern FLTK-fejl. Afbryder."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Fejl ved start af ny TigerVNC-fremviser: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Opsigelsessignalet %d er blevet modtaget. TigerVNC-fremviseren vil nu afslutte."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "TigerVNC-fremviser"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Nej"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Ja"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Luk"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "Om"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Skjul"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Afslut"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Tjenester"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Skjul andre"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Vis alle"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Fil"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Ny forbindelse"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr "Kunne ikke oprette VNC-hjemmemappen: Kan ikke indhente hjemmemappens sti."
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr "Kunne ikke oprette VNC-hjemmemappe: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "Parameterne -listen og -via er ikke kompatible"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Lytter på port %d"
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Intern FLTK-fejl. Afbryder."
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Ukendt kodning %d"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Ukendt kodning"
diff --git a/po/de.po b/po/de.po
index 3c1a20a..796c553 100644
--- a/po/de.po
+++ b/po/de.po
@@ -2,13 +2,13 @@
# Copyright (C) 2014 the TigerVNC Team (msgids)
# This file is distributed under the same license as the tigervnc package.
# Klaus Franken <Klaus.Franken@StrukturPunkt.de>, 2005.
-# Mario Blättermann <mario.blaettermann@gmail.com>, 2014, 2015.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2014, 2015, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc 1.5.90\n"
+"Project-Id-Version: tigervnc 1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2015-12-05 22:02+0100\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-07 22:49+0200\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -16,110 +16,100 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.8.5\n"
+"X-Generator: Poedit 1.8.7.1\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "verbunden mit Rechner %s, Port %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Desktop-Name: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Rechner: %.80s Port: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Größe: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Pixelformat: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(Server-Vorgabe %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Angeforderte Zeichenkodierung: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Zuletzt verwendete Zeichenkodierung: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Geschätzte Verbindungsgeschwindigkeit: %d kbit/s"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Protokollversion: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Sicherheitsmethode: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "SetDesktopSize fehlgeschlagen: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr "Ungültige SetColourMapEntries vom Server!"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Unbekannte Kodierung %d"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Unbekannte Kodierung"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Fortlaufende Aktualisierungen aktivieren"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Durchsatz %d kbit/s - Qualität wird auf %d geändert"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Durchsatz %d kbit/s - Vollfarbmodus ist jetzt %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "deaktiviert"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "aktiviert"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "%s-Verschlüsselung wird verwendet"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Pixelformat %s wird verwendet"
@@ -128,25 +118,25 @@
msgid "Invalid geometry specified!"
msgstr "Unzulässige Geometrie wurde angegeben!"
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Fenstergröße anpassen, um zufällige Vollbild-Anforderung zu vermeiden"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Fehler beim Erkennen der Tastatur"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Fehler beim Erkennen der Maus"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr "Ungültige Bildschirmanordnung wurde für die Größenänderungsanforderung ermittelt!"
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Nicht genügend Speicher für Framebuffer"
@@ -163,160 +153,164 @@
msgstr "VNC-Betrachter: Verbindungsoptionen"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Abbrechen"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "OK"
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Kompression"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Automatisch auswählen"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Bevorzugte Kodierung"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Farbstufe"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "Voll (alle verfügbaren Farben)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "Mittel (256 Farben)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "Niedrig (64 Farben)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "Sehr gering (8 Farben)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Individuelle Kompressionsstufe:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "Stufe (1=schnell, 9=beste) [4-6 sind selten sinnvoll]"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "JPEG-Kompression erlauben:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "Qualität (0=schlechte, 9=beste)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Sicherheit"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Verschlüsselung"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Keine"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "TLS mit anonymen Zertifikaten"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "TLS mit X509-Zertifikaten"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Pfad zum X509-CA-Zertifikat"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Pfad zur X509-CRL-Datei"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Authentifizierung"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "Standard-VNC (unsicher ohne Verschlüsselung)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Benutzername und Passwort (unsicher ohne Verschlüsselung)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Eingabe"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Nur Ansicht (Maus und Tastatur ignorieren)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Zwischenablage vom Server akzeptieren"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Primäre Auswahl ebenfalls setzen"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Zwischenablage zum Server senden"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Primäre Auswahl und Ausschneidepuffer als Zwischenablage senden"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Primäre Auswahl als Zwischenablage senden"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Systemtasten direkt an den Server übergeben (Vollbild)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Menü-Taste"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Bildschirm"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Ferne Sitzung beim Verbinden an das lokale Fenster anpassen"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Ferne Sitzung an das lokale Fenster anpassen"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Vollbildmodus"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Vollbildmodus für alle Monitore aktivieren"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Sonstiges"
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Gemeinsamer Zugriff (andere VNC-Viewer nicht trennen)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Punkt zeigen, wenn kein Cursor"
@@ -368,112 +362,112 @@
msgid "Username:"
msgstr "Benutzername:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr "Plattformspezifischer Framebuffer konnte nicht erstellt werden: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr "Plattformunabhängiger Framebuffer wird verwendet"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Kein Scan-Code für erweiterte virtuelle Taste 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Kein Scan-Code für virtuelle Taste 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Kein Symbol für erweiterte virtuelle Taste 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Kein Symbol für virtuelle Taste 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Kein Symbol für Tastencode 0x%02x (im aktuellen Zustand)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Kein Symbol für Tastencode %d (im aktuellen Zustand)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "Betrachter be&enden"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&Vollbildmodus"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "M&inimieren"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "&Fenster an Sitzung anpassen"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&Strg"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&Alt"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "%s senden"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "Strg-Alt-E&ntf senden"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "Bildschirm &aktualisieren"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "&Optionen …"
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "Verbindungs&informationen …"
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "Info zu &TigerVNC-Betrachter …"
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Menü &verlassen"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "VNC-Verbindungsinformation"
@@ -495,123 +489,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr "Anzeige hat kein Pixmap-Format für die vorgegebene Tiefe"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr "Es konnte kein geeignetes Pixmap-Format gefunden werden"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr "Nur True-Color-Anzeigen werden unterstützt"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Vorgegebene Farbzuweisung und Anzeige wird verwendet,Tiefe %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Framebuffer-Image konnte nicht erstellt werden"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "Der Parameterwert %s war beim Schreiben in die Registrierungsdatenbank zu groß"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "Der Parameterwert %s war zu groß zum Schreiben in die Registrierungsdatenbank."
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Der Parameterwert %s des Typs %s konnte nicht in die Registrierungsdatenbank geschrieben werden: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "Der Parametername %s war zu groß zum Lesen aus der Registrierungsdatenbank."
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr "Der Parameter %s konnte nicht aus der Registrierungsdatenbank gelesen werden %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "Der Parameterwert %s war zu groß zum Lesen aus der Registrierungsdatenbank."
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Registrierungsschlüssel konnte nicht erzeugt werden: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Unbekannter Parametertyp für Parameter %s"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Registrierungsschlüssel konnte nicht geschlossen werden: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Registrierungsschlüssel konnte nicht geöffnet werden: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr "Konfigurationsdatei konnte nicht geschrieben werden, auf Benutzerverzeichnispfad kann nicht zugegriffen werden."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Konfigurationsdatei kann nicht geschrieben werden, %s lässt sich nicht öffnen: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr "Konfigurationsdatei konnte nicht gelesen werden, auf Benutzerverzeichnispfad kann nicht zugegriffen werden."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Konfigurationsdatei kann nicht gelesen werden, %s lässt sich nicht öffnen: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Zeile %d in Datei %s konnte nicht gelesen werden: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Zeile ist zu lang"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "Format der Konfigurationsdatei %s ist ungültig"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Ungültiges Format"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Ungültiges Format oder zu großer Wert"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Ungültiger Parametername %s in Zeile %d in Datei %s"
@@ -634,89 +628,95 @@
msgid "About TigerVNC Viewer"
msgstr "Info zu TigerVNC-Betrachter"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Interner FLTK-Fehler. Abbruch."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Fehler beim Starten des neuen TigerVNC-Betrachters: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Terminierungssignal %d wurde empfangen. Der TigerVNC-Betrachter wird nun beendet."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "TigerVNC-Betrachter"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Nein"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Ja"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Schließen"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "Info"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Verbergen"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Beenden"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Dienste"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Andere verbergen"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Alle zeigen"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Datei"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Neue Verbindung"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr "VNC-Benutzerverzeichnis konnte nicht angelegt werden: auf Benutzerverzeichnispfad kann nicht zugegriffen werden."
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr "VNC-Benutzerverzeichnis konnte nicht erstellt werden: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "Die Parameter -listen und -via schließen sich gegenseitig aus"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Am Port %d wird gelauscht"
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Interner FLTK-Fehler. Abbruch."
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Unbekannte Kodierung %d"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Unbekannte Kodierung"
#~ msgid "Alt"
#~ msgstr "Alt"
diff --git a/po/nl.po b/po/nl.po
index 37598a8..0c24da1 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -2,13 +2,13 @@
# Copyright (C) the TigerVNC Team (msgids)
# This file is distributed under the same license as the tigervnc package.
#
-# Benno Schulenberg <benno@vertaalt.nl>, 2014, 2015.
+# Benno Schulenberg <benno@vertaalt.nl>, 2014, 2015, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc 1.5.90\n"
+"Project-Id-Version: tigervnc 1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2015-12-04 21:42+0100\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-26 11:15+0200\n"
"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
@@ -18,108 +18,98 @@
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "verbonden met host %s poort %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Bureaubladnaam: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Host: %.80s poort: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Grootte: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Pixel-indeling: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(serverstandaard is %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Gevraagde codering: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Laatst gebruikte codering: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Geschatte lijnsnelheid: %d kbit/s"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Protocolversie: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Beveiligingsmethode: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "### SetDesktopSize is mislukt: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr "Ongeldige 'SetColourMapEntries' van de server!"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Onbekende codering %d"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Onbekende codering"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Continue updates inschakelen"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Throughput is %d kbit/s -- overgaand naar kwaliteit %d"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Throughput is %d kbit/s -- volledige kleuren is nu %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "uitgeschakeld"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "ingeschakeld"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "Codering %s wordt gebruikt"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Pixel-indeling %s wordt gebruikt"
@@ -128,25 +118,25 @@
msgid "Invalid geometry specified!"
msgstr "Ongeldige afmetingen opgegeven!"
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Venstergrootte wordt aangepast om onbedoeld volledigschermverzoek te vermijden"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Het pakken van het toetsenbord is mislukt"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Het pakken van de muis is mislukt"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr "Ongeldige schermopmaak berekend voor wijzigingsverzoek."
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Onvoldoende geheugen beschikbaar voor framebuffer"
@@ -163,160 +153,164 @@
msgstr "VNC-viewer: Verbindingsopties"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Annuleren"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "OK"
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Compressie"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Automatisch selecteren"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Voorkeurscodering"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Kleurdiepte"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "volledig (alle beschikbare kleuren)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "medium (256 kleuren)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "laag (64 kleuren)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "zeer laag (8 kleuren)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Aangepast compressieniveau:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "niveau (1=snel, 6=best [4-6 zijn zelden nuttig])"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "JPEG-compressie toestaan:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "kwaliteit (0=slecht, 9=best)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Beveiliging"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Versleuteling"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Geen"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "TLS met anonieme certificaten"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "TLS met X509-certificaten"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Pad naar X509 CA-certificaat"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Pad naar X509 CRL-bestand"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Authenticatie"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "Standaard VNC (onveilig zonder versleuteling)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Gebruikersnaam en wachtwoord (onveilig zonder versleuteling)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Invoer"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Alleen kijken (muis en toetsenbord negeren)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Klembord van server accepteren"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Ook de hoofdselectie instellen"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Klembord naar server zenden"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Hoofdselectie en knipbuffer als klembord verzenden"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Hoofdselectie als klembord verzenden"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Systeemsleutels direct aan server doorgeven (volledigscherm)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Menutoets"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Scherm"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Grootte van gindse sessie aanpassen bij verbinden"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Gindse sessie aan het lokale venster aanpassen"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Volledigscherm-modus"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Volledigscherm-modus over alle beeldschermen inschakelen"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Overige"
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Gedeeld (verbinding van andere viewers niet verbreken)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Punt tonen als er geen cursor is"
@@ -368,112 +362,112 @@
msgid "Username:"
msgstr "Gebruikersnaam:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr "Kan geen platform-specifiek framebuffer aanmaken: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr "Platform-onafhankelijk framebuffer wordt gebruikt"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Geen scancode voor uitgebreide virtuele toets 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Geen scancode voor virtuele toets 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Geen symbool voor uitgebreide virtuele toets 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Geen symbool voor virtuele toets 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Geen symbool voor toetscode 0x%02x (in de huidige toestand)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Geen symbool voor toetscode %d (in de huidige toestand)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "Viewer af&sluiten"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&Volledig scherm"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "&Minimaliseren"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "Ve&nster aan sessie aanpassen"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&Ctrl"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&Alt"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "%s zenden"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "Ctrl-Alt-&Del zenden"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "Sch&erm verversen"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "&Opties..."
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "Verbindings&info..."
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "Info over &TigerVNC-viewer..."
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Menu ver&laten"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "VNC-verbindingsinfo"
@@ -495,123 +489,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr "Scherm heeft geen pixmap-indeling voor standaard kleurdiepte"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr "Kan geen geschikte pixmap-indeling vinden"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr "Alleen true-color beeldschermen worden ondersteund"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Standaard kleurenkaart en visual worden gebruikt, TrueColor, diepte %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Kan framebuffer-afbeelding niet aanmaken"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "De naam van parameter %s is te lang om naar het register te schrijven"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "Parameter %s is te lang om naar het register te schrijven"
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Schrijven van parameter %s van type %s naar het register is mislukt: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "De naam van parameter %s is te lang om uit het register te lezen"
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr "Lezen van parameter %s uit het register is mislukt: %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "Parameter %s is te lang om uit het register te lezen"
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Aanmaken registersleutel is mislukt: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Onbekend parametertype voor parameter %s"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Sluiten van registersleutel is mislukt: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Openen van registersleutel is mislukt: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr "Schrijven van configuratiebestand is mislukt; kan pad van thuismap niet verkrijgen."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Schrijven van configuratiebestand is mislukt; kan %s niet openen: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr "Lezen van configuratiebestand is mislukt; kan pad van thuismap niet verkrijgen."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Lezen van configuratiebestand is mislukt; kan %s niet openen: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Lezen van regel %d in bestand %s is mislukt: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Regel is te lang"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "Configuratiebestand %s het een ongeldige opmaak"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Ongeldige opmaak"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Ongeldige opmaak of te grote waarde"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Onbekende parameter %s op regel %d in bestand %s"
@@ -633,89 +627,95 @@
msgid "About TigerVNC Viewer"
msgstr "Info over TigerVNC-viewer"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Interne FLTK-fout. Bezig met afsluiten."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Fout tijdens starten van nieuwe TigerVNC-viewer: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Beëindigingssignaal %d werd ontvangen. TigerVNC-viewer sluit nu af."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "TigerVNC-viewer"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Nee"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Ja"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Sluiten"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "Info"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Verbergen"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Afsluiten"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Diensten"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Andere verbergen"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Alles tonen"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Bestand"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Nieuwe verbinding"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr "Kan de VNC-thuismap niet aanmaken: kan pad van thuismap niet verkrijgen."
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr "Kan de VNC-thuismap niet aanmaken: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "de opties '-listen' en '-via' gaan niet samen"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Luisterend op poort %d"
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Interne FLTK-fout. Bezig met afsluiten."
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Onbekende codering %d"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Onbekende codering"
#~ msgid "Bad Name/Value pair on line: %d in file: %s"
#~ msgstr "Ongeldig naam-waardepaar op regel %d in bestand %s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index ec1dd04..0a061d8 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,14 +1,14 @@
# Brazilian Portuguese translation of tigervnc.
-# Copyright (C) 2015 the TigerVNC Team (msgids)
+# Copyright (C) 2016 the TigerVNC Team (msgids)
# This file is distributed under the same license as the tigervnc package.
-# Rafael Fontenelle <rffontenelle@gmail.com>, 2015.
+# Rafael Fontenelle <rffontenelle@gmail.com>, 2015, 2016.
#
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc 1.5.90\n"
+"Project-Id-Version: tigervnc 1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2015-12-15 15:50-0200\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-01 15:36-0200\n"
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
"Language: pt_BR\n"
@@ -18,108 +18,98 @@
"X-Generator: Poedit 1.8.6\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "conectado ao host %s porta %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Nome do desktop: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Host %.80s porta: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Tamanho: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Formato de pixel: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(padrão do servidor %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Codificação solicitada: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Última codificação usada: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Velocidade estimada da linha: %d kbit/s"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Versão do protocolo: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Método de segurança: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "Definir tamanho do desktop falhou: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr "SetColourMapEntries inválido do servidor!"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Codificação %d desconhecida"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Codificação desconhecida"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Ativando atualizações contínuas"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Resultado %d kbit/s - alteração para qualidade %d"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Resultado %d kbit/s - a cor total agora está em %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "desativado"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "ativado"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "Usando codificação %s"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Usando formato de pixel %s"
@@ -128,25 +118,25 @@
msgid "Invalid geometry specified!"
msgstr "Geometria inválida especificada!"
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Ajustando tamanho de janela para evitar solicitação de tela cheia acidental"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Falha ao se conectar com o teclado"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Falha ao se conectar com o mouse"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr "Layout de tela inválida computada para solicitação de redimensionamento!"
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Memória insuficiente para o framebuffer"
@@ -163,160 +153,164 @@
msgstr "Visualizador VNC: Opções da conexão"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Cancelar"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "OK"
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Compressão"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Seleção automática"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Codificação preferida"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Profundidade de cores"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "Completo (todas as cores)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "Médio (256 cores)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "Baixo (64 cores)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "Muito baixo (8 cores)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Compressão personalizada:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "nível (1=rápido, 6=o melhor [4-6 raramente úteis])"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "Permite compressão JPEG:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "qualidade (0=ruim, 9=o melhor)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Segurança"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Criptografia"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Nenhum"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "TLS com certificados anônimos"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "TLS com certificados X509"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Caminho para o certificado X509 CA"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Caminho para o arquivo X509 CRL"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Autenticação"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "VNC padrão (inseguro sem criptografia)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Usuário e senha (inseguro sem criptografia)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Entrada"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Ver apenas (ignora mouse e teclado)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Aceitar área de transferência do servidor"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Também enviar seleção primária"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Enviar área de transferência para o servidor"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Enviar seleção primária e recortar buffer como área de transferência"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Enviar seleção primária como área de transferência"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Passar teclas de sistema diretamente para o servidor (tela cheia)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Tecla de menu"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Tela"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Redimensionar a sessão remota ao conectar"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Redimensionar a sessão remota para a janela local"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Modo tela cheia"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Ativar o modo de tela cheia em todos os monitores"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Diversos"
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Compartilhado (não desconecta outros visualizadores)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Mostrar ponto quando estiver sem mouse"
@@ -334,11 +328,11 @@
#: vncviewer/ServerDialog.cxx:69
msgid "Load..."
-msgstr "Carregar…"
+msgstr "Carregar..."
#: vncviewer/ServerDialog.cxx:74
msgid "Save As..."
-msgstr "Salvar como…"
+msgstr "Salvar como..."
#: vncviewer/ServerDialog.cxx:86
msgid "About..."
@@ -368,112 +362,112 @@
msgid "Username:"
msgstr "Nome de usuário:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
-msgstr "Não foi possível criar frambuffer específico da plataforma: %s"
+msgstr "Não foi possível criar framebuffer específico da plataforma: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
-msgstr "Usando frambuffer independente de plataforma"
+msgstr "Usando framebuffer independente de plataforma"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Nenhum código de scan para a tecla virtual estendida 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Nenhum código de scan para a tecla virtual 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Nenhum símbolo para a tecla virtual estendida 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Nenhum símbolo para a tecla virtual 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Nenhum símbolo para a tecla virtual 0x%02x (no estado atual)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Nenhum símbolo para a tecla virtual %d (no estado atual)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "&Sair do visualizador"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&Tela cheia"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "Minimi&zar"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "Redimensionar a &janela para a sessão"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&Ctrl"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&Alt"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "Enviar %s"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "Enviar Ctrl-Alt-&Del"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "&Atualizar tela"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "&Opções..."
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "&Informação de conexão..."
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "Sobre o visualizador &TigerVNC..."
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Recusar &menu"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "Informação de conexão VNC..."
@@ -495,123 +489,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
-msgstr "Tela carece de formato de pixamp para profundidade padrão"
+msgstr "Tela carece de formato de pixmap para profundidade padrão"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
-msgstr "Não foi possível localizar um formato de pixamo adequado"
+msgstr "Não foi possível localizar um formato de pixmap adequado"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
-msgstr "Apenas suporte a telas true color"
+msgstr "Apenas suporte a telas True Color"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Usando mapa de cores padrão e visual, TrueColor, profundidade %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Não foi possível criar imagem framebuffer"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "O nome do parâmetro %s era grande demais ser escrito no registro"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "O parâmetro %s era grande demais para ser escrito no registro"
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Falha ao escrever parâmetro %s do tipo %s no registro: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "O nome do parâmetro %s era grande demais ser lido do registro"
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
-msgstr "flaha ao ler parâmetro %s do registro: %ld"
+msgstr "Falha ao ler parâmetro %s do registro: %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "O parâmetro %s era grande demais para ser lido do registro"
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Falha ao criar chave de registro: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Tipo de parâmetro desconhecido para o parâmetro %s"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Falha ao fechar chave de registro: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Falha ao abrir chave de registro: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
-msgstr "Não foi possível escrever o arquivo de configuração, não foi possível obter o caminho do diretório home."
+msgstr "Não foi possível escrever o arquivo de configuração, não foi possível obter o caminho do diretório HOME."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Não foi possível escrever o arquivo de configuração, não foi possível abrir %s: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
-msgstr "Não foi possível ler o arquivo de configuração, não foi possível obter o caminho do diretório home."
+msgstr "Não foi possível ler o arquivo de configuração, não foi possível obter o caminho do diretório HOME."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Não foi possível ler o arquivo de configuração, não foi possível abrir %s: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Falha ao ler a linha %d no arquivo %s: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Linha longa demais"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "O arquivo de configuração %s está em um formato inválido"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Formato inválido"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Formato inválido ou valor grande demais"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Parâmetro %s desconhecido na linha %d no arquivo %s"
@@ -633,89 +627,95 @@
msgid "About TigerVNC Viewer"
msgstr "Sobre o Visualizador TigerVNC"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Erro interno no FLTK. Saindo."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Erro ao iniciar novo Visualizador TigerVNC: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Sinal de terminação %d foi recebido. Visualizador TigerVNC vai fechar agora."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "Visualizador TigerVNC"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Não"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Sim"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Fechar"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "Sobre"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Ocultar"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Sair"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Serviços"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Ocultar Outros"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Exibir Todos"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Arquivo"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Nova Conexão"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
-msgstr "Não foi possível criar o diretório home VNC: não foi possível obter o caminho do diretório home."
+msgstr "Não foi possível criar o diretório HOME do VNC: não foi possível obter o caminho do diretório HOME."
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
-msgstr "Não foi possível criar um diretório inicial VNC: %s."
+msgstr "Não foi possível criar um diretório HOME do VNC: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "Os parâmetros -listen e -via são incompatíveis"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Ouvindo na porta %d"
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Erro interno no FLTK. Saindo."
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Codificação %d desconhecida"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Codificação desconhecida"
#~ msgid "Multiple characters given for key code %d (0x%04x): '%s'"
#~ msgstr "Diversos caracteres fornecidos como código de chave %d (0x%04x): '%s'"
diff --git a/po/ru.po b/po/ru.po
index a35981e..67884af 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,126 +1,117 @@
# Russian translation for tigervnc.
# Copyright © 2016 the TigerVNC Team (msgids)
# This file is distributed under the same license as the tigervnc package.
-# Constantin Kaplinsky <const@tightvnc.com>, 2011.
# PuppyRus linux team <www.puppyrus.org>.
+# Constantin Kaplinsky <const@tightvnc.com>, 2011.
# Pavel Maryanov <acid@jack.kiev.ua>, 2016.
+# Yuri Kozlov <yuray@komyakino.ru>, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc 1.5.90\n"
+"Project-Id-Version: tigervnc 1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2016-04-07 16:08+0300\n"
-"Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-07 09:23+0300\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@d07.ru>\n"
"Language: ru_UA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 1.8.7.1\n"
+"X-Generator: Lokalize 1.5\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "подключен к компьютеру %s, порт %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Имя компьютера: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Компьютер: %.80s порт: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Размер: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Формат пикселей: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(сервер по умолчанию %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Запрошено кодирование: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Используется кодирование: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Скорость соединения: %d кбит/с"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Версия протокола: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Метод защиты: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "Ошибка SetDesktopSize: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
-msgstr "С сервера получен недопустмый SetColourMapEntries"
+msgstr "С сервера получен недопустимый SetColourMapEntries"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Неизвестное кодирование %d"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Неизвестное кодирование"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Включение непрерывного обновления"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Пропускная способность %d кбит/с. Установлено качество %d"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Пропускная способность %d кбит/с. Глубина цвета %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "отключено"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "включено"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "Используется кодирование %s"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Используется формат пикселей %s"
@@ -129,25 +120,25 @@
msgid "Invalid geometry specified!"
msgstr "Указан недопустимый размер экрана."
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Зафиксировать размер окна, чтобы исключить переключения на полный экран"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Не удалось перехватить клавиатуру"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Не удалось перехватить мышь"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
-msgstr "Для запроса на изменение рамера рассчитан недопустимый макет экрана."
+msgstr "Для запроса на изменение размера рассчитан недопустимый макет экрана."
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Недостаточно памяти для framebuffer"
@@ -164,160 +155,164 @@
msgstr "VNC Viewer: параметры соединения"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Отмена"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "ОК"
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Сжатие"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Автоматический выбор"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Вид кодирования"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Глубина цвета"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "Полная (все цвета)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "Средняя (256 цветов)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "Низкая (64 цвета)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "Минимум цвета (8 цветов)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Задать уровень сжатия:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "уровень (1=мин, 6=макс. [4-6 используются редко])"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "Разрешить сжатие JPEG:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "качество (0=наихудшее, 9=наилучшее)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Безопасность"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Шифрование"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Нет"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "TLS с анонимными сертификатами"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "TLS с сертификатами X509"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Путь к сертификату X509 CA"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Путь к файлу X509 CRL"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Авторизация"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "Стандартный VNC (без защиты и шифрования)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Имя пользователя и пароль (без защиты и шифрования)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Ввод"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Только просмотр (не перехватывать мышь и клавиатуру)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Принимать буфер обмена с сервера"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Также принимать мышиный буфер"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Отправлять буфер обмена на сервер"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Отправлять выделение в терминале в буфер обмена сервера"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Отправлять мышиный буфер туда же, куда и буфер обмена"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Отправлять сочетания клавиш (для полного экрана)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Вызов меню:"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Экран"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Изменить размер удалённого экрана"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Изменить размер удалённого сеанса до локального окна"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Полноэкранный режим"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Расширить режим полного экрана на все мониторы"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Разное"
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Совместная работа (не отключать других клиентов)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Показывать точку при отсутствии курсора"
@@ -369,112 +364,112 @@
msgid "Username:"
msgstr "Имя пользователя:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr "Не удаётся создать framebuffer: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr "Используется универсальный framebuffer"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Нет скан-кода для дополнительной виртуальной клавиши 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Нет скан-кода для виртуальной клавиши 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Нет символа для расширенной виртуальной клавиши 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Нет символа для виртуальной клавиши 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Нет символа для кода клавиши 0x%02x (в текущем состоянии)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Нет символа для кода клавиши %d (в текущем состоянии)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "В&ыход"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&Полный экран"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "&Свернуть"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "Изменить размер окна"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&CTRL"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&ALT"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "Отправить %s"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "Отправить CTRL-ALT-&DEL"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "&Обновить экран"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "&Параметры"
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "Сведения о соединении"
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "О &TigerVNC viewer"
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Закрыть &меню"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "Сведения о соединении VNC"
@@ -496,123 +491,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr "Неправильный формат pixmap для выбранной глубины цвета"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr "Не удалось найти допустимый формат pixmap"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr "Поддерживаются только полноцветные экраны"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Используется стандартная цветовая карта и визуальное оформление, TrueColor, глубина %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Не удалось создать изображение в framebuffer"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "Название параметра %s слишком длинное для записи в реестр"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "Параметр %s слишком длинный для записи в реестр"
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Не удалось записать параметр %s типа %s в реестр: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "Название параметра %s слишком длинное для чтения из реестра"
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr "Не удалось прочитать параметр %s из реестра: %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "Параметр %s слишком длинный для чтения из реестра"
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Не удалось создать ключ реестра: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Неизвестный тип для параметра %s"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Не удалось закрыть ключ реестра: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Не удалось открыть ключ реестра: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr "Не удалось создать домашний каталог VNC: не удаётся получить путь к домашнему каталогу."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Не удалось записать файл конфигурации: не удаётся открыть %s: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr "Не удалось прочитать файл конфигурации: не удаётся получить путь к домашнему каталогу."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Не удалось прочитать файл конфигурации: не удаётся открыть %s: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Не удалось прочитать строку %d из файла %s: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Строка слишком длинная"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "Недопустимый формат файла конфигурации %s"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Недопустимый формат"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Недопустимый формат или слишком большое значение"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Неизвестный параметр %s в строке %d файла %s"
@@ -634,86 +629,92 @@
msgid "About TigerVNC Viewer"
msgstr "О TigerVNC viewer"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Внутренняя ошибка FLTK. Выход."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Не удалось запустить новый TigerVNC Viewer: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Получен сигнал завершения работы %d. TigerVNC Viewer будет закрыт."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "TigerVNC Viewer"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Нет"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Да"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Закрыть"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "О программе"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Скрыть"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Выход"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Службы"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Скрыть прочее"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Показать все"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Файл"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Новое соединение"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr "Не удалось создать домашний каталог VNC: не удаётся получить путь к домашнему каталогу."
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr "Не удалось создать домашний каталог VNC: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "Параметры -listen и -via несовместимы"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Прослушивается порт %d"
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Внутренняя ошибка FLTK. Выход."
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Неизвестное кодирование %d"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Неизвестное кодирование"
diff --git a/po/sr.po b/po/sr.po
index 6768e6b..b452195 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,13 +1,13 @@
# Serbian translation for tigervnc.
-# Copyright © 2015 the TigerVNC Team (msgids)
+# Copyright © 2016 the TigerVNC Team (msgids)
# This file is distributed under the same license as the tigervnc package.
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc-1.5.90\n"
+"Project-Id-Version: tigervnc-1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2016-03-06 15:42+0200\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-08-07 21:27+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language: sr\n"
@@ -16,108 +16,98 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "повезан сам са домаћином „%s“ прикључник %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Назив радне површи: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Домаћин: %.80s прикључник: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Величина: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Формат пиксела: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(основно на серверу %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Затражено кодирање: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Последње коришћено кодирање: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Процењена брзина линије: %d kbit/s"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Издања протокола: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Метод безбедности: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "Неуспело подешавање величине радне површи: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr "Неисправни уноси подешавања мапе боје са сервера!"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Непознато кодирање „%d“"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Непознато кодирање"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Укључујем непрекидно освежавање"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Пропусност је %d kbit/s — мењам на квалитет %d"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Пропусност је %d kbit/s — пуна боја је сада %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "искључена"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "укључена"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "Користим „%s“ кодирање"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Користим формат пиксела %s"
@@ -126,25 +116,25 @@
msgid "Invalid geometry specified!"
msgstr "Наведена је неисправна геометрија!"
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Прилагођавам величину прозора да би се избегли случајни захтеви за целим екраном"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Неуспех хватања тастатуре"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Неуспех хватања миша"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr "Прорачунат је неодговарајући распоред екрана за захтев промене величине!"
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Нема довољно меморије за међумеморију кадра"
@@ -161,160 +151,164 @@
msgstr "ВНЦ прегледач: Могућности повезивања"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Откажи"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "У реду"
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Сажимање"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Сам изабери"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Жељено кодирање"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Ниво боје"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "Пун (све доступне боје)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "Средњи (256 боја)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "Низак (64 боје)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "Врло низак (8 боје)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Произвољни ниво сажимања:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "ниво (1=брзо, 6=најбоље [4-6 се ретко користи])"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "Дозволи ЈПЕГ сажимање:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "квалитет (0=лош, 9=најбољи)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Безбедност"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Шифровање"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Ништа"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "ТЛС са анонимним уверењима"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "ТЛС са X509 уверењима"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Путања до X509 уверења"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Путања до X509 ЦРЛ датотеке"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Потврђивање идентитета"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "Стандардни ВНЦ (несигурно без шифровања)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Корисник и лозинка (несигурно без шифровања)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Улаз"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Само преглед (занемари миша и тастатуру)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Прихвати оставу са сервера"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Такође постави први избор"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Пошаљи оставу на сервер"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Пошаљи први избор и исеци међумеморију као оставу"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Пошаљи први избор као оставу"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Проследи системске кључеве директно на сервер (пун екран)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Тастер изборника"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Екран"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Промени величину удаљене сесије приликом повезивања"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Промени величину удаљене сесије на месни прозор"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Режим пуног екрана"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Укључи режим преко целог екрана на свим мониторима"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Разно"
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Дељено (не прекидај везу другим прегледачима)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Прикажи тачку када нема курзора"
@@ -366,112 +360,112 @@
msgid "Username:"
msgstr "Корисник:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr "Не могу да направим међумеморију кадра особену за платформу: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr "Користим међумеморију кадра независну од платформе"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Нема шифре прегледа за проширени виртуелни кључ 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Нема шифре прегледа за виртуелни кључ 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Нема симбола за проширени виртуелни кључ 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Нема симбола за виртуелни кључ 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Нема симбола за шифру кључа 0x%02x (у текућем стању)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Нема симбола за шифру кључа %d (у текућем стању)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "&Напусти прегледача"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&Пун екран"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "&Умањи"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "&Величина прозора на сесију"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&Ктрл"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&Алт"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "Пошаљи „%s“"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "Пошаљи Ктрл-Алт-&Дел"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "&Освежи екран"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "&Могућности..."
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "Подаци о &вези..."
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "О &програму..."
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Одбаци &изборник"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "Подаци о ВНЦ вези"
@@ -493,123 +487,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr "Приказу недостаје формат пиксмапе за основну дубину"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr "Не могу да нађем погодан формат пиксмапе"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr "Само прикази праве боје су подржани"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Користим основну мапу боје и видности, Права боја, дубине %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Не могу да направим слику међумеморије кадра"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "Назив параметра „%s“ беше превелик за уписивање у регистар"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "Параметар „%s“ беше превелик за уписивање у регистар"
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Нисам успео да упишем параметар „%s“ врсте „%s“ у регистар: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "Назив параметра „%s“ беше превелик за читање из регистра"
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr "Нисам успео да прочитам параметар „%s“ из регистра: %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "Параметар „%s“ беше превелик за читање из регистра"
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Нисам успео да направим кључ регистра: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Непозната врста параметра за параметар „%s“"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Нисам успео да затворим кључ регистра: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Нисам успео да отворим кључ регистра: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr "Нисам успео да упишем датотеку подешавања, не могу да добијем путању личне фасцикле."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Нисам успео да упишем датотеку подешавања, не могу да отворим „%s“: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr "Нисам успео да прочитам датотеку подешавања, не могу да добијем путању личне фасцикле."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Нисам успео да прочитам датотеку подешавања, не могу да отворим „%s“: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Нисам успео да прочитам %d. ред у датотеци „%s“: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Ред је предуг"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "Датотека подешавања „%s“ је у неисправном запису"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Неисправан запис"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Неисправан запис или предуга вредност"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Непознат параметар „%s“ у %d. реду у датотеци „%s“"
@@ -631,86 +625,92 @@
msgid "About TigerVNC Viewer"
msgstr "О програму"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Унутрашња ФЛТК грешка. Излазим."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Грешка покретања новог примерка програма: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Примљен је сигнал за окончавање %d. Програм ће сада изаћи."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "Прегледач ТигарВНЦ"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Не"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Да"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Затвори"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "О програму"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Сакриј"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Изађи"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Услуге"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Сакриј остале"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Прикажи све"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Датотека"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Нова веза"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr "Не могу да направим личну фасциклу ВНЦ-а: не могу да добијем путању личне фасцикле."
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr "Не могу да направим личну фасциклу ВНЦ-а: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "Параметри „-listen“ и „-via“ нису сагласни"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Ослушкујем на прикључнику %d"
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Унутрашња ФЛТК грешка. Излазим."
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Непознато кодирање „%d“"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Непознато кодирање"
diff --git a/po/sv.po b/po/sv.po
index ee48aa2..d4500a5 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,16 +1,17 @@
# Swedish messages for TigerVNC.
-# Copyright © 2015 the TigerVNC Team (msgids)
+# Copyright © 2015, 2016 the TigerVNC Team (msgids)
# This file is distributed under the same license as the TigerVNC package.
-# Peter Åstrand <astrand@cendio.se>, 2011.
-# Göran Uddeborg <goeran@uddeborg.se>, 2015.
#
-# $Revision: 1.10 $
+# Peter Åstrand <astrand@cendio.se>, 2011.
+# Göran Uddeborg <goeran@uddeborg.se>, 2015, 2016.
+#
+# $Revision: 1.13 $
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc 1.5.90\n"
+"Project-Id-Version: tigervnc 1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2015-12-28 16:52+0100\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-16 20:31+0200\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -19,108 +20,98 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "ansluten till värd %s port %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Skrivbordsnamn: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Värd: %.80s port: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Storlek: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Pixelformat: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(serverstandard %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Begärd kodning: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Senast använd kodning: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Uppskattad hastighet på förbindelsen: %d kbit/s"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Protokollversion: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Säkerhetsmetod: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "SetDesktopSize misslyckades: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr "Ogiltig SetColourMapEntries från server!"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Okänd kodning %d"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Okänd kodning"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Aktiverar kontinuerliga uppdateringar"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Bandbredd %d kbit/s - byter till kvalitet %d"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Bandbredd %d kbit/s - fullfärg är nu %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "avaktiverad"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "aktiverad"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "Använder kodning %s"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Använder pixelformat %s"
@@ -129,25 +120,25 @@
msgid "Invalid geometry specified!"
msgstr "Ogiltig geometri angiven!"
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Justerar fönsterstorleken för att undvika fullskärm av misstag"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Misslyckades med att fånga tangentbordet"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Misslyckades med att fånga musen"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr "Ogiltig skärmlayout beräknad för storleksförändrings-begäran!"
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Inte tillräckligt med minne för framebuffer"
@@ -164,160 +155,164 @@
msgstr "VNC-visare: Anslutningsalternativ"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Avbryt"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "Ok"
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Kompression"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Automatiskt val"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Föredragen kodning"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Färgnivå"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "Full (alla tillgängliga färger)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "Medium (256 färger)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "Låg (64 färger)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "Mycket låg (8 färger)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Anpassad komprimeringsnivå:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "nivå (1=snabb, 6=bäst [4-6 sällan användbara])"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "Tillåt JPEG-komprimering:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "kvalitet (0=dålig, 9=bäst)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Säkerhet"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Kryptering"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Ingen"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "TLS med anonyma certifikat"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "TLS med X509-certifikat"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Sökväg till CA-certifikat för X509"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Sökväg till CRL-fil för X509"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Autentisering"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "Standard-VNC (osäkert utan kryptering)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Användarnamn och lösenord (osäkert utan kryptering)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Inmatning"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Endast visning (ignorera mus och tangentbord)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Acceptera urklipp från server"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Sätt även primär markering"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Skicka urklipp till server"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Skicka primär markering och klippbuffert som urklipp"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Skicka primär markering som urklipp"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Skicka systemtangenter direkt till servern (fullskärm)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Menytangent"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Skärm"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Anpassa sessionsstorlek vid anslutning"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Anpassa sessionsstorlek till lokalt fönster"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Fullskärmsläge"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Aktivera fullskärmsläge på alla skärmar"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Diverse"
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Delad (koppla ej från andra visare)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Visa punkt när muspekare saknas"
@@ -369,112 +364,112 @@
msgid "Username:"
msgstr "Användarnamn:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr "Kan inte skapa plattformsspecifik framebuffer: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr "Använder plattformsoberoende framebuffer"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Ingen scancode för utökad virtuell tangent 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Ingen scancode för virtuell tangent 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Ingen symbol för utökad virtuell tangent 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Ingen symbol för virtuell tangent 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Ingen symbol för tangentkod 0x%02x (i nuvarande tillstånd)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Ingen symbol för tangentkod %d (i nuvarande tillstånd)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "&Avsluta visaren"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&Fullskärm"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "M&inimera"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "Anpassa &fönster till session"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&Ctrl"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&Alt"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "Skicka %s"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "Skicka Ctrl-Alt-&Del"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "&Uppdatera skärm"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "&Inställningar..."
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "&Information om anslutningen..."
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "Om &TigerVNC-visaren..."
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Stäng &meny"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "VNC anslutningsinformation"
@@ -496,123 +491,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr "Skärmen saknar pixmap-format för standarddjup"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr "Kunde inte hitta lämpligt pixmap-format"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr "Endast skärmar med true colour stöds"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Använder standardfärgkarta och visual, TrueColor, depth %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Kunde inte skapa framebuffer-bild"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "Namnet på parameter %s var för stor för skrivning till registret"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "Parameter %s var för stor för skrivning till registret"
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Misslyckades med att skriva parameter %s av typ %s till registret: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "Namnet på parameter %s var för stor för att läsas från registret"
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr "Misslyckades med att läsa parameter %s från registret: %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "Parameter %s var för stor för läsning från registret"
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Misslyckades med att skapa registernyckel: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Okänd parametertyp för parameter %s"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Misslyckades med att stänga registernyckel: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Misslyckades med att öppna registernyckel: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr "Misslyckades med att skriva konfigurations-fil, kan inte avgöra hemkatalogens sökväg."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Misslyckades med att skriva konfigurations-fil: kan inte öppna %s: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr "Misslyckades med att läsa konfigurations-fil, kan inte avgöra hemkatalogens sökväg."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Misslyckades med att läsa konfigurations-fil, kan inte öppna %s: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Misslyckades med att läsa rad %d i fil %s: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Raden är för lång"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "Konfigurationsfilen %s har ogiltigt format"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Ogiltigt format"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Ogiltigt format eller för stort värde"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Okänd parameter %s på rad %d i fil %s"
@@ -634,86 +629,86 @@
msgid "About TigerVNC Viewer"
msgstr "Om VNC-visaren"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Internt FLTK-fel. Avslutar."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Fel vid start av ny TigerVNC-visare: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Termineringssignal %d har mottagits. TigerVNC-visaren kommer nu att avslutas."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "VNC-visare"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Ingen"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Ja"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Stäng"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "Om"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Göm"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Avsluta"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Tjänster"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Göm andra"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Visa alla"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Arkiv"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Ny anslutning"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr "Kunde inte skapa VNC-hemkatalog: kan inte avgöra hemkatalogens sökväg"
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr "Kunde inte skapa VNC-hemkatalog: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "Parametrar -listen och -via är inkompatibla"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Lyssnar på port %d"
-
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Internt FLTK-fel. Avslutar."
diff --git a/po/tigervnc.pot b/po/tigervnc.pot
index 2bb748d..0d9e049 100644
--- a/po/tigervnc.pot
+++ b/po/tigervnc.pot
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,108 +17,98 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr ""
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr ""
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr ""
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr ""
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr ""
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr ""
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr ""
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr ""
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr ""
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr ""
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr ""
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr ""
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr ""
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr ""
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr ""
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr ""
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr ""
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr ""
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr ""
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr ""
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr ""
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr ""
@@ -127,25 +117,25 @@
msgid "Invalid geometry specified!"
msgstr ""
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr ""
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr ""
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr ""
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr ""
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr ""
@@ -162,160 +152,164 @@
msgstr ""
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr ""
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr ""
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr ""
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr ""
@@ -367,112 +361,112 @@
msgid "Username:"
msgstr ""
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr ""
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr ""
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr ""
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr ""
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr ""
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr ""
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr ""
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr ""
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr ""
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr ""
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr ""
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr ""
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr ""
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr ""
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr ""
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr ""
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr ""
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr ""
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr ""
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr ""
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr ""
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr ""
@@ -494,123 +488,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr ""
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr ""
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr ""
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr ""
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr ""
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr ""
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr ""
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr ""
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr ""
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr ""
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr ""
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr ""
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr ""
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr ""
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr ""
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr ""
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr ""
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr ""
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr ""
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr ""
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr ""
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr ""
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr ""
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr ""
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr ""
@@ -628,86 +622,86 @@
msgid "About TigerVNC Viewer"
msgstr ""
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr ""
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr ""
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr ""
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr ""
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr ""
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr ""
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr ""
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr ""
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr ""
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr ""
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr ""
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr ""
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr ""
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr ""
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr ""
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr ""
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr ""
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr ""
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr ""
-
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr ""
diff --git a/po/uk.po b/po/uk.po
index b8a8b12..379fdde 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -2,13 +2,13 @@
# Copyright (C) 2014 the TigerVNC Team (msgids)
# This file is distributed under the same license as the tigervnc package.
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2014, 2015.
+# Yuri Chornoivan <yurchor@ukr.net>, 2014, 2015, 2016.
msgid ""
msgstr ""
-"Project-Id-Version: tigervnc 1.5.90\n"
+"Project-Id-Version: tigervnc 1.6.90\n"
"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-11-26 11:33+0000\n"
-"PO-Revision-Date: 2015-12-01 21:51+0200\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-01 14:38+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
"Language: uk\n"
@@ -18,108 +18,98 @@
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 1.5\n"
-#: vncviewer/CConn.cxx:111
+#: vncviewer/CConn.cxx:110
#, c-format
msgid "connected to host %s port %d"
msgstr "з’єднано з вузлом %s, порт %d"
-#: vncviewer/CConn.cxx:173
+#: vncviewer/CConn.cxx:169
#, c-format
msgid "Desktop name: %.80s"
msgstr "Назва робочої станції: %.80s"
-#: vncviewer/CConn.cxx:178
+#: vncviewer/CConn.cxx:174
#, c-format
msgid "Host: %.80s port: %d"
msgstr "Вузол: %.80s порт: %d"
-#: vncviewer/CConn.cxx:183
+#: vncviewer/CConn.cxx:179
#, c-format
msgid "Size: %d x %d"
msgstr "Розмір: %d x %d"
-#: vncviewer/CConn.cxx:191
+#: vncviewer/CConn.cxx:187
#, c-format
msgid "Pixel format: %s"
msgstr "Формат у пікселях: %s"
-#: vncviewer/CConn.cxx:198
+#: vncviewer/CConn.cxx:194
#, c-format
msgid "(server default %s)"
msgstr "(типовий для сервера %s)"
-#: vncviewer/CConn.cxx:203
+#: vncviewer/CConn.cxx:199
#, c-format
msgid "Requested encoding: %s"
msgstr "Запит щодо кодування: %s"
-#: vncviewer/CConn.cxx:208
+#: vncviewer/CConn.cxx:204
#, c-format
msgid "Last used encoding: %s"
msgstr "Останнє використане кодування: %s"
-#: vncviewer/CConn.cxx:213
+#: vncviewer/CConn.cxx:209
#, c-format
msgid "Line speed estimate: %d kbit/s"
msgstr "Оцінка швидкості лінії: %d кбіт/с"
-#: vncviewer/CConn.cxx:218
+#: vncviewer/CConn.cxx:214
#, c-format
msgid "Protocol version: %d.%d"
msgstr "Версія протоколу: %d.%d"
-#: vncviewer/CConn.cxx:223
+#: vncviewer/CConn.cxx:219
#, c-format
msgid "Security method: %s"
msgstr "Метод захисту: %s"
-#: vncviewer/CConn.cxx:329
+#: vncviewer/CConn.cxx:319
#, c-format
msgid "SetDesktopSize failed: %d"
msgstr "Помилка SetDesktopSize: %d"
-#: vncviewer/CConn.cxx:398
+#: vncviewer/CConn.cxx:411
msgid "Invalid SetColourMapEntries from server!"
msgstr "Некоректне значення SetColourMapEntries від сервера!"
-#. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
-#, c-format
-msgid "Unknown encoding %d"
-msgstr "Невідоме кодування %d"
-
-#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
-msgid "Unknown encoding"
-msgstr "Невідоме кодування"
-
-#: vncviewer/CConn.cxx:484
+#: vncviewer/CConn.cxx:485
msgid "Enabling continuous updates"
msgstr "Увімкнути неперервне оновлення"
-#: vncviewer/CConn.cxx:554
+#: vncviewer/CConn.cxx:555
#, c-format
msgid "Throughput %d kbit/s - changing to quality %d"
msgstr "Пропускна здатність %d кбіт/с — змінюємо якість на %d"
-#: vncviewer/CConn.cxx:576
+#: vncviewer/CConn.cxx:577
#, c-format
msgid "Throughput %d kbit/s - full color is now %s"
msgstr "Пропускна здатність %d кбіт/с — змінюємо колірність на %s"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "disabled"
msgstr "вимкнено"
-#: vncviewer/CConn.cxx:578
+#: vncviewer/CConn.cxx:579
msgid "enabled"
msgstr "увімкнено"
-#: vncviewer/CConn.cxx:588
+#: vncviewer/CConn.cxx:589
#, c-format
msgid "Using %s encoding"
msgstr "Використовуємо кодування %s"
-#: vncviewer/CConn.cxx:635
+#: vncviewer/CConn.cxx:636
#, c-format
msgid "Using pixel format %s"
msgstr "Використовуємо формат у пікселях %s"
@@ -128,25 +118,25 @@
msgid "Invalid geometry specified!"
msgstr "Вказано некоректні геометричні параметри!"
-#: vncviewer/DesktopWindow.cxx:309
+#: vncviewer/DesktopWindow.cxx:303
msgid "Adjusting window size to avoid accidental full screen request"
msgstr "Коригувати розміри вікна, щоб уникнути випадкового запиту щодо переходу у повноекранний режим"
-#: vncviewer/DesktopWindow.cxx:491 vncviewer/DesktopWindow.cxx:497
-#: vncviewer/DesktopWindow.cxx:510
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
msgid "Failure grabbing keyboard"
msgstr "Помилка під час спроби перехопити клавіатуру"
-#: vncviewer/DesktopWindow.cxx:522
+#: vncviewer/DesktopWindow.cxx:516
msgid "Failure grabbing mouse"
msgstr "Помилка під час спроби перехопити мишу"
-#: vncviewer/DesktopWindow.cxx:752
+#: vncviewer/DesktopWindow.cxx:746
msgid "Invalid screen layout computed for resize request!"
msgstr "Результати обчислення компонування вікна для запиту щодо зміни розмірів є некоректними!"
#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
-#: vncviewer/X11PixelBuffer.cxx:113
+#: vncviewer/X11PixelBuffer.cxx:117
msgid "Not enough memory for framebuffer"
msgstr "Недостатньо пам’яті для буфера кадрів"
@@ -163,160 +153,164 @@
msgstr "Засіб перегляду VNC: параметри з’єднання"
#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:268
+#: vncviewer/vncviewer.cxx:282
msgid "Cancel"
msgstr "Скасувати"
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
msgid "OK"
msgstr "Гаразд"
-#: vncviewer/OptionsDialog.cxx:413
+#: vncviewer/OptionsDialog.cxx:423
msgid "Compression"
msgstr "Стискання"
-#: vncviewer/OptionsDialog.cxx:429
+#: vncviewer/OptionsDialog.cxx:439
msgid "Auto select"
msgstr "Автовибір"
-#: vncviewer/OptionsDialog.cxx:441
+#: vncviewer/OptionsDialog.cxx:451
msgid "Preferred encoding"
msgstr "Бажане кодування"
-#: vncviewer/OptionsDialog.cxx:489
+#: vncviewer/OptionsDialog.cxx:499
msgid "Color level"
msgstr "Рівень відтворення кольору"
-#: vncviewer/OptionsDialog.cxx:500
+#: vncviewer/OptionsDialog.cxx:510
msgid "Full (all available colors)"
msgstr "Повністю (усі доступні кольори)"
-#: vncviewer/OptionsDialog.cxx:507
+#: vncviewer/OptionsDialog.cxx:517
msgid "Medium (256 colors)"
msgstr "Середній (256 кольори)"
-#: vncviewer/OptionsDialog.cxx:514
+#: vncviewer/OptionsDialog.cxx:524
msgid "Low (64 colors)"
msgstr "Низький (64 кольори)"
-#: vncviewer/OptionsDialog.cxx:521
+#: vncviewer/OptionsDialog.cxx:531
msgid "Very low (8 colors)"
msgstr "Дуже низький (8 кольорів)"
-#: vncviewer/OptionsDialog.cxx:538
+#: vncviewer/OptionsDialog.cxx:548
msgid "Custom compression level:"
msgstr "Нетиповий рівень стискання:"
-#: vncviewer/OptionsDialog.cxx:544
+#: vncviewer/OptionsDialog.cxx:554
msgid "level (1=fast, 6=best [4-6 are rarely useful])"
msgstr "рівень (1=швидко, 6=найякісніше [4-6 використовувати не варто])"
-#: vncviewer/OptionsDialog.cxx:551
+#: vncviewer/OptionsDialog.cxx:561
msgid "Allow JPEG compression:"
msgstr "Дозволити стискання JPEG:"
-#: vncviewer/OptionsDialog.cxx:557
+#: vncviewer/OptionsDialog.cxx:567
msgid "quality (0=poor, 9=best)"
msgstr "якість (0=найгірша, 9=найкраща)"
-#: vncviewer/OptionsDialog.cxx:568
+#: vncviewer/OptionsDialog.cxx:578
msgid "Security"
msgstr "Захист"
-#: vncviewer/OptionsDialog.cxx:583
+#: vncviewer/OptionsDialog.cxx:593
msgid "Encryption"
msgstr "Шифрування"
-#: vncviewer/OptionsDialog.cxx:594 vncviewer/OptionsDialog.cxx:647
-#: vncviewer/OptionsDialog.cxx:715
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
msgid "None"
msgstr "Немає"
-#: vncviewer/OptionsDialog.cxx:600
+#: vncviewer/OptionsDialog.cxx:610
msgid "TLS with anonymous certificates"
msgstr "TLS із анонімними сертифікатами"
-#: vncviewer/OptionsDialog.cxx:606
+#: vncviewer/OptionsDialog.cxx:616
msgid "TLS with X509 certificates"
msgstr "TLS з сертифікатами X509"
-#: vncviewer/OptionsDialog.cxx:613
+#: vncviewer/OptionsDialog.cxx:623
msgid "Path to X509 CA certificate"
msgstr "Шлях до сертифіката CA X509"
-#: vncviewer/OptionsDialog.cxx:620
+#: vncviewer/OptionsDialog.cxx:630
msgid "Path to X509 CRL file"
msgstr "Шлях до файла CRL X509"
-#: vncviewer/OptionsDialog.cxx:636
+#: vncviewer/OptionsDialog.cxx:646
msgid "Authentication"
msgstr "Розпізнавання"
-#: vncviewer/OptionsDialog.cxx:653
+#: vncviewer/OptionsDialog.cxx:663
msgid "Standard VNC (insecure without encryption)"
msgstr "Стандартний VNC (без захисту і шифрування)"
-#: vncviewer/OptionsDialog.cxx:659
+#: vncviewer/OptionsDialog.cxx:669
msgid "Username and password (insecure without encryption)"
msgstr "Ім’я користувача і пароль (без захисту і шифрування)"
-#: vncviewer/OptionsDialog.cxx:678
+#: vncviewer/OptionsDialog.cxx:688
msgid "Input"
msgstr "Введення"
-#: vncviewer/OptionsDialog.cxx:686
+#: vncviewer/OptionsDialog.cxx:696
msgid "View only (ignore mouse and keyboard)"
msgstr "Лише перегляд (ігнорувати сигнали від миші і клавіатури)"
-#: vncviewer/OptionsDialog.cxx:692
+#: vncviewer/OptionsDialog.cxx:702
msgid "Accept clipboard from server"
msgstr "Приймати вміст буфера з сервера"
-#: vncviewer/OptionsDialog.cxx:698
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Також встановити основне позначене"
+
+#: vncviewer/OptionsDialog.cxx:716
msgid "Send clipboard to server"
msgstr "Надіслати вміст буфера обміну до сервера"
-#: vncviewer/OptionsDialog.cxx:704
-msgid "Send primary selection and cut buffer as clipboard"
-msgstr "Надіслати основне позначене і вирізати буфер до буфера обміну"
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Надіслати основне позначене як буфер обміну"
-#: vncviewer/OptionsDialog.cxx:710
+#: vncviewer/OptionsDialog.cxx:730
msgid "Pass system keys directly to server (full screen)"
msgstr "Передавати натискання системних клавіш безпосередньо до сервера (повноекранний режим)"
-#: vncviewer/OptionsDialog.cxx:713
+#: vncviewer/OptionsDialog.cxx:733
msgid "Menu key"
msgstr "Клавіша меню"
-#: vncviewer/OptionsDialog.cxx:729
+#: vncviewer/OptionsDialog.cxx:749
msgid "Screen"
msgstr "Екран"
-#: vncviewer/OptionsDialog.cxx:737
+#: vncviewer/OptionsDialog.cxx:757
msgid "Resize remote session on connect"
msgstr "Змінювати розміри віддаленого сеансу під час з’єднання"
-#: vncviewer/OptionsDialog.cxx:750
+#: vncviewer/OptionsDialog.cxx:770
msgid "Resize remote session to the local window"
msgstr "Змінювати розміри віддаленого сеансу відповідно до локального вікна"
-#: vncviewer/OptionsDialog.cxx:756
+#: vncviewer/OptionsDialog.cxx:776
msgid "Full-screen mode"
msgstr "Повноекранний режим"
-#: vncviewer/OptionsDialog.cxx:762
+#: vncviewer/OptionsDialog.cxx:782
msgid "Enable full-screen mode over all monitors"
msgstr "Увімкнути повноекранний режим на усіх моніторах"
-#: vncviewer/OptionsDialog.cxx:771
+#: vncviewer/OptionsDialog.cxx:791
msgid "Misc."
msgstr "Інше"
-#: vncviewer/OptionsDialog.cxx:779
+#: vncviewer/OptionsDialog.cxx:799
msgid "Shared (don't disconnect other viewers)"
msgstr "Спільний (не від’єднувати інші засоби перегляду)"
-#: vncviewer/OptionsDialog.cxx:785
+#: vncviewer/OptionsDialog.cxx:805
msgid "Show dot when no cursor"
msgstr "Показувати крапку, якщо немає курсора"
@@ -368,112 +362,112 @@
msgid "Username:"
msgstr "Користувач:"
-#: vncviewer/Viewport.cxx:433
+#: vncviewer/Viewport.cxx:391
#, c-format
msgid "Unable to create platform specific framebuffer: %s"
msgstr "Не вдалося створити специфічний для платформи буфер кадрів: %s"
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:392
msgid "Using platform independent framebuffer"
msgstr "Використовуємо незалежний від платформи буфер кадрів"
-#: vncviewer/Viewport.cxx:668
+#: vncviewer/Viewport.cxx:628
#, c-format
msgid "No scan code for extended virtual key 0x%02x"
msgstr "Немає коду сканування для віртуальної клавіші розширення 0x%02x"
-#: vncviewer/Viewport.cxx:670
+#: vncviewer/Viewport.cxx:630
#, c-format
msgid "No scan code for virtual key 0x%02x"
msgstr "Немає коду сканування для віртуальної клавіші 0x%02x"
-#: vncviewer/Viewport.cxx:687
+#: vncviewer/Viewport.cxx:647
#, c-format
msgid "No symbol for extended virtual key 0x%02x"
msgstr "Немає символу для віртуальної клавіші розширення 0x%02x"
-#: vncviewer/Viewport.cxx:689
+#: vncviewer/Viewport.cxx:649
#, c-format
msgid "No symbol for virtual key 0x%02x"
msgstr "Немає символу для віртуальної клавіші 0x%02x"
-#: vncviewer/Viewport.cxx:727
+#: vncviewer/Viewport.cxx:687
#, c-format
msgid "No symbol for key code 0x%02x (in the current state)"
msgstr "Немає символу для клавіші з кодом 0x%02x (у поточному стані)"
-#: vncviewer/Viewport.cxx:753
+#: vncviewer/Viewport.cxx:713
#, c-format
msgid "No symbol for key code %d (in the current state)"
msgstr "Немає символу для клавіші з кодом %d (у поточному стані)"
-#: vncviewer/Viewport.cxx:790
+#: vncviewer/Viewport.cxx:750
msgctxt "ContextMenu|"
msgid "E&xit viewer"
msgstr "Ви&йти із засобу перегляду"
-#: vncviewer/Viewport.cxx:793
+#: vncviewer/Viewport.cxx:753
msgctxt "ContextMenu|"
msgid "&Full screen"
msgstr "&На весь екран"
-#: vncviewer/Viewport.cxx:796
+#: vncviewer/Viewport.cxx:756
msgctxt "ContextMenu|"
msgid "Minimi&ze"
msgstr "М&інімізувати"
-#: vncviewer/Viewport.cxx:798
+#: vncviewer/Viewport.cxx:758
msgctxt "ContextMenu|"
msgid "Resize &window to session"
msgstr "Змінити &розміри вікна відповідно до сеансу"
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:763
msgctxt "ContextMenu|"
msgid "&Ctrl"
msgstr "&Ctrl"
-#: vncviewer/Viewport.cxx:806
+#: vncviewer/Viewport.cxx:766
msgctxt "ContextMenu|"
msgid "&Alt"
msgstr "&Alt"
-#: vncviewer/Viewport.cxx:812
+#: vncviewer/Viewport.cxx:772
#, c-format
msgctxt "ContextMenu|"
msgid "Send %s"
msgstr "Надіслати %s"
-#: vncviewer/Viewport.cxx:818
+#: vncviewer/Viewport.cxx:778
msgctxt "ContextMenu|"
msgid "Send Ctrl-Alt-&Del"
msgstr "На&діслати Ctrl-Alt-Del"
-#: vncviewer/Viewport.cxx:821
+#: vncviewer/Viewport.cxx:781
msgctxt "ContextMenu|"
msgid "&Refresh screen"
msgstr "&Оновити вміст екрана"
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:784
msgctxt "ContextMenu|"
msgid "&Options..."
msgstr "П&араметри…"
-#: vncviewer/Viewport.cxx:826
+#: vncviewer/Viewport.cxx:786
msgctxt "ContextMenu|"
msgid "Connection &info..."
msgstr "Дані щодо з’&єднання…"
-#: vncviewer/Viewport.cxx:828
+#: vncviewer/Viewport.cxx:788
msgctxt "ContextMenu|"
msgid "About &TigerVNC viewer..."
msgstr "Про &засіб перегляду TigerVNC…"
-#: vncviewer/Viewport.cxx:831
+#: vncviewer/Viewport.cxx:791
msgctxt "ContextMenu|"
msgid "Dismiss &menu"
msgstr "Закрити &меню"
-#: vncviewer/Viewport.cxx:915
+#: vncviewer/Viewport.cxx:875
msgid "VNC connection info"
msgstr "Дані щодо з’єднання VNC"
@@ -495,123 +489,123 @@
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:61
+#: vncviewer/X11PixelBuffer.cxx:65
msgid "Display lacks pixmap format for default depth"
msgstr "Для дисплея не вказано формат у пікселях для типової глибини"
#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
#. to translate.
-#: vncviewer/X11PixelBuffer.cxx:72
+#: vncviewer/X11PixelBuffer.cxx:76
msgid "Couldn't find suitable pixmap format"
msgstr "Не вдалося визначити відповідний формат зображення"
-#: vncviewer/X11PixelBuffer.cxx:81
+#: vncviewer/X11PixelBuffer.cxx:85
msgid "Only true colour displays supported"
msgstr "Передбачено підтримку лише дисплеїв з True Color"
-#: vncviewer/X11PixelBuffer.cxx:83
+#: vncviewer/X11PixelBuffer.cxx:87
#, c-format
msgid "Using default colormap and visual, TrueColor, depth %d."
msgstr "Використовуємо типову карту кольорів і відтворення, TrueColor, глибина %d."
-#: vncviewer/X11PixelBuffer.cxx:109
+#: vncviewer/X11PixelBuffer.cxx:113
msgid "Could not create framebuffer image"
msgstr "Не вдалося створити зображення буфера кадрів"
-#: vncviewer/parameters.cxx:279 vncviewer/parameters.cxx:313
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
#, c-format
msgid "The name of the parameter %s was too large to write to the registry"
msgstr "Назва параметра %s є надто довгою для запису до реєстру"
-#: vncviewer/parameters.cxx:285 vncviewer/parameters.cxx:292
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
#, c-format
msgid "The parameter %s was too large to write to the registry"
msgstr "Параметр %s є надто довгим для запису до реєстру"
-#: vncviewer/parameters.cxx:298 vncviewer/parameters.cxx:319
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
#, c-format
msgid "Failed to write parameter %s of type %s to the registry: %ld"
msgstr "Не вдалося записати параметр %s типу %s до реєстру: %ld"
-#: vncviewer/parameters.cxx:334 vncviewer/parameters.cxx:373
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
#, c-format
msgid "The name of the parameter %s was too large to read from the registry"
msgstr "Назва параметра %s є надто довгою для читання з реєстру"
-#: vncviewer/parameters.cxx:343 vncviewer/parameters.cxx:382
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
#, c-format
msgid "Failed to read parameter %s from the registry: %ld"
msgstr "Не вдалося прочитати параметр %s з реєстру: %ld"
-#: vncviewer/parameters.cxx:352
+#: vncviewer/parameters.cxx:359
#, c-format
msgid "The parameter %s was too large to read from the registry"
msgstr "Параметр %s є надто довгим для читання з реєстру"
-#: vncviewer/parameters.cxx:402
+#: vncviewer/parameters.cxx:409
#, c-format
msgid "Failed to create registry key: %ld"
msgstr "Не вдалося створити ключ реєстру: %ld"
-#: vncviewer/parameters.cxx:416 vncviewer/parameters.cxx:465
-#: vncviewer/parameters.cxx:527 vncviewer/parameters.cxx:658
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
#, c-format
msgid "Unknown parameter type for parameter %s"
msgstr "Невідомий тип параметра %s"
-#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
#, c-format
msgid "Failed to close registry key: %ld"
msgstr "Не вдалося закрити ключ реєстру: %ld"
-#: vncviewer/parameters.cxx:439
+#: vncviewer/parameters.cxx:446
#, c-format
msgid "Failed to open registry key: %ld"
msgstr "Не вдалося відкрити ключ реєстру: %ld"
-#: vncviewer/parameters.cxx:496
+#: vncviewer/parameters.cxx:503
msgid "Failed to write configuration file, can't obtain home directory path."
msgstr "Не вдалося записати файл налаштувань, оскільки не вдалося визначити шлях до домашнього каталогу."
-#: vncviewer/parameters.cxx:509
+#: vncviewer/parameters.cxx:516
#, c-format
msgid "Failed to write configuration file, can't open %s: %s"
msgstr "Не вдалося записати файл налаштувань, оскільки не вдалося відкрити %s: %s"
-#: vncviewer/parameters.cxx:552
+#: vncviewer/parameters.cxx:559
msgid "Failed to read configuration file, can't obtain home directory path."
msgstr "Не вдалося прочитати файл налаштувань, оскільки не вдалося визначити шлях до домашнього каталогу."
-#: vncviewer/parameters.cxx:565
+#: vncviewer/parameters.cxx:572
#, c-format
msgid "Failed to read configuration file, can't open %s: %s"
msgstr "Не вдалося прочитати файл налаштувань, оскільки не вдалося відкрити %s: %s"
-#: vncviewer/parameters.cxx:578 vncviewer/parameters.cxx:583
-#: vncviewer/parameters.cxx:608 vncviewer/parameters.cxx:621
-#: vncviewer/parameters.cxx:637
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
#, c-format
msgid "Failed to read line %d in file %s: %s"
msgstr "Не вдалося прочитати рядок %d у файлі %s: %s"
-#: vncviewer/parameters.cxx:584
+#: vncviewer/parameters.cxx:591
msgid "Line too long"
msgstr "Занадто довгий рядок"
-#: vncviewer/parameters.cxx:591
+#: vncviewer/parameters.cxx:598
#, c-format
msgid "Configuration file %s is in an invalid format"
msgstr "Файл налаштувань %s збережено у некоректному форматі"
-#: vncviewer/parameters.cxx:609
+#: vncviewer/parameters.cxx:616
msgid "Invalid format"
msgstr "Некоректне форматування"
-#: vncviewer/parameters.cxx:622 vncviewer/parameters.cxx:638
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
msgid "Invalid format or too large value"
msgstr "Некоректне форматування або надто велике значення"
-#: vncviewer/parameters.cxx:665
+#: vncviewer/parameters.cxx:672
#, c-format
msgid "Unknown parameter %s on line %d in file %s"
msgstr "Невідомий параметр %s у рядку %d файла %s"
@@ -633,89 +627,95 @@
msgid "About TigerVNC Viewer"
msgstr "Про засіб перегляду TigerVNC"
-#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Внутрішня помилка FLTK. Завершуємо роботу."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
#, c-format
msgid "Error starting new TigerVNC Viewer: %s"
msgstr "Помилка під час спроби запуску нового засобу перегляду TigerVNC: %s"
-#: vncviewer/vncviewer.cxx:165
+#: vncviewer/vncviewer.cxx:179
#, c-format
msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
msgstr "Отримано сигнал переривання %d. Зараз засіб перегляду TigerVNC завершить роботу."
-#: vncviewer/vncviewer.cxx:257
+#: vncviewer/vncviewer.cxx:271
msgid "TigerVNC Viewer"
msgstr "Засіб перегляду TigerVNC"
-#: vncviewer/vncviewer.cxx:265
+#: vncviewer/vncviewer.cxx:279
msgid "No"
msgstr "Ні"
-#: vncviewer/vncviewer.cxx:266
+#: vncviewer/vncviewer.cxx:280
msgid "Yes"
msgstr "Так"
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:283
msgid "Close"
msgstr "Закрити"
-#: vncviewer/vncviewer.cxx:274
+#: vncviewer/vncviewer.cxx:288
msgid "About"
msgstr "Про програму"
-#: vncviewer/vncviewer.cxx:277
+#: vncviewer/vncviewer.cxx:291
msgid "Hide"
msgstr "Сховати"
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:294
msgid "Quit"
msgstr "Вийти"
-#: vncviewer/vncviewer.cxx:284
+#: vncviewer/vncviewer.cxx:298
msgid "Services"
msgstr "Служби"
-#: vncviewer/vncviewer.cxx:285
+#: vncviewer/vncviewer.cxx:299
msgid "Hide Others"
msgstr "Сховати решту"
-#: vncviewer/vncviewer.cxx:286
+#: vncviewer/vncviewer.cxx:300
msgid "Show All"
msgstr "Показати всі"
-#: vncviewer/vncviewer.cxx:295
+#: vncviewer/vncviewer.cxx:309
msgctxt "SysMenu|"
msgid "&File"
msgstr "&Файл"
-#: vncviewer/vncviewer.cxx:298
+#: vncviewer/vncviewer.cxx:312
msgctxt "SysMenu|File|"
msgid "&New Connection"
msgstr "&Створити з'єднання"
-#: vncviewer/vncviewer.cxx:310
+#: vncviewer/vncviewer.cxx:324
msgid "Could not create VNC home directory: can't obtain home directory path."
msgstr "Не вдалося створити домашній каталог VNC: не вдалося отримати шлях до домашнього каталогу."
-#: vncviewer/vncviewer.cxx:315
+#: vncviewer/vncviewer.cxx:329
#, c-format
msgid "Could not create VNC home directory: %s."
msgstr "Не вдалося створити домашній каталог VNC: %s."
#. TRANSLATORS: "Parameters" are command line arguments, or settings
#. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
msgid "Parameters -listen and -via are incompatible"
msgstr "Параметри -listen і -via є несумісними"
-#: vncviewer/vncviewer.cxx:536
+#: vncviewer/vncviewer.cxx:550
#, c-format
msgid "Listening on port %d"
msgstr "Очікуємо на дані на порту %d"
-#: vncviewer/vncviewer.cxx:601
-msgid "Internal FLTK error. Exiting."
-msgstr "Внутрішня помилка FLTK. Завершуємо роботу."
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Невідоме кодування %d"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Невідоме кодування"
#~ msgid "Alt"
#~ msgstr "Alt"
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 0000000..2c52155
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,728 @@
+# Vietnamese translations for tigervnc package
+# Bản dịch Tiếng Việt dành cho gói tigervnc
+# This file is distributed under the same license as the tigervnc package.
+# Trần Ngọc Quân <vnwildman@gmail.com>, 2014, 2015, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: tigervnc 1.6.90\n"
+"Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
+"POT-Creation-Date: 2016-07-01 10:15+0000\n"
+"PO-Revision-Date: 2016-07-04 08:44+0700\n"
+"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
+"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: vncviewer/CConn.cxx:110
+#, c-format
+msgid "connected to host %s port %d"
+msgstr "đã kết nối đến máy %s cổng %d"
+
+#: vncviewer/CConn.cxx:169
+#, c-format
+msgid "Desktop name: %.80s"
+msgstr "Tên máy tính: %.80s"
+
+#: vncviewer/CConn.cxx:174
+#, c-format
+msgid "Host: %.80s port: %d"
+msgstr "Máy: %.80s cổng: %d"
+
+#: vncviewer/CConn.cxx:179
+#, c-format
+msgid "Size: %d x %d"
+msgstr "Cỡ: %d x %d"
+
+#: vncviewer/CConn.cxx:187
+#, c-format
+msgid "Pixel format: %s"
+msgstr "Định dạng điểm ảnh: %s"
+
+#: vncviewer/CConn.cxx:194
+#, c-format
+msgid "(server default %s)"
+msgstr "(máy chủ mặc định %s)"
+
+#: vncviewer/CConn.cxx:199
+#, c-format
+msgid "Requested encoding: %s"
+msgstr "Bộ mã đã yêu cầu: %s"
+
+#: vncviewer/CConn.cxx:204
+#, c-format
+msgid "Last used encoding: %s"
+msgstr "Bảng mã dùng lần cuối: %s"
+
+#: vncviewer/CConn.cxx:209
+#, c-format
+msgid "Line speed estimate: %d kbit/s"
+msgstr "Ước tính tốc độ đường dây: %d kbit/s"
+
+#: vncviewer/CConn.cxx:214
+#, c-format
+msgid "Protocol version: %d.%d"
+msgstr "Phiên bản giao thức: %d.%d"
+
+#: vncviewer/CConn.cxx:219
+#, c-format
+msgid "Security method: %s"
+msgstr "Phương thức bảo mật: %s"
+
+#: vncviewer/CConn.cxx:319
+#, c-format
+msgid "SetDesktopSize failed: %d"
+msgstr "SetDesktopSize gặp lỗi: %d"
+
+#: vncviewer/CConn.cxx:411
+msgid "Invalid SetColourMapEntries from server!"
+msgstr "SetColourMapEntries từ máy phục vụ không hợp lệ!"
+
+#: vncviewer/CConn.cxx:485
+msgid "Enabling continuous updates"
+msgstr "Đang bật cập nhật liên tục"
+
+#: vncviewer/CConn.cxx:555
+#, c-format
+msgid "Throughput %d kbit/s - changing to quality %d"
+msgstr "Năng lực %d kbit/s - đổi thành chất lượng %d"
+
+#: vncviewer/CConn.cxx:577
+#, c-format
+msgid "Throughput %d kbit/s - full color is now %s"
+msgstr "Năng lực %d kbit/s - màu đầy đủ giờ là %s"
+
+#: vncviewer/CConn.cxx:579
+msgid "disabled"
+msgstr "tắt"
+
+#: vncviewer/CConn.cxx:579
+msgid "enabled"
+msgstr "bật"
+
+#: vncviewer/CConn.cxx:589
+#, c-format
+msgid "Using %s encoding"
+msgstr "Đang dùng bảng mã %s"
+
+#: vncviewer/CConn.cxx:636
+#, c-format
+msgid "Using pixel format %s"
+msgstr "Đang dùng định dạng điểm ảnh %s"
+
+#: vncviewer/DesktopWindow.cxx:106
+msgid "Invalid geometry specified!"
+msgstr "Hình dạng đã cho không hợp lệ!"
+
+#: vncviewer/DesktopWindow.cxx:303
+msgid "Adjusting window size to avoid accidental full screen request"
+msgstr "Chỉnh cỡ cửa sổ để tránh yêu cầu toàm màn hình ngẫu nhiên"
+
+#: vncviewer/DesktopWindow.cxx:485 vncviewer/DesktopWindow.cxx:491
+#: vncviewer/DesktopWindow.cxx:504
+msgid "Failure grabbing keyboard"
+msgstr "Gặp lỗi khi điều khiển bàn phím"
+
+#: vncviewer/DesktopWindow.cxx:516
+msgid "Failure grabbing mouse"
+msgstr "Gặp lỗi khi điều khiển chuột"
+
+#: vncviewer/DesktopWindow.cxx:746
+msgid "Invalid screen layout computed for resize request!"
+msgstr "Bố cục màn hình đã tính toán không hợp lệ cho yêu cầu đổi cỡ!"
+
+#: vncviewer/FLTKPixelBuffer.cxx:33 vncviewer/OSXPixelBuffer.cxx:48
+#: vncviewer/X11PixelBuffer.cxx:117
+msgid "Not enough memory for framebuffer"
+msgstr "Không đủ bộ nhớ cho bộ đệm khung"
+
+#: vncviewer/OSXPixelBuffer.cxx:52
+msgid "Could not create framebuffer device"
+msgstr "Không thể tạo thiết bị bộ đệm khung"
+
+#: vncviewer/OSXPixelBuffer.cxx:58
+msgid "Could not create framebuffer bitmap"
+msgstr "Không thể tạo ánh xạ bộ đệm khung"
+
+#: vncviewer/OptionsDialog.cxx:57
+msgid "VNC Viewer: Connection Options"
+msgstr "Bộ xem VNC: Các tùy chọn kết nối"
+
+#: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
+#: vncviewer/vncviewer.cxx:282
+msgid "Cancel"
+msgstr "Thôi"
+
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:281
+msgid "OK"
+msgstr "Đồng ý"
+
+#: vncviewer/OptionsDialog.cxx:423
+msgid "Compression"
+msgstr "Nén"
+
+#: vncviewer/OptionsDialog.cxx:439
+msgid "Auto select"
+msgstr "Chọn tự động"
+
+#: vncviewer/OptionsDialog.cxx:451
+msgid "Preferred encoding"
+msgstr "Bảng mã ưa thích"
+
+#: vncviewer/OptionsDialog.cxx:499
+msgid "Color level"
+msgstr "Mức màu"
+
+#: vncviewer/OptionsDialog.cxx:510
+msgid "Full (all available colors)"
+msgstr "Đầy đủ (mọi màu sẵn có)"
+
+#: vncviewer/OptionsDialog.cxx:517
+msgid "Medium (256 colors)"
+msgstr "Trung bình (256 màu)"
+
+#: vncviewer/OptionsDialog.cxx:524
+msgid "Low (64 colors)"
+msgstr "Thấp (64 màu)"
+
+#: vncviewer/OptionsDialog.cxx:531
+msgid "Very low (8 colors)"
+msgstr "Rất thấp (8 màu)"
+
+#: vncviewer/OptionsDialog.cxx:548
+msgid "Custom compression level:"
+msgstr "Mức nén tự chọn:"
+
+#: vncviewer/OptionsDialog.cxx:554
+msgid "level (1=fast, 6=best [4-6 are rarely useful])"
+msgstr "mức độ (1=nhanh, 6=tốt nhất [4-6 là hữu dụng hơn cả])"
+
+#: vncviewer/OptionsDialog.cxx:561
+msgid "Allow JPEG compression:"
+msgstr "Cho phép nén JPEG:"
+
+#: vncviewer/OptionsDialog.cxx:567
+msgid "quality (0=poor, 9=best)"
+msgstr "Chất lượng (0=kém, 9=tốt nhất)"
+
+#: vncviewer/OptionsDialog.cxx:578
+msgid "Security"
+msgstr "Bảo mật"
+
+#: vncviewer/OptionsDialog.cxx:593
+msgid "Encryption"
+msgstr "Mã hóa"
+
+#: vncviewer/OptionsDialog.cxx:604 vncviewer/OptionsDialog.cxx:657
+#: vncviewer/OptionsDialog.cxx:735
+msgid "None"
+msgstr "Không có gì"
+
+#: vncviewer/OptionsDialog.cxx:610
+msgid "TLS with anonymous certificates"
+msgstr "TLS với chứng nhận nặc danh"
+
+#: vncviewer/OptionsDialog.cxx:616
+msgid "TLS with X509 certificates"
+msgstr "TLS với chứng nhận X509"
+
+#: vncviewer/OptionsDialog.cxx:623
+msgid "Path to X509 CA certificate"
+msgstr "Đường dẫn chứng nhận CA X509"
+
+#: vncviewer/OptionsDialog.cxx:630
+msgid "Path to X509 CRL file"
+msgstr "Đường dẫn đến tập tin CRL X509"
+
+#: vncviewer/OptionsDialog.cxx:646
+msgid "Authentication"
+msgstr "Xác thực"
+
+#: vncviewer/OptionsDialog.cxx:663
+msgid "Standard VNC (insecure without encryption)"
+msgstr "VNC tiêu chuẩn (không bảo mật, không mã hóa)"
+
+#: vncviewer/OptionsDialog.cxx:669
+msgid "Username and password (insecure without encryption)"
+msgstr "Tài khoản và mật khẩu (không bảo mật, không mã hóa)"
+
+#: vncviewer/OptionsDialog.cxx:688
+msgid "Input"
+msgstr "Đầu vào"
+
+#: vncviewer/OptionsDialog.cxx:696
+msgid "View only (ignore mouse and keyboard)"
+msgstr "Chỉ xem (không bắt chuột và bàn phím)"
+
+#: vncviewer/OptionsDialog.cxx:702
+msgid "Accept clipboard from server"
+msgstr "Chấp nhận clipboard từ máy chủ"
+
+#: vncviewer/OptionsDialog.cxx:709
+msgid "Also set primary selection"
+msgstr "Cũng đặt chọn chính"
+
+#: vncviewer/OptionsDialog.cxx:716
+msgid "Send clipboard to server"
+msgstr "Gửi clipboard đến máy chủ"
+
+#: vncviewer/OptionsDialog.cxx:723
+msgid "Send primary selection as clipboard"
+msgstr "Gửi chọn chính là clipboard"
+
+#: vncviewer/OptionsDialog.cxx:730
+msgid "Pass system keys directly to server (full screen)"
+msgstr "Gửi các phím hệ thống trực tiếp đến máy phục vụ (toàn màn hình)"
+
+#: vncviewer/OptionsDialog.cxx:733
+msgid "Menu key"
+msgstr "Phím trình đơn"
+
+#: vncviewer/OptionsDialog.cxx:749
+msgid "Screen"
+msgstr "Màn hình"
+
+#: vncviewer/OptionsDialog.cxx:757
+msgid "Resize remote session on connect"
+msgstr "Đổi cỡ phiên máy từ xa khi kết nối"
+
+#: vncviewer/OptionsDialog.cxx:770
+msgid "Resize remote session to the local window"
+msgstr "Đổi cỡ phiên thành cửa sổ nội bộ"
+
+#: vncviewer/OptionsDialog.cxx:776
+msgid "Full-screen mode"
+msgstr "Chế độ toàn màn hình"
+
+#: vncviewer/OptionsDialog.cxx:782
+msgid "Enable full-screen mode over all monitors"
+msgstr "Bật chế độ toàn màn hình qua tất cả các màn hình"
+
+#: vncviewer/OptionsDialog.cxx:791
+msgid "Misc."
+msgstr "Linh tinh"
+
+#: vncviewer/OptionsDialog.cxx:799
+msgid "Shared (don't disconnect other viewers)"
+msgstr "Đã chia sẻ (đừng ngắt kết nối các bộ xem khác)"
+
+#: vncviewer/OptionsDialog.cxx:805
+msgid "Show dot when no cursor"
+msgstr "Hiển thị chấm khi không có con trỏ"
+
+#: vncviewer/ServerDialog.cxx:42
+msgid "VNC Viewer: Connection Details"
+msgstr "Phần mềm xem VNC: Chi tiết kết nối"
+
+#: vncviewer/ServerDialog.cxx:49 vncviewer/ServerDialog.cxx:54
+msgid "VNC server:"
+msgstr "Máy phục vụ VNC:"
+
+#: vncviewer/ServerDialog.cxx:64
+msgid "Options..."
+msgstr "Tùy chọn…"
+
+#: vncviewer/ServerDialog.cxx:69
+msgid "Load..."
+msgstr "Tải…"
+
+#: vncviewer/ServerDialog.cxx:74
+msgid "Save As..."
+msgstr "Lưu thành…"
+
+#: vncviewer/ServerDialog.cxx:86
+msgid "About..."
+msgstr "Giới thiệu…"
+
+#: vncviewer/ServerDialog.cxx:96
+msgid "Connect"
+msgstr "Kết nối"
+
+#: vncviewer/UserDialog.cxx:74
+msgid "Opening password file failed"
+msgstr "Gặp lỗi khi mở tập tin mật khẩu"
+
+#: vncviewer/UserDialog.cxx:86 vncviewer/UserDialog.cxx:96
+msgid "VNC authentication"
+msgstr "Xác thực VNC"
+
+#: vncviewer/UserDialog.cxx:87 vncviewer/UserDialog.cxx:102
+msgid "Password:"
+msgstr "Mật khẩu:"
+
+#: vncviewer/UserDialog.cxx:89
+msgid "Authentication cancelled"
+msgstr "Xác thực bị hủy bỏ"
+
+#: vncviewer/UserDialog.cxx:99
+msgid "Username:"
+msgstr "Tài khoản:"
+
+#: vncviewer/Viewport.cxx:391
+#, c-format
+msgid "Unable to create platform specific framebuffer: %s"
+msgstr "Không thể tạo bộ đệm khung đặc tả nền tảng: %s"
+
+#: vncviewer/Viewport.cxx:392
+msgid "Using platform independent framebuffer"
+msgstr "Đang sử dụng bộ đệm khung độc lập nên tảng"
+
+#: vncviewer/Viewport.cxx:628
+#, c-format
+msgid "No scan code for extended virtual key 0x%02x"
+msgstr "Không có mã quét cho phím ảo mở rộng 0x%02x"
+
+#: vncviewer/Viewport.cxx:630
+#, c-format
+msgid "No scan code for virtual key 0x%02x"
+msgstr "Không có mã quét cho phím ảo 0x%02x"
+
+#: vncviewer/Viewport.cxx:647
+#, c-format
+msgid "No symbol for extended virtual key 0x%02x"
+msgstr "Không có ký hiệu cho phím ảo mở rộng 0x%02x"
+
+#: vncviewer/Viewport.cxx:649
+#, c-format
+msgid "No symbol for virtual key 0x%02x"
+msgstr "Không có ký hiệu cho phím ảo 0x%02x"
+
+#: vncviewer/Viewport.cxx:687
+#, c-format
+msgid "No symbol for key code 0x%02x (in the current state)"
+msgstr "Không có ký hiệu cho mã phím 0x%02x (trong trạng thái hiện tại)"
+
+#: vncviewer/Viewport.cxx:713
+#, c-format
+msgid "No symbol for key code %d (in the current state)"
+msgstr "Không có ký hiệu cho mã phím %d (trong trạng thái hiện tại)"
+
+#: vncviewer/Viewport.cxx:750
+msgctxt "ContextMenu|"
+msgid "E&xit viewer"
+msgstr "T&hoát khỏi bộ xem"
+
+#: vncviewer/Viewport.cxx:753
+msgctxt "ContextMenu|"
+msgid "&Full screen"
+msgstr "T&oàn màn hình"
+
+#: vncviewer/Viewport.cxx:756
+msgctxt "ContextMenu|"
+msgid "Minimi&ze"
+msgstr "Thu &nhỏ"
+
+#: vncviewer/Viewport.cxx:758
+msgctxt "ContextMenu|"
+msgid "Resize &window to session"
+msgstr "Đổi cỡ Cửa &sổ sang phiên"
+
+#: vncviewer/Viewport.cxx:763
+msgctxt "ContextMenu|"
+msgid "&Ctrl"
+msgstr "&Ctrl"
+
+#: vncviewer/Viewport.cxx:766
+msgctxt "ContextMenu|"
+msgid "&Alt"
+msgstr "&Alt"
+
+#: vncviewer/Viewport.cxx:772
+#, c-format
+msgctxt "ContextMenu|"
+msgid "Send %s"
+msgstr "Gửi %s"
+
+#: vncviewer/Viewport.cxx:778
+msgctxt "ContextMenu|"
+msgid "Send Ctrl-Alt-&Del"
+msgstr "Gửi Ctrl-Alt-&Del"
+
+#: vncviewer/Viewport.cxx:781
+msgctxt "ContextMenu|"
+msgid "&Refresh screen"
+msgstr "&Làm mới màn hình"
+
+#: vncviewer/Viewport.cxx:784
+msgctxt "ContextMenu|"
+msgid "&Options..."
+msgstr "Tù&y chọn…"
+
+#: vncviewer/Viewport.cxx:786
+msgctxt "ContextMenu|"
+msgid "Connection &info..."
+msgstr "Thông t&in về kết nối…"
+
+#: vncviewer/Viewport.cxx:788
+msgctxt "ContextMenu|"
+msgid "About &TigerVNC viewer..."
+msgstr "Giới thiệu Bộ xem &TigerVNC…"
+
+#: vncviewer/Viewport.cxx:791
+msgctxt "ContextMenu|"
+msgid "Dismiss &menu"
+msgstr "Thải bỏ &Trình đơn"
+
+#: vncviewer/Viewport.cxx:875
+msgid "VNC connection info"
+msgstr "Thông tin kết nối VNC"
+
+#: vncviewer/Win32PixelBuffer.cxx:62
+msgid "unable to create DIB section"
+msgstr "không thể tạo phần DIB"
+
+#: vncviewer/Win32PixelBuffer.cxx:79
+msgid "CreateCompatibleDC failed"
+msgstr "CreateCompatibleDC gặp lỗi"
+
+#: vncviewer/Win32PixelBuffer.cxx:82
+msgid "SelectObject failed"
+msgstr "SelectObject gặp lỗi"
+
+#: vncviewer/Win32PixelBuffer.cxx:91
+msgid "BitBlt failed"
+msgstr "BitBlt gặp lỗi"
+
+#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
+#. to translate.
+#: vncviewer/X11PixelBuffer.cxx:65
+msgid "Display lacks pixmap format for default depth"
+msgstr "Hiển thị định dạng pixmap thiếu cho độ sâu mặc định"
+
+#. TRANSLATORS: "pixmap" is an X11 concept and may not be suitable
+#. to translate.
+#: vncviewer/X11PixelBuffer.cxx:76
+msgid "Couldn't find suitable pixmap format"
+msgstr "Không thể tìm thấy định dạng phù hợp pixmap"
+
+#: vncviewer/X11PixelBuffer.cxx:85
+msgid "Only true colour displays supported"
+msgstr "Chỉ hỗ trợ hiển thị màu thật"
+
+#: vncviewer/X11PixelBuffer.cxx:87
+#, c-format
+msgid "Using default colormap and visual, TrueColor, depth %d."
+msgstr "Đang dùng bản đồ màu mặc định và ảo, TrueColor, độ sâu %d."
+
+#: vncviewer/X11PixelBuffer.cxx:113
+msgid "Could not create framebuffer image"
+msgstr "Không thể tạo ảnh bộ đệm khung"
+
+#: vncviewer/parameters.cxx:286 vncviewer/parameters.cxx:320
+#, c-format
+msgid "The name of the parameter %s was too large to write to the registry"
+msgstr "Tên của tham số %s là quá lớn để ghi vào đăng ký"
+
+#: vncviewer/parameters.cxx:292 vncviewer/parameters.cxx:299
+#, c-format
+msgid "The parameter %s was too large to write to the registry"
+msgstr "Tham số %s là quá lớn để ghi vào đăng ký"
+
+#: vncviewer/parameters.cxx:305 vncviewer/parameters.cxx:326
+#, c-format
+msgid "Failed to write parameter %s of type %s to the registry: %ld"
+msgstr "Gặp lỗi khi ghi tham số %s của kiểu %s vào sổ đăng ký: %ld"
+
+#: vncviewer/parameters.cxx:341 vncviewer/parameters.cxx:380
+#, c-format
+msgid "The name of the parameter %s was too large to read from the registry"
+msgstr "Tên của tham số %s là quá lớn để đọc từ sổ đăng ký"
+
+#: vncviewer/parameters.cxx:350 vncviewer/parameters.cxx:389
+#, c-format
+msgid "Failed to read parameter %s from the registry: %ld"
+msgstr "Gặp lỗi khi đọc tham số %s từ sổ đăng ký: %ld"
+
+#: vncviewer/parameters.cxx:359
+#, c-format
+msgid "The parameter %s was too large to read from the registry"
+msgstr "Tham số %s là quá lớn để đọc từ sổ đăng ký"
+
+#: vncviewer/parameters.cxx:409
+#, c-format
+msgid "Failed to create registry key: %ld"
+msgstr "Gặp lỗi khi tạo khóa đăng ký: %ld"
+
+#: vncviewer/parameters.cxx:423 vncviewer/parameters.cxx:472
+#: vncviewer/parameters.cxx:534 vncviewer/parameters.cxx:665
+#, c-format
+msgid "Unknown parameter type for parameter %s"
+msgstr "Không hiểu kiểu tham số cho đối số %s"
+
+#: vncviewer/parameters.cxx:430 vncviewer/parameters.cxx:479
+#, c-format
+msgid "Failed to close registry key: %ld"
+msgstr "Gặp lỗi khi đóng khóa đăng ký: %ld"
+
+#: vncviewer/parameters.cxx:446
+#, c-format
+msgid "Failed to open registry key: %ld"
+msgstr "Gặp lỗi khi mở khóa đăng ký: %ld"
+
+#: vncviewer/parameters.cxx:503
+msgid "Failed to write configuration file, can't obtain home directory path."
+msgstr "Gặp lỗi khi ghi tập tin cấu hình, không thể lấy đường dẫn thư mục riêng."
+
+#: vncviewer/parameters.cxx:516
+#, c-format
+msgid "Failed to write configuration file, can't open %s: %s"
+msgstr "Gặp lỗi khi ghi tập tin cấu hình, không thể mở %s: %s"
+
+#: vncviewer/parameters.cxx:559
+msgid "Failed to read configuration file, can't obtain home directory path."
+msgstr "Gặp lỗi khi đọc tập tin cấu hình, không thể lấy đường dẫn thư mục riêng."
+
+#: vncviewer/parameters.cxx:572
+#, c-format
+msgid "Failed to read configuration file, can't open %s: %s"
+msgstr "Gặp lỗi khi đọc tập tin cấu hình, không thể mở %s: %s"
+
+#: vncviewer/parameters.cxx:585 vncviewer/parameters.cxx:590
+#: vncviewer/parameters.cxx:615 vncviewer/parameters.cxx:628
+#: vncviewer/parameters.cxx:644
+#, c-format
+msgid "Failed to read line %d in file %s: %s"
+msgstr "Gặp lỗi khi đọc dòng %d trong tập tin %s: %s"
+
+#: vncviewer/parameters.cxx:591
+msgid "Line too long"
+msgstr "Dòng quá dài"
+
+#: vncviewer/parameters.cxx:598
+#, c-format
+msgid "Configuration file %s is in an invalid format"
+msgstr "Tập tin cấu hình %s ở định dạng không hợp lệ"
+
+#: vncviewer/parameters.cxx:616
+msgid "Invalid format"
+msgstr "Định dạng không hợp lệ"
+
+#: vncviewer/parameters.cxx:629 vncviewer/parameters.cxx:645
+msgid "Invalid format or too large value"
+msgstr "Định dạng không hợp lệ hay giá trị quá lớn"
+
+#: vncviewer/parameters.cxx:672
+#, c-format
+msgid "Unknown parameter %s on line %d in file %s"
+msgstr "Không hiểu tham số %s trên dòng %d ở tập tin %s"
+
+#: vncviewer/vncviewer.cxx:100
+#, c-format
+msgid ""
+"TigerVNC Viewer %d-bit v%s\n"
+"Built on: %s\n"
+"Copyright (C) 1999-%d TigerVNC Team and many others (see README.txt)\n"
+"See http://www.tigervnc.org for information on TigerVNC."
+msgstr ""
+"TigerVNC Viewer %d-bít v%s\n"
+"Biên dịch vào: %s\n"
+"Copyright (C) 1999-%d Nhóm TigerVNC và nhiều người khác (xem README.txt)\n"
+"Truy cập http://www.tigervnc.org để biết thêm thông tin về TigerVNC."
+
+#: vncviewer/vncviewer.cxx:127
+msgid "About TigerVNC Viewer"
+msgstr "Giới thiệu về bộ xem TigerVNC"
+
+#: vncviewer/vncviewer.cxx:140
+msgid "Internal FLTK error. Exiting."
+msgstr "Lỗi bên trong FLTK. Nên thoát."
+
+#: vncviewer/vncviewer.cxx:158 vncviewer/vncviewer.cxx:170
+#, c-format
+msgid "Error starting new TigerVNC Viewer: %s"
+msgstr "Gặp lỗi khi khởi chạy bộ xem TigerVNC mới: %s"
+
+#: vncviewer/vncviewer.cxx:179
+#, c-format
+msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
+msgstr "Đã nhận được tín hiệu kết thúc %d. Bộ xem TigerVNC bây giờ sẽ thoát."
+
+#: vncviewer/vncviewer.cxx:271
+msgid "TigerVNC Viewer"
+msgstr "Bộ xem TigerVNC"
+
+#: vncviewer/vncviewer.cxx:279
+msgid "No"
+msgstr "Không"
+
+#: vncviewer/vncviewer.cxx:280
+msgid "Yes"
+msgstr "Có"
+
+#: vncviewer/vncviewer.cxx:283
+msgid "Close"
+msgstr "Đóng"
+
+#: vncviewer/vncviewer.cxx:288
+msgid "About"
+msgstr "Giới thiệu"
+
+#: vncviewer/vncviewer.cxx:291
+msgid "Hide"
+msgstr "Ẩn"
+
+#: vncviewer/vncviewer.cxx:294
+msgid "Quit"
+msgstr "Thoát"
+
+#: vncviewer/vncviewer.cxx:298
+msgid "Services"
+msgstr "Dịch vụ"
+
+#: vncviewer/vncviewer.cxx:299
+msgid "Hide Others"
+msgstr "Các thứ khác ẩn"
+
+#: vncviewer/vncviewer.cxx:300
+msgid "Show All"
+msgstr "Hiện tất cả"
+
+#: vncviewer/vncviewer.cxx:309
+msgctxt "SysMenu|"
+msgid "&File"
+msgstr "&Chính"
+
+#: vncviewer/vncviewer.cxx:312
+msgctxt "SysMenu|File|"
+msgid "&New Connection"
+msgstr "Kết nối &mới"
+
+#: vncviewer/vncviewer.cxx:324
+msgid "Could not create VNC home directory: can't obtain home directory path."
+msgstr "Không thể tạo thư mục cá nhân cho VNC: không thể lấy đường dẫn thư mục cá nhân."
+
+#: vncviewer/vncviewer.cxx:329
+#, c-format
+msgid "Could not create VNC home directory: %s."
+msgstr "Không thể tạo thư mục cá nhân cho VNC: %s."
+
+#. TRANSLATORS: "Parameters" are command line arguments, or settings
+#. from a file or the Windows registry.
+#: vncviewer/vncviewer.cxx:534 vncviewer/vncviewer.cxx:535
+msgid "Parameters -listen and -via are incompatible"
+msgstr "Các tham số -listen và -via xung khắc nhau"
+
+#: vncviewer/vncviewer.cxx:550
+#, c-format
+msgid "Listening on port %d"
+msgstr "Đang nghe trên cổng %d"
+
+#~ msgid "Unknown encoding %d"
+#~ msgstr "Bảng mã chưa biết %d"
+
+#~ msgid "Unknown encoding"
+#~ msgstr "Bảng mã chưa biết"
+
+#~ msgid "Alt"
+#~ msgstr "Alt"
+
+#~ msgid "CleanupSignalHandler called"
+#~ msgstr "CleanupSignalHandler được gọi"
+
+#, fuzzy
+#~ msgid "Error(%d) reading %s from Registry."
+#~ msgstr "Gặp lỗi khi đọc từ máy phục vụ"
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index e99c825..bfd69dc 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -13,3 +13,6 @@
add_executable(encperf encperf.cxx)
target_link_libraries(encperf test_util rfb)
+
+add_executable(hostport hostport.cxx)
+target_link_libraries(hostport rfb)
diff --git a/tests/hostport.cxx b/tests/hostport.cxx
new file mode 100644
index 0000000..00026e6
--- /dev/null
+++ b/tests/hostport.cxx
@@ -0,0 +1,80 @@
+/* Copyright 2016 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#include <stdio.h>
+
+#include <rfb/Hostname.h>
+
+static void doTest(const char* hostAndPort,
+ const char* expectedHost, int expectedPort)
+{
+ char* host;
+ int port;
+
+ printf("\"%s\": ", hostAndPort);
+
+ rfb::getHostAndPort(hostAndPort, &host, &port);
+
+ if (strcmp(host, expectedHost) != 0)
+ printf("FAILED (\"%s\" != \"%s\")", host, expectedHost);
+ else if (port != expectedPort)
+ printf("FAILED (%d != %d)", port, expectedPort);
+ else
+ printf("OK");
+ printf("\n");
+ fflush(stdout);
+
+ rfb::strFree(host);
+}
+
+int main(int argc, char** argv)
+{
+ doTest(":5", "localhost", 5905);
+
+ doTest("1.2.3.4", "1.2.3.4", 5900);
+
+ doTest("1.2.3.4:5", "1.2.3.4", 5905);
+ doTest("1.2.3.4:99", "1.2.3.4", 5999);
+ doTest("1.2.3.4:100", "1.2.3.4", 100);
+ doTest("1.2.3.4:5901", "1.2.3.4", 5901);
+
+ doTest("1.2.3.4::5", "1.2.3.4", 5);
+ doTest("1.2.3.4::99", "1.2.3.4", 99);
+ doTest("1.2.3.4::5901", "1.2.3.4", 5901);
+
+ doTest("[1.2.3.4]", "1.2.3.4", 5900);
+ doTest("[1.2.3.4]:5", "1.2.3.4", 5905);
+ doTest("[1.2.3.4]:100", "1.2.3.4", 100);
+ doTest("[1.2.3.4]::5", "1.2.3.4", 5);
+ doTest("[1.2.3.4]::100", "1.2.3.4", 100);
+
+ // Ambigiuous. For now we'll keep the old behaviour...
+ doTest("::1", "localhost", 1);
+
+ doTest("2001:1234::20:1", "2001:1234::20:1", 5900);
+
+ doTest("[::1]", "::1", 5900);
+ doTest("[2001:1234::20:1]", "2001:1234::20:1", 5900);
+
+ doTest("[2001:1234::20:1]:5", "2001:1234::20:1", 5905);
+ doTest("[2001:1234::20:1]:99", "2001:1234::20:1", 5999);
+ doTest("[2001:1234::20:1]:100", "2001:1234::20:1", 100);
+ doTest("[2001:1234::20:1]:5901", "2001:1234::20:1", 5901);
+
+ return 0;
+}
diff --git a/unix/vncconfig/vncExt.c b/unix/vncconfig/vncExt.c
index e9b948d..6256d3b 100644
--- a/unix/vncconfig/vncExt.c
+++ b/unix/vncconfig/vncExt.c
@@ -24,10 +24,6 @@
#define _VNCEXT_PROTO_
#include "vncExt.h"
-static Bool XVncExtClientCutTextNotifyWireToEvent(Display* dpy, XEvent* e,
- xEvent* w);
-static Bool XVncExtSelectionChangeNotifyWireToEvent(Display* dpy, XEvent* e,
- xEvent* w);
static Bool XVncExtQueryConnectNotifyWireToEvent(Display* dpy, XEvent* e,
xEvent* w);
@@ -40,10 +36,6 @@
extensionInited = True;
codes = XInitExtension(dpy, VNCEXTNAME);
if (!codes) return False;
- XESetWireToEvent(dpy, codes->first_event + VncExtClientCutTextNotify,
- XVncExtClientCutTextNotifyWireToEvent);
- XESetWireToEvent(dpy, codes->first_event + VncExtSelectionChangeNotify,
- XVncExtSelectionChangeNotifyWireToEvent);
XESetWireToEvent(dpy, codes->first_event + VncExtQueryConnectNotify,
XVncExtQueryConnectNotifyWireToEvent);
}
@@ -214,53 +206,6 @@
}
}
-Bool XVncExtSetServerCutText(Display* dpy, const char* str, int len)
-{
- xVncExtSetServerCutTextReq* req;
-
- if (!checkExtension(dpy)) return False;
-
- LockDisplay(dpy);
- GetReq(VncExtSetServerCutText, req);
- req->reqType = codes->major_opcode;
- req->vncExtReqType = X_VncExtSetServerCutText;
- req->length += (len + 3) >> 2;
- req->textLen = len;
- Data(dpy, str, len);
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool XVncExtGetClientCutText(Display* dpy, char** str, int* len)
-{
- xVncExtGetClientCutTextReq* req;
- xVncExtGetClientCutTextReply rep;
-
- if (!checkExtension(dpy)) return False;
-
- LockDisplay(dpy);
- GetReq(VncExtGetClientCutText, req);
- req->reqType = codes->major_opcode;
- req->vncExtReqType = X_VncExtGetClientCutText;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- *len = rep.textLen;
- *str = (char*) Xmalloc (*len+1);
- if (!*str) {
- _XEatData(dpy, (*len+1)&~1);
- return False;
- }
- _XReadPad(dpy, *str, *len);
- (*str)[*len] = 0;
- return True;
-}
-
Bool XVncExtSelectInput(Display* dpy, Window w, int mask)
{
xVncExtSelectInputReq* req;
@@ -359,35 +304,6 @@
}
-static Bool XVncExtClientCutTextNotifyWireToEvent(Display* dpy, XEvent* e,
- xEvent* w)
-{
- XVncExtClientCutTextEvent* ev = (XVncExtClientCutTextEvent*)e;
- xVncExtClientCutTextNotifyEvent* wire = (xVncExtClientCutTextNotifyEvent*)w;
- ev->type = wire->type & 0x7f;
- ev->serial = _XSetLastRequestRead(dpy,(xGenericReply*)wire);
- ev->send_event = (wire->type & 0x80) != 0;
- ev->display = dpy;
- ev->window = wire->window;
- ev->time = wire->time;
- return True;
-}
-
-static Bool XVncExtSelectionChangeNotifyWireToEvent(Display* dpy, XEvent* e,
- xEvent* w)
-{
- XVncExtSelectionChangeEvent* ev = (XVncExtSelectionChangeEvent*)e;
- xVncExtSelectionChangeNotifyEvent* wire
- = (xVncExtSelectionChangeNotifyEvent*)w;
- ev->type = wire->type & 0x7f;
- ev->serial = _XSetLastRequestRead(dpy,(xGenericReply*)wire);
- ev->send_event = (wire->type & 0x80) != 0;
- ev->display = dpy;
- ev->window = wire->window;
- ev->selection = wire->selection;
- return True;
-}
-
static Bool XVncExtQueryConnectNotifyWireToEvent(Display* dpy, XEvent* e,
xEvent* w)
{
diff --git a/unix/vncconfig/vncExt.h b/unix/vncconfig/vncExt.h
index e41e2e5..2b24469 100644
--- a/unix/vncconfig/vncExt.h
+++ b/unix/vncconfig/vncExt.h
@@ -26,18 +26,12 @@
#define X_VncExtGetParam 1
#define X_VncExtGetParamDesc 2
#define X_VncExtListParams 3
-#define X_VncExtSetServerCutText 4
-#define X_VncExtGetClientCutText 5
#define X_VncExtSelectInput 6
#define X_VncExtConnect 7
#define X_VncExtGetQueryConnect 8
#define X_VncExtApproveConnect 9
-#define VncExtClientCutTextNotify 0
-#define VncExtSelectionChangeNotify 1
#define VncExtQueryConnectNotify 2
-#define VncExtClientCutTextMask (1 << VncExtClientCutTextNotify)
-#define VncExtSelectionChangeMask (1 << VncExtSelectionChangeNotify)
#define VncExtQueryConnectMask (1 << VncExtQueryConnectNotify)
#define VncExtNumberEvents 3
@@ -51,8 +45,6 @@
char* XVncExtGetParamDesc(Display* dpy, const char* param);
char** XVncExtListParams(Display* dpy, int* nParams);
void XVncExtFreeParamList(char** list);
-Bool XVncExtSetServerCutText(Display* dpy, const char* str, int len);
-Bool XVncExtGetClientCutText(Display* dpy, char** str, int* len);
Bool XVncExtSelectInput(Display* dpy, Window w, int mask);
Bool XVncExtConnect(Display* dpy, const char* hostAndPort);
Bool XVncExtGetQueryConnect(Display* dpy, char** addr,
@@ -66,24 +58,6 @@
Bool send_event;
Display *display;
Window window;
- Time time;
-} XVncExtClientCutTextEvent;
-
-typedef struct {
- int type;
- unsigned long serial;
- Bool send_event;
- Display *display;
- Window window;
- Atom selection;
-} XVncExtSelectionChangeEvent;
-
-typedef struct {
- int type;
- unsigned long serial;
- Bool send_event;
- Display *display;
- Window window;
} XVncExtQueryConnectEvent;
#endif
@@ -194,37 +168,6 @@
typedef struct {
CARD8 reqType; /* always VncExtReqCode */
- CARD8 vncExtReqType; /* always VncExtSetServerCutText */
- CARD16 length B16;
- CARD32 textLen B32;
-} xVncExtSetServerCutTextReq;
-#define sz_xVncExtSetServerCutTextReq 8
-
-
-typedef struct {
- CARD8 reqType; /* always VncExtReqCode */
- CARD8 vncExtReqType; /* always VncExtGetClientCutText */
- CARD16 length B16;
-} xVncExtGetClientCutTextReq;
-#define sz_xVncExtGetClientCutTextReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 textLen B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xVncExtGetClientCutTextReply;
-#define sz_xVncExtGetClientCutTextReply 32
-
-
-typedef struct {
- CARD8 reqType; /* always VncExtReqCode */
CARD8 vncExtReqType; /* always VncExtSelectInput */
CARD16 length B16;
CARD32 window B32;
@@ -293,34 +236,6 @@
typedef struct {
- BYTE type; /* always eventBase + VncExtClientCutTextNotify */
- BYTE pad0;
- CARD16 sequenceNumber B16;
- CARD32 window B32;
- CARD32 time B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xVncExtClientCutTextNotifyEvent;
-#define sz_xVncExtClientCutTextNotifyEvent 32
-
-typedef struct {
- BYTE type; /* always eventBase + VncExtSelectionChangeNotify */
- BYTE pad0;
- CARD16 sequenceNumber B16;
- CARD32 window B32;
- CARD32 selection B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xVncExtSelectionChangeNotifyEvent;
-#define sz_xVncExtSelectionChangeNotifyEvent 32
-
-typedef struct {
BYTE type; /* always eventBase + VncExtQueryConnectNotify */
BYTE pad0;
CARD16 sequenceNumber B16;
diff --git a/unix/vncconfig/vncconfig.cxx b/unix/vncconfig/vncconfig.cxx
index 2d6adf5..2bb299f 100644
--- a/unix/vncconfig/vncconfig.cxx
+++ b/unix/vncconfig/vncconfig.cxx
@@ -1,4 +1,5 @@
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ * Copyright 2012-2016 Pierre Ossman for Cendio AB
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -38,7 +39,6 @@
#include <rfb/Configuration.h>
#include <rfb/Logger_stdio.h>
#include <rfb/LogWriter.h>
-#include <rfb/Timer.h>
#include "TXWindow.h"
#include "TXCheckbox.h"
#include "TXLabel.h"
@@ -51,22 +51,13 @@
StringParameter displayname("display", "The X display", "");
BoolParameter noWindow("nowin", "Don't display a window", 0);
BoolParameter iconic("iconic", "Start with window iconified", 0);
-BoolParameter setPrimary("SetPrimary", "Set the PRIMARY as well "
- "as the CLIPBOARD selection", true);
-BoolParameter sendPrimary("SendPrimary", "Send the PRIMARY as well as the "
- "CLIPBOARD selection", true);
-IntParameter pollTime("poll",
- "How often to poll for clipboard changes in ms", 0);
-
-inline const char* selectionName(Atom sel) {
- if (sel == xaCLIPBOARD) return "CLIPBOARD";
- if (sel == XA_PRIMARY) return "PRIMARY";
- return "unknown";
-}
#define ACCEPT_CUT_TEXT "AcceptCutText"
#define SEND_CUT_TEXT "SendCutText"
+#define SET_PRIMARY "SetPrimary"
+#define SEND_PRIMARY "SendPrimary"
+
char* programName = 0;
Display* dpy;
int vncExtEventBase, vncExtErrorBase;
@@ -83,90 +74,39 @@
class VncConfigWindow : public TXWindow, public TXEventHandler,
public TXDeleteWindowCallback,
public TXCheckboxCallback,
- public rfb::Timer::Callback,
public QueryResultCallback {
public:
VncConfigWindow(Display* dpy)
- : TXWindow(dpy, 300, 100), cutText(0), cutTextLen(0),
+ : TXWindow(dpy, 300, 100),
acceptClipboard(dpy, "Accept clipboard from viewers", this, false, this),
- setPrimaryCB(dpy, "Also set primary selection",
- this, false, this),
+ setPrimaryCB(dpy, "Also set primary selection", this, false, this),
sendClipboard(dpy, "Send clipboard to viewers", this, false, this),
sendPrimaryCB(dpy, "Send primary selection to viewers", this,false,this),
- pollTimer(this),
queryConnectDialog(0)
{
- selection[0] = selection[1] = 0;
- selectionLen[0] = selectionLen[1] = 0;
int y = yPad;
acceptClipboard.move(xPad, y);
acceptClipboard.checked(getBoolParam(dpy, ACCEPT_CUT_TEXT));
y += acceptClipboard.height();
setPrimaryCB.move(xPad + 10, y);
- setPrimaryCB.checked(setPrimary);
+ setPrimaryCB.checked(getBoolParam(dpy, SET_PRIMARY));
setPrimaryCB.disabled(!acceptClipboard.checked());
y += setPrimaryCB.height();
sendClipboard.move(xPad, y);
sendClipboard.checked(getBoolParam(dpy, SEND_CUT_TEXT));
y += sendClipboard.height();
- sendPrimaryCB.move(xPad, y);
- sendPrimaryCB.checked(sendPrimary);
+ sendPrimaryCB.move(xPad + 10, y);
+ sendPrimaryCB.checked(getBoolParam(dpy, SEND_PRIMARY));
sendPrimaryCB.disabled(!sendClipboard.checked());
y += sendPrimaryCB.height();
setEventHandler(this);
toplevel("VNC config", this, 0, 0, 0, iconic);
- XVncExtSelectInput(dpy, win(),
- VncExtClientCutTextMask|
- VncExtSelectionChangeMask|
- VncExtQueryConnectMask);
- XConvertSelection(dpy, XA_PRIMARY, XA_STRING,
- XA_PRIMARY, win(), CurrentTime);
- XConvertSelection(dpy, xaCLIPBOARD, XA_STRING,
- xaCLIPBOARD, win(), CurrentTime);
- if (pollTime != 0)
- pollTimer.start(pollTime);
+ XVncExtSelectInput(dpy, win(), VncExtQueryConnectMask);
}
- // handleEvent(). If we get a ClientCutTextNotify event from Xvnc, set the
- // primary and clipboard selections to the clientCutText. If we get a
- // SelectionChangeNotify event from Xvnc, set the serverCutText to the value
- // of the new selection.
+ // handleEvent()
virtual void handleEvent(TXWindow* w, XEvent* ev) {
- if (acceptClipboard.checked()) {
- if (ev->type == vncExtEventBase + VncExtClientCutTextNotify) {
- XVncExtClientCutTextEvent* cutEv = (XVncExtClientCutTextEvent*)ev;
- if (cutText)
- XFree(cutText);
- cutText = 0;
- if (XVncExtGetClientCutText(dpy, &cutText, &cutTextLen)) {
- vlog.debug("Got client cut text: '%.*s%s'",
- cutTextLen<9?cutTextLen:8, cutText,
- cutTextLen<9?"":"...");
- XStoreBytes(dpy, cutText, cutTextLen);
- if (setPrimaryCB.checked()) {
- ownSelection(XA_PRIMARY, cutEv->time);
- }
- ownSelection(xaCLIPBOARD, cutEv->time);
- delete [] selection[0];
- delete [] selection[1];
- selection[0] = selection[1] = 0;
- selectionLen[0] = selectionLen[1] = 0;
- }
- }
- }
- if (sendClipboard.checked()) {
- if (ev->type == vncExtEventBase + VncExtSelectionChangeNotify) {
- vlog.debug("selection change event");
- XVncExtSelectionChangeEvent* selEv = (XVncExtSelectionChangeEvent*)ev;
- if (selEv->selection == xaCLIPBOARD ||
- (selEv->selection == XA_PRIMARY && sendPrimaryCB.checked())) {
- if (!selectionOwner(selEv->selection))
- XConvertSelection(dpy, selEv->selection, XA_STRING,
- selEv->selection, win(), CurrentTime);
- }
- }
- }
if (ev->type == vncExtEventBase + VncExtQueryConnectNotify) {
vlog.debug("query connection event");
if (queryConnectDialog)
@@ -188,55 +128,6 @@
}
}
}
-
-
- // selectionRequest() is called when we are the selection owner and another X
- // client has requested the selection. We simply put the server's cut text
- // into the requested property. TXWindow will handle the rest.
- bool selectionRequest(Window requestor, Atom selection, Atom property)
- {
- if (cutText)
- XChangeProperty(dpy, requestor, property, XA_STRING, 8,
- PropModeReplace, (unsigned char*)cutText,
- cutTextLen);
- return cutText;
- }
-
- // selectionNotify() is called when we have requested the selection from the
- // selection owner.
- void selectionNotify(XSelectionEvent* ev, Atom type, int format,
- int nitems, void* data)
- {
- if (ev->requestor != win() || ev->target != XA_STRING)
- return;
-
- if (data && format == 8) {
- int i = (ev->selection == XA_PRIMARY ? 0 : 1);
- if (selectionLen[i] == nitems && memcmp(selection[i], data, nitems) == 0)
- return;
- delete [] selection[i];
- selection[i] = new char[nitems];
- memcpy(selection[i], data, nitems);
- selectionLen[i] = nitems;
- if (cutTextLen == nitems && memcmp(cutText, data, nitems) == 0) {
- vlog.debug("ignoring duplicate cut text");
- return;
- }
- if (cutText)
- XFree(cutText);
- cutText = (char*)malloc(nitems); // assuming XFree() same as free()
- if (!cutText) {
- vlog.error("unable to allocate selection buffer");
- return;
- }
- memcpy(cutText, data, nitems);
- cutTextLen = nitems;
- vlog.debug("sending %s selection as server cut text: '%.*s%s'",
- selectionName(ev->selection),cutTextLen<9?cutTextLen:8,
- cutText, cutTextLen<9?"":"...");
- XVncExtSetServerCutText(dpy, cutText, cutTextLen);
- }
- }
// TXDeleteWindowCallback method
virtual void deleteWindow(TXWindow* w) {
@@ -253,20 +144,15 @@
XVncExtSetParam(dpy, (sendClipboard.checked()
? SEND_CUT_TEXT "=1" : SEND_CUT_TEXT "=0"));
sendPrimaryCB.disabled(!sendClipboard.checked());
+ } else if (checkbox == &setPrimaryCB) {
+ XVncExtSetParam(dpy, (setPrimaryCB.checked()
+ ? SET_PRIMARY "=1" : SET_PRIMARY "=0"));
+ } else if (checkbox == &sendPrimaryCB) {
+ XVncExtSetParam(dpy, (sendPrimaryCB.checked()
+ ? SEND_PRIMARY "=1" : SEND_PRIMARY "=0"));
}
}
- // rfb::Timer::Callback interface
- virtual bool handleTimeout(rfb::Timer* timer) {
- if (sendPrimaryCB.checked() && !selectionOwner(XA_PRIMARY))
- XConvertSelection(dpy, XA_PRIMARY, XA_STRING,
- XA_PRIMARY, win(), CurrentTime);
- if (!selectionOwner(xaCLIPBOARD))
- XConvertSelection(dpy, xaCLIPBOARD, XA_STRING,
- xaCLIPBOARD, win(), CurrentTime);
- return true;
- }
-
// QueryResultCallback interface
virtual void queryApproved() {
XVncExtApproveConnect(dpy, queryConnectId, 1);
@@ -276,12 +162,8 @@
}
private:
- char* cutText;
- int cutTextLen;
- char* selection[2];
- int selectionLen[2];
- TXCheckbox acceptClipboard, setPrimaryCB, sendClipboard, sendPrimaryCB;
- rfb::Timer pollTimer;
+ TXCheckbox acceptClipboard, setPrimaryCB;
+ TXCheckbox sendClipboard, sendPrimaryCB;
QueryConnectDialog* queryConnectDialog;
void* queryConnectId;
diff --git a/unix/vncconfig/vncconfig.man b/unix/vncconfig/vncconfig.man
index 6695be3..06f9ca9 100644
--- a/unix/vncconfig/vncconfig.man
+++ b/unix/vncconfig/vncconfig.man
@@ -37,14 +37,11 @@
servers prior to version 4.
When run with no options, it runs as a kind of "helper" application for Xvnc.
-Its main purpose when run in this mode is to support clipboard transfer to and
-from the VNC viewer(s). Note that without a running instance of
-\fBvncconfig\fP there will be no clipboard support. It puts up a window with
-some checkboxes which can be used to disable clipboard transfers if required
-(in the future there may be more functions available from this window). The
-\fB-nowin\fP flag can be used if you always want clipboard support but don't
-wish to clutter the desktop with this window - alternatively the \fB-iconic\fP
-option can be used to make it iconified by default.
+Its main purpose when run in this mode is to query the user how new
+connections should be handled (provided this feature is enabled). The
+\fB-nowin\fP flag can be used if you always want the query support but don't
+wish to clutter the desktop with the settings window - alternatively the
+\fB-iconic\fP option can be used to make it iconified by default.
When run in any other mode, \fBvncconfig\fP is a one-shot program used to
configure or control Xvnc as appropriate. It can be used to tell Xvnc to
diff --git a/unix/vncserver b/unix/vncserver
index f12df57..6c29a75 100755
--- a/unix/vncserver
+++ b/unix/vncserver
@@ -373,9 +373,9 @@
# Create the user's config file if necessary.
if (!(-e "$vncUserDir/config")) {
warn "Creating default config $vncUserDir/config\n";
- open(XSTARTUP, ">$vncUserDir/config");
- print XSTARTUP $defaultConfig;
- close(XSTARTUP);
+ open(VNCUSERCONFIG, ">$vncUserDir/config");
+ print VNCUSERCONFIG $defaultConfig;
+ close(VNCUSERCONFIG);
chmod 0644, "$vncUserDir/config";
}
@@ -397,8 +397,6 @@
}
$ENV{VNCDESKTOP}= $desktopName;
-system($exedir."vncconfig -nowin >> " . "edString($desktopLog) . " 2>&1 &");
-
if ($opt{'-fg'}) {
if (! $skipxstartup) {
system("$xstartupFile >> " . "edString($desktopLog) . " 2>&1");
diff --git a/unix/xserver/hw/vnc/Input.c b/unix/xserver/hw/vnc/Input.c
index 55befa7..64305cb 100644
--- a/unix/xserver/hw/vnc/Input.c
+++ b/unix/xserver/hw/vnc/Input.c
@@ -33,7 +33,9 @@
#include "inpututils.h"
#endif
#include "mi.h"
+#include "mipointer.h"
#include "exevents.h"
+#include "scrnintstr.h"
#include "xkbsrv.h"
#include "xkbstr.h"
#include "xserver-properties.h"
@@ -186,8 +188,16 @@
void vncGetPointerPos(int *x, int *y)
{
- if (vncPointerDev != NULL)
- GetSpritePosition(vncPointerDev, &cursorPosX, &cursorPosY);
+ if (vncPointerDev != NULL) {
+ ScreenPtr ptrScreen;
+
+ miPointerGetPosition(vncPointerDev, &cursorPosX, &cursorPosY);
+
+ /* Pointer coordinates are screen relative */
+ ptrScreen = miPointerGetScreen(vncPointerDev);
+ cursorPosX += ptrScreen->x;
+ cursorPosY += ptrScreen->y;
+ }
*x = cursorPosX;
*y = cursorPosY;
diff --git a/unix/xserver/hw/vnc/Makefile.am b/unix/xserver/hw/vnc/Makefile.am
index d7ab259..95b03d2 100644
--- a/unix/xserver/hw/vnc/Makefile.am
+++ b/unix/xserver/hw/vnc/Makefile.am
@@ -10,11 +10,12 @@
noinst_LTLIBRARIES = libvnccommon.la
HDRS = vncExtInit.h vncHooks.h \
- vncBlockHandler.h XorgGlue.h \
- XserverDesktop.h xorg-version.h \
+ vncBlockHandler.h vncSelection.h \
+ XorgGlue.h XserverDesktop.h xorg-version.h \
Input.h RFBGlue.h
-libvnccommon_la_SOURCES = $(HDRS) vncExt.c vncExtInit.cc vncHooks.c \
+libvnccommon_la_SOURCES = $(HDRS) \
+ vncExt.c vncExtInit.cc vncHooks.c vncSelection.c \
vncBlockHandler.c XorgGlue.c RFBGlue.cc XserverDesktop.cc \
Input.c InputXKB.c
diff --git a/unix/xserver/hw/vnc/RFBGlue.cc b/unix/xserver/hw/vnc/RFBGlue.cc
index d6c3ef6..c915336 100644
--- a/unix/xserver/hw/vnc/RFBGlue.cc
+++ b/unix/xserver/hw/vnc/RFBGlue.cc
@@ -31,6 +31,7 @@
// Loggers used by C code must be created here
static LogWriter inputLog("Input");
+static LogWriter selectionLog("Selection");
void vncInitRFB(void)
{
diff --git a/unix/xserver/hw/vnc/XorgGlue.c b/unix/xserver/hw/vnc/XorgGlue.c
index d7892b1..712ed6a 100644
--- a/unix/xserver/hw/vnc/XorgGlue.c
+++ b/unix/xserver/hw/vnc/XorgGlue.c
@@ -92,6 +92,16 @@
*blueMask = vis->blueMask;
}
+int vncGetScreenX(int scrIdx)
+{
+ return screenInfo.screens[scrIdx]->x;
+}
+
+int vncGetScreenY(int scrIdx)
+{
+ return screenInfo.screens[scrIdx]->y;
+}
+
int vncGetScreenWidth(int scrIdx)
{
return screenInfo.screens[scrIdx]->width;
diff --git a/unix/xserver/hw/vnc/XorgGlue.h b/unix/xserver/hw/vnc/XorgGlue.h
index 92b0d18..5cae860 100644
--- a/unix/xserver/hw/vnc/XorgGlue.h
+++ b/unix/xserver/hw/vnc/XorgGlue.h
@@ -33,6 +33,8 @@
int *trueColour, int *bigEndian,
int *redMask, int *greenMask, int *blueMask);
+int vncGetScreenX(int scrIdx);
+int vncGetScreenY(int scrIdx);
int vncGetScreenWidth(int scrIdx);
int vncGetScreenHeight(int scrIdx);
diff --git a/unix/xserver/hw/vnc/XserverDesktop.cc b/unix/xserver/hw/vnc/XserverDesktop.cc
index f1c9b74..4f82a54 100644
--- a/unix/xserver/hw/vnc/XserverDesktop.cc
+++ b/unix/xserver/hw/vnc/XserverDesktop.cc
@@ -43,6 +43,7 @@
#include "XserverDesktop.h"
#include "vncExtInit.h"
#include "vncHooks.h"
+#include "vncSelection.h"
#include "XorgGlue.h"
#include "Input.h"
@@ -513,6 +514,8 @@
// We are responsible for propagating mouse movement between clients
int cursorX, cursorY;
vncGetPointerPos(&cursorX, &cursorY);
+ cursorX -= vncGetScreenX(screenIndex);
+ cursorY -= vncGetScreenY(screenIndex);
if (oldCursorPos.x != cursorX || oldCursorPos.y != cursorY) {
oldCursorPos.x = cursorX;
oldCursorPos.y = cursorY;
@@ -647,7 +650,8 @@
void XserverDesktop::pointerEvent(const Point& pos, int buttonMask)
{
- vncPointerMove(pos.x, pos.y);
+ vncPointerMove(pos.x + vncGetScreenX(screenIndex),
+ pos.y + vncGetScreenY(screenIndex));
vncPointerButtonAction(buttonMask);
}
diff --git a/unix/xserver/hw/vnc/Xvnc.man b/unix/xserver/hw/vnc/Xvnc.man
index a4d9f8d..04e8f94 100644
--- a/unix/xserver/hw/vnc/Xvnc.man
+++ b/unix/xserver/hw/vnc/Xvnc.man
@@ -126,14 +126,8 @@
is off.
.
.TP
-.B \-SendCutText
-Send clipboard changes to clients (default is on). Note that you must also run
-\fBvncconfig\fP(1) to get the clipboard to work.
-.
-.TP
.B \-AcceptCutText
-Accept clipboard updates from clients (default is on). Note that you must also
-run \fBvncconfig\fP(1) to get the clipboard to work.
+Accept clipboard updates from clients (default is on).
.
.TP
.B \-MaxCutText \fIbytes\fP
@@ -141,6 +135,15 @@
Default is \fB262144\fP.
.
.TP
+.B \-SendCutText
+Send clipboard changes to clients (default is on).
+.
+.TP
+.B \-SendPrimary
+Send the primary selection and cut buffer to the server as well as the
+clipboard selection. Default is on.
+.
+.TP
.B \-AcceptPointerEvents
Accept pointer press and release events from clients (default is on).
.
@@ -314,7 +317,7 @@
When \fBNoClipboard\fP parameter is set, allowing override of \fBSendCutText\fP
and \fBAcceptCutText\fP has no effect.
-Default is \fBdesktop,AcceptPointerEvents,SendCutText,AcceptCutText\fP.
+Default is \fBdesktop,AcceptPointerEvents,SendCutText,AcceptCutText,SendPrimary,SetPrimary\fP.
.SH USAGE WITH INETD
By configuring the \fBinetd\fP(1) service appropriately, Xvnc can be launched
diff --git a/unix/xserver/hw/vnc/vncExt.c b/unix/xserver/hw/vnc/vncExt.c
index b27115f..0ee3210 100644
--- a/unix/xserver/hw/vnc/vncExt.c
+++ b/unix/xserver/hw/vnc/vncExt.c
@@ -27,7 +27,6 @@
#include "dixstruct.h"
#include "extnsionst.h"
#include "scrnintstr.h"
-#include "selection.h"
#define _VNCEXT_SERVER_
#define _VNCEXT_PROTO_
@@ -44,17 +43,11 @@
static void vncClientStateChange(CallbackListPtr*, void *, void *);
-static void vncSelectionCallback(CallbackListPtr *callbacks,
- void * data, void * args);
-
static int vncErrorBase = 0;
static int vncEventBase = 0;
int vncNoClipboard = 0;
-static char* clientCutText = NULL;
-static int clientCutTextLen = 0;
-
static struct VncInputSelect* vncInputSelectHead = NULL;
struct VncInputSelect {
@@ -83,10 +76,6 @@
FatalError("Add ClientStateCallback failed\n");
}
- if (!AddCallback(&SelectionCallback, vncSelectionCallback, 0)) {
- FatalError("Add SelectionCallback failed\n");
- }
-
return 0;
}
@@ -121,47 +110,6 @@
return count;
}
-void vncClientCutText(const char* str, int len)
-{
- xVncExtClientCutTextNotifyEvent ev;
-
- if (clientCutText != NULL)
- free(clientCutText);
- clientCutTextLen = 0;
-
- clientCutText = malloc(len);
- if (clientCutText == NULL) {
- ErrorF("Could not allocate clipboard buffer\n");
- return;
- }
-
- memcpy(clientCutText, str, len);
- clientCutTextLen = len;
-
- ev.type = vncEventBase + VncExtClientCutTextNotify;
- for (struct VncInputSelect* cur = vncInputSelectHead; cur; cur = cur->next) {
- if (cur->mask & VncExtClientCutTextMask) {
- ev.sequenceNumber = cur->client->sequence;
- ev.window = cur->window;
- ev.time = GetTimeInMillis();
- if (cur->client->swapped) {
-#if XORG < 112
- int n;
- swaps(&ev.sequenceNumber, n);
- swapl(&ev.window, n);
- swapl(&ev.time, n);
-#else
- swaps(&ev.sequenceNumber);
- swapl(&ev.window);
- swapl(&ev.time);
-#endif
- }
- WriteToClient(cur->client, sizeof(xVncExtClientCutTextNotifyEvent),
- (char *)&ev);
- }
- }
-}
-
static int ProcVncExtSetParam(ClientPtr client)
{
char *param;
@@ -397,73 +345,6 @@
return ProcVncExtListParams(client);
}
-static int ProcVncExtSetServerCutText(ClientPtr client)
-{
- REQUEST(xVncExtSetServerCutTextReq);
- REQUEST_FIXED_SIZE(xVncExtSetServerCutTextReq, stuff->textLen);
- vncServerCutText((const char*)&stuff[1], stuff->textLen);
- return (client->noClientException);
-}
-
-static int SProcVncExtSetServerCutText(ClientPtr client)
-{
- REQUEST(xVncExtSetServerCutTextReq);
-#if XORG < 112
- register char n;
- swaps(&stuff->length, n);
-#else
- swaps(&stuff->length);
-#endif
- REQUEST_AT_LEAST_SIZE(xVncExtSetServerCutTextReq);
-#if XORG < 112
- swapl(&stuff->textLen, n);
-#else
- swapl(&stuff->textLen);
-#endif
- return ProcVncExtSetServerCutText(client);
-}
-
-static int ProcVncExtGetClientCutText(ClientPtr client)
-{
- xVncExtGetClientCutTextReply rep;
-
- REQUEST_SIZE_MATCH(xVncExtGetClientCutTextReq);
-
- rep.type = X_Reply;
- rep.length = (clientCutTextLen + 3) >> 2;
- rep.sequenceNumber = client->sequence;
- rep.textLen = clientCutTextLen;
- if (client->swapped) {
-#if XORG < 112
- int n;
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- swapl(&rep.textLen, n);
-#else
- swaps(&rep.sequenceNumber);
- swapl(&rep.length);
- swapl(&rep.textLen);
-#endif
- }
- WriteToClient(client, sizeof(xVncExtGetClientCutTextReply), (char *)&rep);
- if (clientCutText)
- WriteToClient(client, clientCutTextLen, clientCutText);
- return (client->noClientException);
-}
-
-static int SProcVncExtGetClientCutText(ClientPtr client)
-{
- REQUEST(xVncExtGetClientCutTextReq);
-#if XORG < 112
- register char n;
- swaps(&stuff->length, n);
-#else
- swaps(&stuff->length);
-#endif
- REQUEST_SIZE_MATCH(xVncExtGetClientCutTextReq);
- return ProcVncExtGetClientCutText(client);
-}
-
static int ProcVncExtSelectInput(ClientPtr client)
{
struct VncInputSelect** nextPtr;
@@ -667,10 +548,6 @@
return ProcVncExtGetParamDesc(client);
case X_VncExtListParams:
return ProcVncExtListParams(client);
- case X_VncExtSetServerCutText:
- return ProcVncExtSetServerCutText(client);
- case X_VncExtGetClientCutText:
- return ProcVncExtGetClientCutText(client);
case X_VncExtSelectInput:
return ProcVncExtSelectInput(client);
case X_VncExtConnect:
@@ -696,10 +573,6 @@
return SProcVncExtGetParamDesc(client);
case X_VncExtListParams:
return SProcVncExtListParams(client);
- case X_VncExtSetServerCutText:
- return SProcVncExtSetServerCutText(client);
- case X_VncExtGetClientCutText:
- return SProcVncExtGetClientCutText(client);
case X_VncExtSelectInput:
return SProcVncExtSelectInput(client);
case X_VncExtConnect:
@@ -732,39 +605,3 @@
}
}
}
-
-static void SendSelectionChangeEvent(Atom selection)
-{
- xVncExtSelectionChangeNotifyEvent ev;
- ev.type = vncEventBase + VncExtSelectionChangeNotify;
- for (struct VncInputSelect* cur = vncInputSelectHead; cur; cur = cur->next) {
- if (cur->mask & VncExtSelectionChangeMask) {
- ev.sequenceNumber = cur->client->sequence;
- ev.window = cur->window;
- ev.selection = selection;
- if (cur->client->swapped) {
-#if XORG < 112
- int n;
- swaps(&ev.sequenceNumber, n);
- swapl(&ev.window, n);
- swapl(&ev.selection, n);
-#else
- swaps(&ev.sequenceNumber);
- swapl(&ev.window);
- swapl(&ev.selection);
-#endif
- }
- WriteToClient(cur->client, sizeof(xVncExtSelectionChangeNotifyEvent),
- (char *)&ev);
- }
- }
-}
-
-static void vncSelectionCallback(CallbackListPtr *callbacks, void * data, void * args)
-{
- SelectionInfoRec *info = (SelectionInfoRec *) args;
- Selection *selection = info->selection;
-
- SendSelectionChangeEvent(selection->selection);
-}
-
diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc
index 1d37493..dea3cb8 100644
--- a/unix/xserver/hw/vnc/vncExtInit.cc
+++ b/unix/xserver/hw/vnc/vncExtInit.cc
@@ -38,6 +38,7 @@
#include "vncExtInit.h"
#include "vncHooks.h"
#include "vncBlockHandler.h"
+#include "vncSelection.h"
#include "XorgGlue.h"
using namespace rfb;
@@ -83,7 +84,12 @@
true);
rfb::StringParameter allowOverride("AllowOverride",
"Comma separated list of parameters that can be modified using VNC extension.",
- "desktop,AcceptPointerEvents,SendCutText,AcceptCutText");
+ "desktop,AcceptPointerEvents,SendCutText,AcceptCutText,SendPrimary,SetPrimary");
+rfb::BoolParameter setPrimary("SetPrimary", "Set the PRIMARY as well "
+ "as the CLIPBOARD selection", true);
+rfb::BoolParameter sendPrimary("SendPrimary",
+ "Send the PRIMARY as well as the CLIPBOARD selection",
+ true);
static PixelFormat vncGetPixelFormat(int scrIdx)
{
@@ -151,6 +157,8 @@
if (ret == -1)
return;
+ vncSelectionInit();
+
vlog.info("VNC extension running!");
try {
@@ -274,6 +282,16 @@
return (bool)avoidShiftNumLock;
}
+int vncGetSetPrimary(void)
+{
+ return (bool)setPrimary;
+}
+
+int vncGetSendPrimary(void)
+{
+ return (bool)sendPrimary;
+}
+
void vncUpdateDesktopName(void)
{
for (int scr = 0; scr < vncGetScreenCount(); scr++) {
@@ -376,10 +394,14 @@
desktop[scrIdx]->add_copied(reg, rfb::Point(dx, dy));
}
-void vncSetCursor(int scrIdx, int width, int height, int hotX, int hotY,
+void vncSetCursor(int width, int height, int hotX, int hotY,
const unsigned char *rgbaData)
{
- desktop[scrIdx]->setCursor(width, height, hotX, hotY, rgbaData);
+ for (int scr = 0; scr < vncGetScreenCount(); scr++) {
+ if (desktop[scr] == NULL)
+ continue;
+ desktop[scr]->setCursor(width, height, hotX, hotY, rgbaData);
+ }
}
void vncPreScreenResize(int scrIdx)
diff --git a/unix/xserver/hw/vnc/vncExtInit.h b/unix/xserver/hw/vnc/vncExtInit.h
index be6487c..9785d11 100644
--- a/unix/xserver/hw/vnc/vncExtInit.h
+++ b/unix/xserver/hw/vnc/vncExtInit.h
@@ -41,8 +41,6 @@
int vncNotifyQueryConnect(void);
-void vncClientCutText(const char* str, int len);
-
// vncExtInit.cc
extern void* vncFbptr[];
extern int vncFbstride[];
@@ -59,6 +57,9 @@
int vncGetAvoidShiftNumLock(void);
+int vncGetSetPrimary(void);
+int vncGetSendPrimary(void);
+
void vncUpdateDesktopName(void);
void vncServerCutText(const char *text, size_t len);
@@ -83,7 +84,7 @@
int nRects, const struct UpdateRect *rects,
int dx, int dy);
-void vncSetCursor(int scrIdx, int width, int height, int hotX, int hotY,
+void vncSetCursor(int width, int height, int hotX, int hotY,
const unsigned char *rgbaData);
void vncPreScreenResize(int scrIdx);
diff --git a/unix/xserver/hw/vnc/vncHooks.c b/unix/xserver/hw/vnc/vncHooks.c
index b21f4c6..22ea9ea 100644
--- a/unix/xserver/hw/vnc/vncHooks.c
+++ b/unix/xserver/hw/vnc/vncHooks.c
@@ -699,7 +699,7 @@
}
#endif
- vncSetCursor(pScreen->myNum, width, height, hotX, hotY, rgbaData);
+ vncSetCursor(width, height, hotX, hotY, rgbaData);
free(rgbaData);
}
diff --git a/unix/xserver/hw/vnc/vncSelection.c b/unix/xserver/hw/vnc/vncSelection.c
new file mode 100644
index 0000000..e50548a
--- /dev/null
+++ b/unix/xserver/hw/vnc/vncSelection.c
@@ -0,0 +1,521 @@
+/* Copyright 2016 Pierre Ossman for Cendio AB
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <X11/Xatom.h>
+
+#include "propertyst.h"
+#include "scrnintstr.h"
+#include "selection.h"
+#include "windowstr.h"
+#include "xace.h"
+
+#include "xorg-version.h"
+
+#include "vncExtInit.h"
+#include "vncSelection.h"
+#include "RFBGlue.h"
+
+#define LOG_NAME "Selection"
+
+#define LOG_ERROR(...) vncLogError(LOG_NAME, __VA_ARGS__)
+#define LOG_STATUS(...) vncLogStatus(LOG_NAME, __VA_ARGS__)
+#define LOG_INFO(...) vncLogInfo(LOG_NAME, __VA_ARGS__)
+#define LOG_DEBUG(...) vncLogDebug(LOG_NAME, __VA_ARGS__)
+
+static Atom xaPRIMARY, xaCLIPBOARD;
+static Atom xaTARGETS, xaTIMESTAMP, xaSTRING, xaTEXT, xaUTF8_STRING;
+
+static WindowPtr pWindow;
+static Window wid;
+
+static char* clientCutText;
+static int clientCutTextLen;
+
+static int vncCreateSelectionWindow(void);
+static int vncOwnSelection(Atom selection);
+static int vncProcConvertSelection(ClientPtr client);
+static int vncProcSendEvent(ClientPtr client);
+static void vncSelectionCallback(CallbackListPtr *callbacks,
+ void * data, void * args);
+
+static int (*origProcConvertSelection)(ClientPtr);
+static int (*origProcSendEvent)(ClientPtr);
+
+void vncSelectionInit(void)
+{
+ xaPRIMARY = MakeAtom("PRIMARY", 7, TRUE);
+ xaCLIPBOARD = MakeAtom("CLIPBOARD", 9, TRUE);
+
+ xaTARGETS = MakeAtom("TARGETS", 7, TRUE);
+ xaTIMESTAMP = MakeAtom("TIMESTAMP", 9, TRUE);
+ xaSTRING = MakeAtom("STRING", 6, TRUE);
+ xaTEXT = MakeAtom("TEXT", 4, TRUE);
+ xaUTF8_STRING = MakeAtom("UTF8_STRING", 11, TRUE);
+
+ /* There are no hooks for when these are internal windows, so
+ * override the relevant handlers. */
+ origProcConvertSelection = ProcVector[X_ConvertSelection];
+ ProcVector[X_ConvertSelection] = vncProcConvertSelection;
+ origProcSendEvent = ProcVector[X_SendEvent];
+ ProcVector[X_SendEvent] = vncProcSendEvent;
+
+ if (!AddCallback(&SelectionCallback, vncSelectionCallback, 0))
+ FatalError("Add VNC SelectionCallback failed\n");
+}
+
+void vncClientCutText(const char* str, int len)
+{
+ int rc;
+
+ if (clientCutText != NULL)
+ free(clientCutText);
+
+ clientCutText = malloc(len);
+ if (clientCutText == NULL) {
+ LOG_ERROR("Could not allocate clipboard buffer");
+ DeleteWindowFromAnySelections(pWindow);
+ return;
+ }
+
+ memcpy(clientCutText, str, len);
+ clientCutTextLen = len;
+
+ if (vncGetSetPrimary()) {
+ rc = vncOwnSelection(xaPRIMARY);
+ if (rc != Success)
+ LOG_ERROR("Could not set PRIMARY selection");
+ }
+
+ vncOwnSelection(xaCLIPBOARD);
+ if (rc != Success)
+ LOG_ERROR("Could not set CLIPBOARD selection");
+}
+
+static int vncCreateSelectionWindow(void)
+{
+ ScreenPtr pScreen;
+ int result;
+
+ if (pWindow != NULL)
+ return Success;
+
+ pScreen = screenInfo.screens[0];
+
+ wid = FakeClientID(0);
+ pWindow = CreateWindow(wid, pScreen->root,
+ 0, 0, 100, 100, 0, InputOnly,
+ 0, NULL, 0, serverClient,
+ CopyFromParent, &result);
+ if (!pWindow)
+ return result;
+
+ if (!AddResource(pWindow->drawable.id, RT_WINDOW, pWindow))
+ return BadAlloc;
+
+ LOG_DEBUG("Created selection window");
+
+ return Success;
+}
+
+static int vncOwnSelection(Atom selection)
+{
+ Selection *pSel;
+ int rc;
+
+ SelectionInfoRec info;
+
+ rc = vncCreateSelectionWindow();
+ if (rc != Success)
+ return rc;
+
+ rc = dixLookupSelection(&pSel, selection, serverClient, DixSetAttrAccess);
+ if (rc == Success) {
+ if (pSel->client && (pSel->client != serverClient)) {
+ xEvent event = {
+ .u.selectionClear.time = currentTime.milliseconds,
+ .u.selectionClear.window = pSel->window,
+ .u.selectionClear.atom = pSel->selection
+ };
+ event.u.u.type = SelectionClear;
+ WriteEventsToClient(pSel->client, 1, &event);
+ }
+ } else if (rc == BadMatch) {
+ pSel = dixAllocateObjectWithPrivates(Selection, PRIVATE_SELECTION);
+ if (!pSel)
+ return BadAlloc;
+
+ pSel->selection = selection;
+
+ rc = XaceHookSelectionAccess(serverClient, &pSel,
+ DixCreateAccess | DixSetAttrAccess);
+ if (rc != Success) {
+ free(pSel);
+ return rc;
+ }
+
+ pSel->next = CurrentSelections;
+ CurrentSelections = pSel;
+ }
+ else
+ return rc;
+
+ pSel->lastTimeChanged = currentTime;
+ pSel->window = wid;
+ pSel->pWin = pWindow;
+ pSel->client = serverClient;
+
+ LOG_DEBUG("Grabbed %s selection", NameForAtom(selection));
+
+ info.selection = pSel;
+ info.client = serverClient;
+ info.kind = SelectionSetOwner;
+ CallCallbacks(&SelectionCallback, &info);
+
+ return Success;
+}
+
+static int vncConvertSelection(ClientPtr client, Atom selection,
+ Atom target, Atom property,
+ Window requestor, TimeStamp time)
+{
+ Selection *pSel;
+ WindowPtr pWin;
+ int rc;
+
+ Atom realProperty;
+
+ xEvent event;
+
+ LOG_DEBUG("Selection request for %s (type %s)",
+ NameForAtom(selection), NameForAtom(target));
+
+ rc = dixLookupSelection(&pSel, selection, client, DixGetAttrAccess);
+ if (rc != Success)
+ return rc;
+
+ if (CompareTimeStamps(time, pSel->lastTimeChanged) != LATER)
+ return BadMatch;
+
+ rc = dixLookupWindow(&pWin, requestor, client, DixSetAttrAccess);
+ if (rc != Success)
+ return rc;
+
+ if (property != None)
+ realProperty = property;
+ else
+ realProperty = target;
+
+ /* FIXME: MULTIPLE target */
+
+ if (target == xaTARGETS) {
+ Atom targets[] = { xaTARGETS, xaTIMESTAMP,
+ xaSTRING, xaTEXT, xaUTF8_STRING };
+
+ rc = ChangeWindowProperty(pWin, realProperty, XA_ATOM, 32,
+ PropModeReplace,
+ sizeof(targets)/sizeof(targets[0]),
+ targets, TRUE);
+ if (rc != Success)
+ return rc;
+ } else if (target == xaTIMESTAMP) {
+ rc = ChangeWindowProperty(pWin, realProperty, XA_INTEGER, 32,
+ PropModeReplace, 1,
+ &pSel->lastTimeChanged.milliseconds,
+ TRUE);
+ if (rc != Success)
+ return rc;
+ } else if ((target == xaSTRING) || (target == xaTEXT)) {
+ rc = ChangeWindowProperty(pWin, realProperty, XA_STRING, 8,
+ PropModeReplace, clientCutTextLen,
+ clientCutText, TRUE);
+ if (rc != Success)
+ return rc;
+ } else if (target == xaUTF8_STRING) {
+ unsigned char* buffer;
+ unsigned char* out;
+ size_t len;
+
+ const unsigned char* in;
+ size_t in_len;
+
+ buffer = malloc(clientCutTextLen*2);
+ if (buffer == NULL)
+ return BadAlloc;
+
+ out = buffer;
+ len = 0;
+ in = clientCutText;
+ in_len = clientCutTextLen;
+ while (in_len > 0) {
+ if (*in & 0x80) {
+ *out++ = 0xc0 | (*in >> 6);
+ *out++ = 0x80 | (*in & 0x3f);
+ len += 2;
+ in++;
+ in_len--;
+ } else {
+ *out++ = *in++;
+ len++;
+ in_len--;
+ }
+ }
+
+ rc = ChangeWindowProperty(pWin, realProperty, xaUTF8_STRING, 8,
+ PropModeReplace, len, buffer, TRUE);
+ free(buffer);
+ if (rc != Success)
+ return rc;
+ } else {
+ return BadMatch;
+ }
+
+ event.u.u.type = SelectionNotify;
+ event.u.selectionNotify.time = time.milliseconds;
+ event.u.selectionNotify.requestor = requestor;
+ event.u.selectionNotify.selection = selection;
+ event.u.selectionNotify.target = target;
+ event.u.selectionNotify.property = property;
+ WriteEventsToClient(client, 1, &event);
+ return Success;
+}
+
+static int vncProcConvertSelection(ClientPtr client)
+{
+ Bool paramsOkay;
+ WindowPtr pWin;
+ Selection *pSel;
+ int rc;
+
+ REQUEST(xConvertSelectionReq);
+ REQUEST_SIZE_MATCH(xConvertSelectionReq);
+
+ rc = dixLookupWindow(&pWin, stuff->requestor, client, DixSetAttrAccess);
+ if (rc != Success)
+ return rc;
+
+ paramsOkay = ValidAtom(stuff->selection) && ValidAtom(stuff->target);
+ paramsOkay &= (stuff->property == None) || ValidAtom(stuff->property);
+ if (!paramsOkay) {
+ client->errorValue = stuff->property;
+ return BadAtom;
+ }
+
+ rc = dixLookupSelection(&pSel, stuff->selection, client, DixReadAccess);
+ if (rc == Success && pSel->client == serverClient &&
+ pSel->window == wid) {
+ TimeStamp time;
+ time = ClientTimeToServerTime(stuff->time);
+ rc = vncConvertSelection(client, stuff->selection,
+ stuff->target, stuff->property,
+ stuff->requestor, time);
+ if (rc != Success) {
+ xEvent event;
+
+ memset(&event, 0, sizeof(xEvent));
+ event.u.u.type = SelectionNotify;
+ event.u.selectionNotify.time = stuff->time;
+ event.u.selectionNotify.requestor = stuff->requestor;
+ event.u.selectionNotify.selection = stuff->selection;
+ event.u.selectionNotify.target = stuff->target;
+ event.u.selectionNotify.property = None;
+ WriteEventsToClient(client, 1, &event);
+ }
+
+ return Success;
+ }
+
+ return origProcConvertSelection(client);
+}
+
+static void vncSelectionRequest(Atom selection, Atom target)
+{
+ Selection *pSel;
+ xEvent event;
+ int rc;
+
+ rc = vncCreateSelectionWindow();
+ if (rc != Success)
+ return;
+
+ LOG_DEBUG("Requesting %s for %s selection",
+ NameForAtom(target), NameForAtom(selection));
+
+ rc = dixLookupSelection(&pSel, selection, serverClient, DixGetAttrAccess);
+ if (rc != Success)
+ return;
+
+ event.u.u.type = SelectionRequest;
+ event.u.selectionRequest.owner = pSel->window;
+ event.u.selectionRequest.time = currentTime.milliseconds;
+ event.u.selectionRequest.requestor = wid;
+ event.u.selectionRequest.selection = selection;
+ event.u.selectionRequest.target = target;
+ event.u.selectionRequest.property = target;
+ WriteEventsToClient(pSel->client, 1, &event);
+}
+
+static Bool vncHasAtom(Atom atom, const Atom list[], size_t size)
+{
+ size_t i;
+
+ for (i = 0;i < size;i++) {
+ if (list[i] == atom)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void vncHandleSelection(Atom selection, Atom target,
+ Atom property, Atom requestor,
+ TimeStamp time)
+{
+ PropertyPtr prop;
+ int rc;
+
+ rc = dixLookupProperty(&prop, pWindow, property,
+ serverClient, DixReadAccess);
+ if (rc != Success)
+ return;
+
+ LOG_DEBUG("Selection notification for %s (target %s, property %s, type %s)",
+ NameForAtom(selection), NameForAtom(target),
+ NameForAtom(property), NameForAtom(prop->type));
+
+ if (target != property)
+ return;
+
+ if (target == xaTARGETS) {
+ if (prop->format != 32)
+ return;
+ if (prop->type != XA_ATOM)
+ return;
+
+ if (vncHasAtom(xaSTRING, (const Atom*)prop->data, prop->size))
+ vncSelectionRequest(selection, xaSTRING);
+ else if (vncHasAtom(xaUTF8_STRING, (const Atom*)prop->data, prop->size))
+ vncSelectionRequest(selection, xaUTF8_STRING);
+ } else if (target == xaSTRING) {
+ if (prop->format != 8)
+ return;
+ if (prop->type != xaSTRING)
+ return;
+
+ vncServerCutText(prop->data, prop->size);
+ } else if (target == xaUTF8_STRING) {
+ unsigned char* buffer;
+ unsigned char* out;
+ size_t len;
+
+ const unsigned char* in;
+ size_t in_len;
+
+ if (prop->format != 8)
+ return;
+ if (prop->type != xaUTF8_STRING)
+ return;
+
+ buffer = malloc(prop->size);
+ if (buffer == NULL)
+ return;
+
+ out = buffer;
+ len = 0;
+ in = prop->data;
+ in_len = prop->size;
+ while (in_len > 0) {
+ if ((*in & 0x80) == 0x00) {
+ *out++ = *in++;
+ len++;
+ in_len--;
+ } else if ((*in & 0xe0) == 0xc0) {
+ unsigned ucs;
+ ucs = (*in++ & 0x1f) << 6;
+ in_len--;
+ if (in_len > 0) {
+ ucs |= (*in++ & 0x3f);
+ in_len--;
+ }
+ if (ucs <= 0xff)
+ *out++ = ucs;
+ else
+ *out++ = '?';
+ len++;
+ } else {
+ *out++ = '?';
+ len++;
+ do {
+ in++;
+ in_len--;
+ } while ((in_len > 0) && ((*in & 0xc0) == 0x80));
+ }
+ }
+
+ vncServerCutText((const char*)buffer, len);
+
+ free(buffer);
+ }
+}
+
+#define SEND_EVENT_BIT 0x80
+
+static int vncProcSendEvent(ClientPtr client)
+{
+ REQUEST(xSendEventReq);
+ REQUEST_SIZE_MATCH(xSendEventReq);
+
+ stuff->event.u.u.type &= ~(SEND_EVENT_BIT);
+
+ if (stuff->event.u.u.type == SelectionNotify &&
+ stuff->event.u.selectionNotify.requestor == wid) {
+ TimeStamp time;
+ time = ClientTimeToServerTime(stuff->event.u.selectionNotify.time);
+ vncHandleSelection(stuff->event.u.selectionNotify.selection,
+ stuff->event.u.selectionNotify.target,
+ stuff->event.u.selectionNotify.property,
+ stuff->event.u.selectionNotify.requestor,
+ time);
+ }
+
+ return origProcSendEvent(client);
+}
+
+static void vncSelectionCallback(CallbackListPtr *callbacks,
+ void * data, void * args)
+{
+ SelectionInfoRec *info = (SelectionInfoRec *) args;
+
+ if (info->kind != SelectionSetOwner)
+ return;
+ if (info->client == serverClient)
+ return;
+
+ if ((info->selection->selection != xaPRIMARY) &&
+ (info->selection->selection != xaCLIPBOARD))
+ return;
+
+ if ((info->selection->selection == xaPRIMARY) &&
+ !vncGetSendPrimary())
+ return;
+
+ vncSelectionRequest(info->selection->selection, xaTARGETS);
+}
diff --git a/common/rfb/Threading.h b/unix/xserver/hw/vnc/vncSelection.h
similarity index 65%
rename from common/rfb/Threading.h
rename to unix/xserver/hw/vnc/vncSelection.h
index 66b3aa0..969f895 100644
--- a/common/rfb/Threading.h
+++ b/unix/xserver/hw/vnc/vncSelection.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+/* Copyright 2016 Pierre Ossman for Cendio AB
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,17 +15,19 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
+#ifndef __SELECTION_H__
+#define __SELECTION_H__
-// -=- Threading.h
-// General purpose threading interface.
-// If the current platform supports threading then __RFB_THREADING_IMPL
-// will be defined after this header has been included.
-
-#ifndef __RFB_THREADING_H__
-#define __RFB_THREADING_H__
-
-#ifdef WIN32
-#include <rfb_win32/Threading.h>
+#ifdef __cplusplus
+extern "C" {
#endif
-#endif // __RFB_THREADING_H__
+void vncSelectionInit(void);
+
+void vncClientCutText(const char* str, int len);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c
index 5709893..c5b684d 100644
--- a/unix/xserver/hw/vnc/xvnc.c
+++ b/unix/xserver/hw/vnc/xvnc.c
@@ -85,7 +85,7 @@
#include "version-config.h"
#include "site.h"
-#define XVNCVERSION "TigerVNC 1.6.80"
+#define XVNCVERSION "TigerVNC 1.7.80"
#define XVNCCOPYRIGHT ("Copyright (C) 1999-2016 TigerVNC Team and many others (see README.txt)\n" \
"See http://www.tigervnc.org for information on TigerVNC.\n")
@@ -854,6 +854,40 @@
static Bool
vfbCursorOffScreen (ScreenPtr *ppScreen, int *x, int *y)
{
+ int absX, absY;
+ int i;
+
+ if (screenInfo.numScreens == 1)
+ return FALSE;
+
+ if ((*x >= 0) && (*x < (*ppScreen)->width) &&
+ (*y >= 0) && (*y < (*ppScreen)->height))
+ return FALSE;
+
+ absX = *x + (*ppScreen)->x;
+ absY = *y + (*ppScreen)->y;
+
+ for (i = 0;i < screenInfo.numScreens;i++) {
+ ScreenPtr newScreen;
+
+ newScreen = screenInfo.screens[i];
+
+ if (absX < newScreen->x)
+ continue;
+ if (absY < newScreen->y)
+ continue;
+ if (absX >= (newScreen->x + newScreen->width))
+ continue;
+ if (absY >= (newScreen->y + newScreen->height))
+ continue;
+
+ *ppScreen = newScreen;
+ *x = absX - newScreen->x;
+ *y = absY - newScreen->y;
+
+ return TRUE;
+ }
+
return FALSE;
}
@@ -1456,11 +1490,10 @@
vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
#endif
{
-#if XORG < 113
- vfbScreenInfoPtr pvfb = &vfbScreens[index];
-#else
- vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
+#if XORG >= 113
+ int index = pScreen->myNum;
#endif
+ vfbScreenInfoPtr pvfb = &vfbScreens[index];
int dpi;
int ret;
void *pbits;
@@ -1481,13 +1514,8 @@
pbits = vfbAllocateFramebufferMemory(&pvfb->fb);
if (!pbits) return FALSE;
-#if XORG < 113
vncFbptr[index] = pbits;
vncFbstride[index] = pvfb->fb.paddedWidth;
-#else
- vncFbptr[pScreen->myNum] = pbits;
- vncFbstride[pScreen->myNum] = pvfb->fb.paddedWidth;
-#endif
miSetPixmapDepths();
@@ -1524,6 +1552,12 @@
return FALSE;
}
+ if (index > 0) {
+ ScreenPtr prevScreen = screenInfo.screens[index-1];
+ pScreen->x = prevScreen->x + prevScreen->width;
+ pScreen->y = 0;
+ }
+
ret = fbScreenInit(pScreen, pbits, pvfb->fb.width, pvfb->fb.height,
dpi, dpi, pvfb->fb.paddedWidth, pvfb->fb.bitsPerPixel);
diff --git a/vncviewer/vncviewer.man b/vncviewer/vncviewer.man
index 9ee616d..d6a3708 100644
--- a/vncviewer/vncviewer.man
+++ b/vncviewer/vncviewer.man
@@ -280,7 +280,10 @@
.SH FILES
.TP
$HOME/.vnc/default.tigervnc
-Default configuration options.
+Default configuration options. This file must have a "magic" first line of
+"TigerVNC Configuration file Version 1.0" (without quotes), followed by simple
+<setting>=<value> pairs of your choosing. The available settings are those
+shown in this man page.
.TP
$HOME/.vnc/x509_ca.pem
Default CA certificate for authenticating servers.
diff --git a/win/rfb_win32/CMakeLists.txt b/win/rfb_win32/CMakeLists.txt
index 047b0d8..305247a 100644
--- a/win/rfb_win32/CMakeLists.txt
+++ b/win/rfb_win32/CMakeLists.txt
@@ -22,7 +22,6 @@
SInput.cxx
SocketManager.cxx
TCharArray.cxx
- Threading.cxx
TsSessions.cxx
Win32Util.cxx
WMCursor.cxx
diff --git a/win/rfb_win32/Clipboard.h b/win/rfb_win32/Clipboard.h
index 498f75f..3da7bfc 100644
--- a/win/rfb_win32/Clipboard.h
+++ b/win/rfb_win32/Clipboard.h
@@ -25,7 +25,6 @@
#define __RFB_WIN32_CLIPBOARD_H__
#include <rfb/SDesktop.h>
-#include <rfb/Threading.h>
#include <rfb_win32/MsgWindow.h>
#include <rfb_win32/DeviceFrameBuffer.h>
diff --git a/win/rfb_win32/RegConfig.cxx b/win/rfb_win32/RegConfig.cxx
index 30cb310..5c89e78 100644
--- a/win/rfb_win32/RegConfig.cxx
+++ b/win/rfb_win32/RegConfig.cxx
@@ -85,30 +85,29 @@
}
-RegConfigThread::RegConfigThread() : Thread("RegConfigThread"), config(&eventMgr) {
+RegConfigThread::RegConfigThread() : config(&eventMgr), thread_id(-1) {
}
RegConfigThread::~RegConfigThread() {
- join();
+ PostThreadMessage(thread_id, WM_QUIT, 0, 0);
+ wait();
}
bool RegConfigThread::start(const HKEY rootKey, const TCHAR* keyname) {
if (config.setKey(rootKey, keyname)) {
Thread::start();
+ while (thread_id == (DWORD)-1)
+ Sleep(0);
return true;
}
return false;
}
-void RegConfigThread::run() {
+void RegConfigThread::worker() {
DWORD result = 0;
MSG msg;
+ thread_id = GetCurrentThreadId();
while ((result = eventMgr.getMessage(&msg, 0, 0, 0)) > 0) {}
if (result < 0)
throw rdr::SystemException("RegConfigThread failed", GetLastError());
}
-
-Thread* RegConfigThread::join() {
- PostThreadMessage(getThreadId(), WM_QUIT, 0, 0);
- return Thread::join();
-}
diff --git a/win/rfb_win32/RegConfig.h b/win/rfb_win32/RegConfig.h
index e9c01b1..c092090 100644
--- a/win/rfb_win32/RegConfig.h
+++ b/win/rfb_win32/RegConfig.h
@@ -24,7 +24,8 @@
#ifndef __RFB_WIN32_REG_CONFIG_H__
#define __RFB_WIN32_REG_CONFIG_H__
-#include <rfb/Threading.h>
+#include <os/Thread.h>
+
#include <rfb/Configuration.h>
#include <rfb_win32/Registry.h>
#include <rfb_win32/EventManager.h>
@@ -63,7 +64,7 @@
RegKey key;
};
- class RegConfigThread : Thread {
+ class RegConfigThread : os::Thread {
public:
RegConfigThread();
~RegConfigThread();
@@ -71,10 +72,10 @@
// Start the thread, reading from the specified key
bool start(const HKEY rootkey, const TCHAR* keyname);
protected:
- void run();
- Thread* join();
+ virtual void worker();
EventManager eventMgr;
RegConfig config;
+ DWORD thread_id;
};
};
diff --git a/win/rfb_win32/Service.cxx b/win/rfb_win32/Service.cxx
index d054ce4..719c44b 100644
--- a/win/rfb_win32/Service.cxx
+++ b/win/rfb_win32/Service.cxx
@@ -22,7 +22,7 @@
#include <rfb_win32/MsgWindow.h>
#include <rfb_win32/ModuleFileName.h>
#include <rfb_win32/Registry.h>
-#include <rfb/Threading.h>
+#include <rfb_win32/Handle.h>
#include <logmessages/messages.h>
#include <rdr/Exception.h>
#include <rfb/LogWriter.h>
diff --git a/win/rfb_win32/Threading.cxx b/win/rfb_win32/Threading.cxx
deleted file mode 100644
index 5873b58..0000000
--- a/win/rfb_win32/Threading.cxx
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
- *
- * This is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this software; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-// -=- Threading.cxx
-// Win32 Threading interface implementation
-
-#include <malloc.h>
-
-#include <rdr/Exception.h>
-#include <rfb/LogWriter.h>
-#include <rfb/util.h>
-#include <rfb_win32/Threading.h>
-
-using namespace rfb;
-
-static LogWriter vlog("Threading");
-
-static DWORD threadStorage = TlsAlloc();
-
-
-inline void logAction(Thread* t, const char* action) {
- vlog.debug("%-16.16s %s(%p)", action, t->getName(), t);
-}
-
-inline void logError(Thread* t, const char* err) {
- vlog.error("%-16.16s %s(%p):%s", "failed", t->getName(), t, err);
-}
-
-
-DWORD WINAPI
-Thread::threadProc(LPVOID lpParameter) {
- Thread* thread = (Thread*) lpParameter;
- TlsSetValue(threadStorage, thread);
- logAction(thread, "started");
- try {
- thread->run();
- logAction(thread, "stopped");
- } catch (rdr::Exception& e) {
- logError(thread, e.str());
- }
- bool deleteThread = false;
- {
- Lock l(thread->mutex);
- thread->state = ThreadStopped;
- thread->sig->signal();
- deleteThread = thread->deleteAfterRun;
- }
- if (deleteThread)
- delete thread;
- return 0;
-}
-
-Thread::Thread(const char* name_) : name(strDup(name_ ? name_ : "Unnamed")), sig(0), deleteAfterRun(false) {
- sig = new Condition(mutex);
- cond_event.h = CreateEvent(NULL, TRUE, FALSE, NULL);
- thread.h = CreateThread(NULL, 0, threadProc, this, CREATE_SUSPENDED, &thread_id);
- state = ThreadCreated;
- logAction(this, "created");
-}
-
-Thread::Thread(HANDLE thread_, DWORD thread_id_) :
- thread(thread_), thread_id(thread_id_), name(strDup("Native")), sig(0), deleteAfterRun(false) {
- cond_event.h = CreateEvent(NULL, TRUE, FALSE, NULL);
- state = ThreadNative;
- logAction(this, "created");
-}
-
-Thread::~Thread() {
- logAction(this, "destroying");
- if (!deleteAfterRun && state != ThreadNative)
- this->join();
- if (sig)
- delete sig;
- logAction(this, "destroyed");
-}
-
-void
-Thread::run() {
-}
-
-void
-Thread::start() {
- Lock l(mutex);
- if (state == ThreadCreated) {
- state = ThreadStarted;
- sig->signal();
- ResumeThread(thread);
- }
-}
-
-Thread*
-Thread::join() {
- if (deleteAfterRun)
- throw rdr::Exception("attempt to join() with deleteAfterRun thread");
- Lock l(mutex);
- if (state == ThreadJoined) {
- logAction(this, "already joined");
- } else {
- logAction(this, "joining");
- while (state == ThreadStarted) {
- sig->wait();
- logAction(this, "checking");
- }
- state = ThreadJoined;
- logAction(this, "joined");
- }
- return this;
-}
-
-const char*
-Thread::getName() const {
- return name.buf;
-}
-
-ThreadState
-Thread::getState() const {
- return state;
-}
-
-unsigned long
-Thread::getThreadId() const {
- return thread_id;
-}
-
-
-Thread*
-Thread::self() {
- Thread* thread = (Thread*) TlsGetValue(threadStorage);
- if (!thread) {
- // *** memory leak - could use GetExitCodeThread to lazily detect when
- // to clean up native thread objects
- thread = new Thread(GetCurrentThread(), GetCurrentThreadId());
- TlsSetValue(threadStorage, thread);
- }
- return thread;
-}
diff --git a/win/rfb_win32/Threading.h b/win/rfb_win32/Threading.h
deleted file mode 100644
index 70bef41..0000000
--- a/win/rfb_win32/Threading.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
- *
- * This is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this software; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-// -=- Threading_win32.h
-// Win32 Threading interface implementation
-
-#ifndef __RFB_THREADING_IMPL_WIN32
-#define __RFB_THREADING_IMPL_WIN32
-
-#define __RFB_THREADING_IMPL WIN32
-
-#include <rfb_win32/Handle.h>
-#include <rfb/util.h>
-#include <rdr/Exception.h>
-//#include <stdio.h>
-
-
-namespace rfb {
- class Condition;
-
- class Mutex {
- public:
- Mutex() {
- InitializeCriticalSection(&crit);
- }
- ~Mutex() {
- DeleteCriticalSection(&crit);
- }
- friend class Lock;
- friend class Condition;
- protected:
- void enter() {EnterCriticalSection(&crit);}
- void exit() {LeaveCriticalSection(&crit);}
- CRITICAL_SECTION crit;
- };
-
- class Lock {
- public:
- Lock(Mutex& m) : mutex(m) {m.enter();}
- ~Lock() {mutex.exit();}
- protected:
- Mutex& mutex;
- };
-
- enum ThreadState {ThreadCreated, ThreadStarted, ThreadStopped, ThreadJoined, ThreadNative};
-
- class Thread {
- public:
- Thread(const char* name_=0);
- virtual ~Thread();
-
- virtual void run();
-
- virtual void start();
- virtual Thread* join();
-
- const char* getName() const;
- ThreadState getState() const;
-
- // Determines whether the thread should delete itself when run() returns
- // If you set this, you must NEVER call join()!
- void setDeleteAfterRun() {deleteAfterRun = true;};
-
- unsigned long getThreadId() const;
-
- static Thread* self();
-
- friend class Condition;
-
- protected:
- Thread(HANDLE thread_, DWORD thread_id_);
- static DWORD WINAPI threadProc(LPVOID lpParameter);
-
- win32::Handle thread;
- DWORD thread_id;
- CharArray name;
- ThreadState state;
- Condition* sig;
- Mutex mutex;
-
- win32::Handle cond_event;
- Thread* cond_next;
-
- bool deleteAfterRun;
- };
-
- class Condition {
- public:
- Condition(Mutex& m) : mutex(m), waiting(0) {
- }
- ~Condition() {
- }
-
- // Wake up the specified number of threads that are waiting
- // on this Condition, or all of them if -1 is specified.
- void signal(int howMany=1) {
- Lock l(cond_lock);
- while (waiting && howMany!=0) {
- SetEvent(waiting->cond_event);
- waiting = waiting->cond_next;
- if (howMany>0) --howMany;
- }
- }
-
- // NB: Must hold "mutex" to call wait()
- // Wait until either the Condition is signalled or the timeout
- // expires.
- void wait(DWORD timeout=INFINITE) {
- Thread* self = Thread::self();
- ResetEvent(self->cond_event);
- { Lock l(cond_lock);
- self->cond_next = waiting;
- waiting = self;
- }
- mutex.exit();
- DWORD result = WaitForSingleObject(self->cond_event, timeout);
- mutex.enter();
- if (result == WAIT_TIMEOUT) {
- Lock l(cond_lock);
- // Remove this thread from the Condition
- for (Thread** removeFrom = &waiting; *removeFrom; removeFrom = &(*removeFrom)->cond_next) {
- if (*removeFrom == self) {
- *removeFrom = self->cond_next;
- break;
- }
- }
- } else if (result == WAIT_FAILED) {
- throw rdr::SystemException("failed to wait on Condition", GetLastError());
- }
- }
-
- protected:
- Mutex& mutex;
- Mutex cond_lock;
- Thread* waiting;
- };
-
-};
-
-#endif // __RFB_THREADING_IMPL
diff --git a/win/rfb_win32/WMHooks.cxx b/win/rfb_win32/WMHooks.cxx
index 0e5e70a..bbc1508 100644
--- a/win/rfb_win32/WMHooks.cxx
+++ b/win/rfb_win32/WMHooks.cxx
@@ -18,11 +18,13 @@
// -=- WMHooks.cxx
+#include <os/Mutex.h>
+#include <os/Thread.h>
+
#include <rfb_win32/WMHooks.h>
#include <rfb_win32/Service.h>
#include <rfb_win32/MsgWindow.h>
#include <rfb_win32/IntervalTimer.h>
-#include <rfb/Threading.h>
#include <rfb/LogWriter.h>
#include <list>
@@ -108,20 +110,21 @@
}
-class WMHooksThread : public Thread {
+class WMHooksThread : public os::Thread {
public:
- WMHooksThread() : Thread("WMHookThread"),
- active(true) {
- }
- virtual void run();
- virtual Thread* join();
+ WMHooksThread() : active(true), thread_id(-1) { }
+ void stop();
+ DWORD getThreadId() { return thread_id; }
+protected:
+ virtual void worker();
protected:
bool active;
+ DWORD thread_id;
};
static WMHooksThread* hook_mgr = 0;
static std::list<WMHooks*> hooks;
-static Mutex hook_mgr_lock;
+static os::Mutex hook_mgr_lock;
static bool StartHookThread() {
@@ -131,15 +134,17 @@
return false;
vlog.debug("creating thread");
hook_mgr = new WMHooksThread();
+ hook_mgr->start();
+ while (hook_mgr->getThreadId() == (DWORD)-1)
+ Sleep(0);
vlog.debug("installing hooks");
if (!WM_Hooks_Install(hook_mgr->getThreadId(), 0)) {
vlog.error("failed to initialise hooks");
- delete hook_mgr->join();
+ hook_mgr->stop();
+ delete hook_mgr;
hook_mgr = 0;
return false;
}
- vlog.debug("starting thread");
- hook_mgr->start();
return true;
}
@@ -149,14 +154,15 @@
if (!hooks.empty())
return;
vlog.debug("closing thread");
- delete hook_mgr->join();
+ hook_mgr->stop();
+ delete hook_mgr;
hook_mgr = 0;
}
static bool AddHook(WMHooks* hook) {
vlog.debug("adding hook");
- Lock l(hook_mgr_lock);
+ os::AutoMutex a(&hook_mgr_lock);
if (!StartHookThread())
return false;
hooks.push_back(hook);
@@ -166,7 +172,7 @@
static bool RemHook(WMHooks* hook) {
{
vlog.debug("removing hook");
- Lock l(hook_mgr_lock);
+ os::AutoMutex a(&hook_mgr_lock);
hooks.remove(hook);
}
StopHookThread();
@@ -174,7 +180,7 @@
}
static void NotifyHooksRegion(const Region& r) {
- Lock l(hook_mgr_lock);
+ os::AutoMutex a(&hook_mgr_lock);
std::list<WMHooks*>::iterator i;
for (i=hooks.begin(); i!=hooks.end(); i++)
(*i)->NotifyHooksRegion(r);
@@ -182,7 +188,7 @@
void
-WMHooksThread::run() {
+WMHooksThread::worker() {
// Obtain message ids for all supported hook messages
UINT windowMsg = WM_Hooks_WindowChanged();
UINT clientAreaMsg = WM_Hooks_WindowClientAreaChanged();
@@ -208,6 +214,8 @@
vlog.debug("starting hook thread");
+ thread_id = GetCurrentThreadId();
+
while (active && GetMessage(&msg, NULL, 0, 0)) {
count++;
@@ -283,13 +291,13 @@
WM_Hooks_Remove(getThreadId());
}
-Thread*
-WMHooksThread::join() {
+void
+WMHooksThread::stop() {
vlog.debug("stopping WMHooks thread");
active = false;
PostThreadMessage(thread_id, WM_QUIT, 0, 0);
- vlog.debug("joining WMHooks thread");
- return Thread::join();
+ vlog.debug("waiting for WMHooks thread");
+ wait();
}
// -=- WMHooks class
@@ -311,7 +319,7 @@
bool rfb::win32::WMHooks::getUpdates(UpdateTracker* ut) {
if (!updatesReady) return false;
- Lock l(hook_mgr_lock);
+ os::AutoMutex a(&hook_mgr_lock);
updates.copyTo(ut);
updates.clear();
updatesReady = false;
@@ -363,12 +371,12 @@
return block_ == blocking;
}
-Mutex blockMutex;
-int blockCount = 0;
+static os::Mutex blockMutex;
+static int blockCount = 0;
bool rfb::win32::WMBlockInput::blockInputs(bool on) {
if (active == on) return true;
- Lock l(blockMutex);
+ os::AutoMutex a(&blockMutex);
int newCount = on ? blockCount+1 : blockCount-1;
if (!blockRealInputs(newCount > 0))
return false;
diff --git a/win/rfb_win32/WMNotifier.h b/win/rfb_win32/WMNotifier.h
index ada45d0..3855430 100644
--- a/win/rfb_win32/WMNotifier.h
+++ b/win/rfb_win32/WMNotifier.h
@@ -28,7 +28,6 @@
#define __RFB_WIN32_NOTIFIER_H__
#include <rfb/SDesktop.h>
-#include <rfb/Threading.h>
#include <rfb_win32/MsgWindow.h>
#include <rfb_win32/DeviceFrameBuffer.h>
#include <rfb_win32/SInput.h>
diff --git a/win/winvnc/QueryConnectDialog.cxx b/win/winvnc/QueryConnectDialog.cxx
index 8e50696..103621e 100644
--- a/win/winvnc/QueryConnectDialog.cxx
+++ b/win/winvnc/QueryConnectDialog.cxx
@@ -41,7 +41,7 @@
QueryConnectDialog::QueryConnectDialog(network::Socket* sock_,
const char* userName_,
VNCServerWin32* s)
-: Thread("QueryConnectDialog"), Dialog(GetModuleHandle(0)),
+: Dialog(GetModuleHandle(0)),
sock(sock_), approve(false), server(s) {
peerIp.buf = sock->getPeerAddress();
userName.buf = strDup(userName_);
@@ -54,7 +54,7 @@
// - Thread overrides
-void QueryConnectDialog::run() {
+void QueryConnectDialog::worker() {
countdown = timeout;
try {
if (desktopChangeRequired() && !changeDesktop())
diff --git a/win/winvnc/QueryConnectDialog.h b/win/winvnc/QueryConnectDialog.h
index b28de19..de5e31e 100644
--- a/win/winvnc/QueryConnectDialog.h
+++ b/win/winvnc/QueryConnectDialog.h
@@ -21,24 +21,26 @@
#ifndef __WINVNC_QUERY_CONNECT_DIALOG_H__
#define __WINVNC_QUERY_CONNECT_DIALOG_H__
-#include <rfb/Threading.h>
#include <rfb_win32/Dialog.h>
#include <rfb/util.h>
+namespace os { class Thread; }
+
namespace network { class Socket; }
namespace winvnc {
class VNCServerWin32;
- class QueryConnectDialog : public rfb::Thread, rfb::win32::Dialog {
+ class QueryConnectDialog : public os::Thread, rfb::win32::Dialog {
public:
QueryConnectDialog(network::Socket* sock, const char* userName, VNCServerWin32* s);
virtual void startDialog();
- virtual void run();
network::Socket* getSock() {return sock;}
bool isAccepted() const {return approve;}
protected:
+ // Thread methods
+ virtual void worker();
// Dialog methods (protected)
virtual void initDialog();
diff --git a/win/winvnc/STrayIcon.cxx b/win/winvnc/STrayIcon.cxx
index 762a56a..05a38d6 100644
--- a/win/winvnc/STrayIcon.cxx
+++ b/win/winvnc/STrayIcon.cxx
@@ -22,14 +22,19 @@
#include <winvnc/VNCServerService.h>
#include <winvnc/resource.h>
+#include <os/Mutex.h>
+#include <os/Thread.h>
+
#include <rfb/LogWriter.h>
#include <rfb/Configuration.h>
+
#include <rfb_win32/LaunchProcess.h>
#include <rfb_win32/TrayIcon.h>
#include <rfb_win32/AboutDialog.h>
#include <rfb_win32/MsgBox.h>
#include <rfb_win32/Service.h>
#include <rfb_win32/CurrentUser.h>
+
#include <winvnc/ControlPanel.h>
using namespace rfb;
@@ -209,7 +214,7 @@
case WM_SET_TOOLTIP:
{
- rfb::Lock l(thread.lock);
+ os::AutoMutex a(thread.lock);
if (thread.toolTip.buf)
setToolTip(thread.toolTip.buf);
}
@@ -231,15 +236,24 @@
STrayIconThread::STrayIconThread(VNCServerWin32& sm, UINT inactiveIcon_, UINT activeIcon_,
UINT dis_inactiveIcon_, UINT dis_activeIcon_, UINT menu_)
-: Thread("TrayIcon"), windowHandle(0), server(sm),
+: thread_id(-1), windowHandle(0), server(sm),
inactiveIcon(inactiveIcon_), activeIcon(activeIcon_),
dis_inactiveIcon(dis_inactiveIcon_), dis_activeIcon(dis_activeIcon_),
menu(menu_), runTrayIcon(true) {
+ lock = new os::Mutex;
start();
+ while (thread_id == (DWORD)-1)
+ Sleep(0);
}
+STrayIconThread::~STrayIconThread() {
+ runTrayIcon = false;
+ PostThreadMessage(thread_id, WM_QUIT, 0, 0);
+ delete lock;
+}
-void STrayIconThread::run() {
+void STrayIconThread::worker() {
+ thread_id = GetCurrentThreadId();
while (runTrayIcon) {
if (rfb::win32::desktopChangeRequired() &&
!rfb::win32::changeDesktop())
@@ -260,7 +274,7 @@
void STrayIconThread::setToolTip(const TCHAR* text) {
if (!windowHandle) return;
- Lock l(lock);
+ os::AutoMutex a(lock);
delete [] toolTip.buf;
toolTip.buf = tstrDup(text);
PostMessage(windowHandle, WM_SET_TOOLTIP, 0, 0);
diff --git a/win/winvnc/STrayIcon.h b/win/winvnc/STrayIcon.h
index 309d3f4..0906636 100644
--- a/win/winvnc/STrayIcon.h
+++ b/win/winvnc/STrayIcon.h
@@ -22,20 +22,19 @@
#include <winvnc/VNCServerWin32.h>
#include <rfb_win32/TCharArray.h>
#include <rfb/Configuration.h>
-#include <rfb/Threading.h>
+
+namespace os {
+ class Mutex;
+ class Thread;
+}
namespace winvnc {
- class STrayIconThread : rfb::Thread {
+ class STrayIconThread : os::Thread {
public:
STrayIconThread(VNCServerWin32& sm, UINT inactiveIcon,
UINT activeIcon, UINT dis_inactiveIcon, UINT dis_activeIcon, UINT menu);
- virtual ~STrayIconThread() {
- runTrayIcon = false;
- PostThreadMessage(getThreadId(), WM_QUIT, 0, 0);
- }
-
- virtual void run();
+ virtual ~STrayIconThread();
void setToolTip(const TCHAR* text);
@@ -44,7 +43,10 @@
friend class STrayIcon;
protected:
- rfb::Mutex lock;
+ virtual void worker();
+
+ os::Mutex* lock;
+ DWORD thread_id;
HWND windowHandle;
rfb::TCharArray toolTip;
VNCServerWin32& server;
diff --git a/win/winvnc/VNCServerWin32.cxx b/win/winvnc/VNCServerWin32.cxx
index 27aea9f..d86384d 100644
--- a/win/winvnc/VNCServerWin32.cxx
+++ b/win/winvnc/VNCServerWin32.cxx
@@ -21,9 +21,13 @@
#include <winvnc/VNCServerWin32.h>
#include <winvnc/resource.h>
#include <winvnc/STrayIcon.h>
+
+#include <os/Mutex.h>
+
#include <rfb_win32/ComputerName.h>
#include <rfb_win32/CurrentUser.h>
#include <rfb_win32/Service.h>
+
#include <rfb/Hostname.h>
#include <rfb/LogWriter.h>
@@ -53,16 +57,21 @@
VNCServerWin32::VNCServerWin32()
- : command(NoCommand), commandSig(commandLock),
+ : command(NoCommand),
commandEvent(CreateEvent(0, TRUE, FALSE, 0)),
sessionEvent(isServiceProcess() ?
CreateEvent(0, FALSE, FALSE, "Global\\SessionEventTigerVNC") : 0),
vncServer(CStr(ComputerName().buf), &desktop),
- hostThread(0), runServer(false), isDesktopStarted(false),
+ thread_id(-1), runServer(false), isDesktopStarted(false),
httpServer(&vncServer), config(&sockMgr),
rfbSock(&sockMgr), httpSock(&sockMgr), trayIcon(0),
queryConnectDialog(0)
{
+ commandLock = new os::Mutex;
+ commandSig = new os::Condition(commandLock);
+
+ runLock = new os::Mutex;
+
// Initialise the desktop
desktop.setStatusLocation(&isDesktopStarted);
@@ -85,8 +94,15 @@
desktop.setStatusLocation(0);
// Join the Accept/Reject dialog thread
- if (queryConnectDialog)
- delete queryConnectDialog->join();
+ if (queryConnectDialog) {
+ queryConnectDialog->wait();
+ delete queryConnectDialog;
+ }
+
+ delete runLock;
+
+ delete commandSig;
+ delete commandLock;
}
@@ -149,8 +165,9 @@
int VNCServerWin32::run() {
- { Lock l(runLock);
- hostThread = Thread::self();
+ {
+ os::AutoMutex a(runLock);
+ thread_id = GetCurrentThreadId();
runServer = true;
}
@@ -195,19 +212,20 @@
vlog.error("%s", e.str());
}
- { Lock l(runLock);
+ {
+ os::AutoMutex a(runLock);
runServer = false;
- hostThread = 0;
+ thread_id = (DWORD)-1;
}
return result;
}
void VNCServerWin32::stop() {
- Lock l(runLock);
+ os::AutoMutex a(runLock);
runServer = false;
- if (hostThread)
- PostThreadMessage(hostThread->getThreadId(), WM_QUIT, 0, 0);
+ if (thread_id != (DWORD)-1)
+ PostThreadMessage(thread_id, WM_QUIT, 0, 0);
}
@@ -261,17 +279,17 @@
bool VNCServerWin32::queueCommand(Command cmd, const void* data, int len, bool wait) {
- Lock l(commandLock);
+ os::AutoMutex a(commandLock);
while (command != NoCommand)
- commandSig.wait();
+ commandSig->wait();
command = cmd;
commandData = data;
commandDataLen = len;
SetEvent(commandEvent);
if (wait) {
while (command != NoCommand)
- commandSig.wait();
- commandSig.signal();
+ commandSig->wait();
+ commandSig->signal();
}
return true;
}
@@ -282,7 +300,7 @@
if (event_ == commandEvent.h) {
// If there is no command queued then return immediately
{
- Lock l(commandLock);
+ os::AutoMutex a(commandLock);
if (command == NoCommand)
return;
}
@@ -312,7 +330,8 @@
vncServer.approveConnection(queryConnectDialog->getSock(),
queryConnectDialog->isAccepted(),
"Connection rejected by user");
- delete queryConnectDialog->join();
+ queryConnectDialog->wait();
+ delete queryConnectDialog;
queryConnectDialog = 0;
break;
@@ -322,9 +341,9 @@
// Clear the command and signal completion
{
- Lock l(commandLock);
+ os::AutoMutex a(commandLock);
command = NoCommand;
- commandSig.signal();
+ commandSig->signal();
}
} else if (event_ == sessionEvent.h) {
stop();
diff --git a/win/winvnc/VNCServerWin32.h b/win/winvnc/VNCServerWin32.h
index b85814a..225e634 100644
--- a/win/winvnc/VNCServerWin32.h
+++ b/win/winvnc/VNCServerWin32.h
@@ -30,6 +30,12 @@
#include <winvnc/JavaViewer.h>
#include <winvnc/ManagedListener.h>
+namespace os {
+ class Mutex;
+ class Condition;
+ class Thread;
+}
+
namespace winvnc {
class STrayIconThread;
@@ -99,16 +105,16 @@
Command command;
const void* commandData;
int commandDataLen;
- rfb::Mutex commandLock;
- rfb::Condition commandSig;
+ os::Mutex* commandLock;
+ os::Condition* commandSig;
rfb::win32::Handle commandEvent;
rfb::win32::Handle sessionEvent;
// VNCServerWin32 Server-internal state
rfb::win32::SDisplay desktop;
rfb::VNCServerST vncServer;
- rfb::Mutex runLock;
- rfb::Thread* hostThread;
+ os::Mutex* runLock;
+ DWORD thread_id;
bool runServer;
bool isDesktopStarted;
JavaViewerServer httpServer;
diff --git a/win/winvnc/winvnc.cxx b/win/winvnc/winvnc.cxx
index ff16aac..aa41bcb 100644
--- a/win/winvnc/winvnc.cxx
+++ b/win/winvnc/winvnc.cxx
@@ -168,6 +168,19 @@
runServer = false;
int j = i;
i = argc;
+
+ // Try to clean up earlier services we've had
+ try {
+ rfb::win32::unregisterService("WinVNC4");
+ } catch (rdr::SystemException) {
+ // Do nothing as we might fail simply because there was no
+ // service to remove
+ }
+ try {
+ rfb::win32::unregisterService("TigerVNC Server");
+ } catch (rdr::SystemException) {
+ }
+
if (rfb::win32::registerService(VNCServerService::Name,
_T("TigerVNC Server"),
_T("Provides remote access to this machine via the VNC/RFB protocol."),