Merge pull request #1297 from a1346054/fixes

Simple maintenance improvements
This commit is contained in:
Povilas Kanapickas 2021-09-24 01:12:36 +03:00 committed by GitHub
commit dd8c2a1a38
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
87 changed files with 377 additions and 344 deletions

View File

@ -18,7 +18,7 @@ body:
id: version
attributes:
label: Version
description: What version of Barrier are you runnning?
description: What version of Barrier are you running?
options:
- v2.0.0-RC1
- v2.0.0-RC2

61
LICENSE
View File

@ -3,7 +3,7 @@ Copyright (C) 2012-2016 Symless Ltd.
Copyright (C) 2008-2014 Nick Bolton
Copyright (C) 2002-2014 Chris Schoeneman
This program is released under the GPL with the additional exemption
This program is released under the GPL with the additional exemption
that compiling, linking, and/or using OpenSSL is allowed.
GNU GENERAL PUBLIC LICENSE
@ -286,3 +286,62 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program 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 program 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 program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@ -107,7 +107,8 @@ A: Start the binary with the argument `--config <path_to_saved_configuration>`
Q: After loading my configuration on the client the field 'Server IP' is still empty!
A: Edit your configuration to include the servers ip adress manually with
(...)
section: options
serverhostname=<AAA.BBB.CCC.DDD>
A: Edit your configuration to include the server's ip address manually with
(...)
section: options
serverhostname=<AAA.BBB.CCC.DDD>

View File

@ -1 +1 @@
theme: jekyll-theme-slate
theme: jekyll-theme-slate

View File

@ -65,7 +65,7 @@ if exist bin\Debug (
mkdir bin\Release\platforms
copy %B_QT_FULLPATH%\plugins\platforms\qwindows.dll bin\Release\platforms\ > NUL
) else (
echo Remember to copy supporting binaries and confiuration files!
echo Remember to copy supporting binaries and configuration files!
)
echo Build completed successfully

View File

@ -1,10 +1,10 @@
#!/bin/sh
cd "$(dirname $0)" || exit 1
cd "$(dirname "$0")" || exit 1
# some environments have cmake v2 as 'cmake' and v3 as 'cmake3'
# check for cmake3 first then fallback to just cmake
B_CMAKE=`type cmake3 2>/dev/null`
if [ $? -eq 0 ]; then
B_CMAKE=`echo $B_CMAKE | cut -d' ' -f3`
B_CMAKE=`echo "$B_CMAKE" | cut -d' ' -f3`
else
B_CMAKE=cmake
fi
@ -26,7 +26,7 @@ B_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=$B_BUILD_TYPE $B_CMAKE_FLAGS"
rm -rf build
mkdir build || exit 1
cd build || exit 1
echo Starting Barrier $B_BUILD_TYPE build...
echo "Starting Barrier $B_BUILD_TYPE build..."
$B_CMAKE $B_CMAKE_FLAGS .. || exit 1
make || exit 1
echo "Build completed successfully"

View File

@ -1,7 +1,7 @@
#!/bin/sh
# Use the same verbose variable as CMake
[ "$VERBOSE" == "1" ] && set -x
[ "$VERBOSE" = "1" ] && set -x
# Exit on unset variables or pipe errors
set -uo pipefail
@ -14,10 +14,10 @@ B_BARRIERC="Barrier.app/Contents/MacOS/barrierc"
B_BARRIERS="Barrier.app/Contents/MacOS/barriers"
# Colorized output
function info() { tput bold; echo "$@" ; tput sgr0 ;}
function error() { tput bold; tput setaf 1; echo "$@"; tput sgr0 ; }
function success() { tput bold; tput setaf 2; echo "$@"; tput sgr0 ; }
function warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
info() { tput bold; echo "$@"; tput sgr0 ; }
error() { tput bold; tput setaf 1; echo "$@"; tput sgr0 ; }
success() { tput bold; tput setaf 2; echo "$@"; tput sgr0 ; }
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
info "Checking for bundle contents"
if [ ! -d "Barrier.app/Contents" ]; then
@ -40,7 +40,7 @@ if which -s port ; then
info "MacPorts found, searching for macdeployqt"
DEPLOYQT="$(port contents qt5-qttools | grep --only --max-count 1 '/.*macdeployqt')"
if [ ! -x "$DEPLOYQT" ]; then
error Please install package qt5-qttools
error "Please install package qt5-qttools"
exit 1
fi
fi
@ -50,13 +50,13 @@ if which -s brew ; then
info "Homebrew found, searching for macdeployqt"
DEPLOYQT="$(brew list qt@5 | grep --only '/.*macdeployqt' | head -1)"
if [ ! -x "$DEPLOYQT" ]; then
error Please install package qt
error "Please install package qt"
exit 1
fi
fi
# Use macdeployqt to include libraries and create dmg
if [ "$B_BUILDTYPE" == "Release" ]; then
if [ "$B_BUILDTYPE" = "Release" ]; then
info "Building Release disk image (dmg)"
"$DEPLOYQT" Barrier.app -dmg \
-executable="$B_BARRIERC" \

View File

@ -1,30 +1,30 @@
#!/bin/sh
# add warning for users running manually
function warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
warn "The scripts build_installer.sh and reref_dylibs.sh have been deprecated."
warn "Please use build_dist.sh instead to deploy using macdeployqt"
# change this to rename the installer package
B_DMG="Barrier-@BARRIER_VERSION@.dmg"
cd "$( dirname '$0' )"
cd "$( dirname "$0" )"
OWNDIR="$( pwd )"
B_REREF_SCRIPT="$OWNDIR/reref_dylibs.sh"
if [ ! -x $B_REREF_SCRIPT ]; then
echo Missing script: $B_REREF_SCRIPT
if [ ! -x "$B_REREF_SCRIPT" ]; then
echo "Missing script: $B_REREF_SCRIPT"
exit 1
fi
# remove any old copies so there's no confusion about whether this
# process completes successfully or not
rm -rf temp.dmg $B_DMG
rm -rf temp.dmg "$B_DMG"
cd Barrier.app/Contents 2>/dev/null
if [ $? -ne 0 ]; then
echo Please make sure that the build completed successfully
echo before trying to create the installer.
echo "Please make sure that the build completed successfully"
echo "before trying to create the installer."
exit 1
fi
@ -77,7 +77,7 @@ hdiutil create -size 64m -fs HFS+ -volname "Barrier" temp.dmg || exit 1
hdiutil attach temp.dmg -mountpoint mnt || exit 1
cp -r Barrier.app mnt/ || exit 1
hdiutil detach mnt || exit 1
hdiutil convert temp.dmg -format UDZO -o $B_DMG || exit 1
hdiutil convert temp.dmg -format UDZO -o "$B_DMG" || exit 1
rm temp.dmg
echo "dmg $B_DMB created successfully"
echo "dmg $B_DMG created successfully"

View File

@ -5,28 +5,28 @@ B_TARGET=$1
if [ "x$B_TARGET" = "x" ]; then
# add warning for users running manually
function warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
warn "The scripts build_installer.sh and reref_dylibs.sh have been deprecated."
warn "Please use build_dist.sh instead to deploy using macdeployqt"
echo Which binary needs to be re-referenced?
echo "Which binary needs to be re-referenced?"
exit 1
fi
cd $(dirname $B_TARGET) || exit 1
cd "$(dirname "$B_TARGET")" || exit 1
# where to find non-system libraries relative to target's directory.
# the vast majority of the time this should be empty
B_REL_PATH=$2
# we're in target's directory now. trim off the path
B_TARGET=$(basename $B_TARGET)
B_TARGET=$(basename "$B_TARGET")
# get a list of non-system libraries and make local copies
B_LIBS=$(otool -XL $B_TARGET | awk '{ print $1 }' | grep -Ev '^(/usr/lib|/System)')
B_LIBS=$(otool -XL "$B_TARGET" | awk '{ print $1 }' | grep -Ev '^(/usr/lib|/System)')
[ $? -ne 0 ] && exit 1
for B_LIB in $B_LIBS; do
B_LIB_NAME=$(basename $B_LIB)
B_LIB_NAME=$(basename "$B_LIB")
# otool reports barrier as "barrier:" which fails self-reference test below
B_LIB_NAME=${B_LIB_NAME//:}
@ -34,16 +34,16 @@ for B_LIB in $B_LIBS; do
[ "$B_TARGET" = "$B_LIB_NAME" ] && continue
B_DST=${B_REL_PATH}${B_LIB_NAME}
if [ ! -e $B_DST ]; then
cp $B_LIB $B_DST || exit 1
chmod u+rw $B_DST || exit 1
if [ ! -e "$B_DST" ]; then
cp "$B_LIB" "$B_DST" || exit 1
chmod u+rw "$B_DST" || exit 1
# recursively call this script on libraries purposefully not passing
# $B_REL_PATH so that it is only used explicitly
$0 $B_DST
$0 "$B_DST"
fi
# adjust the target's metadata to point to the local copy
# rather than the system-wide copy which would only exist on
# a development machine
install_name_tool -change $B_LIB @loader_path/$B_DST $B_TARGET || exit 1
install_name_tool -change "$B_LIB" "@loader_path/$B_DST" "$B_TARGET" || exit 1
done

View File

@ -47,7 +47,7 @@ section: links
end
# The aliases section is to map the full names of the computers to their logical names used in the screens section
# One way to find the actual name of a comptuer is to run hostname from a command window
# One way to find the actual name of a computer is to run hostname from a command window
section: aliases
# Laptop is actually known as John-Smiths-MacBook-3.local
John-Smiths-MacBook-3.local:

View File

@ -1 +1 @@
Made it possible to use keyboard instead of mouse to modify screen layout.
Made it possible to use keyboard instead of mouse to modify screen layout.

View File

@ -4,17 +4,17 @@
<plist version="1.0">
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start barrier client automatically. Make sure you change the IP below. -->
<dict>
<key>Label</key>
<string>org.debauchee.com.barrierc.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<key>Label</key>
<string>org.debauchee.com.barrierc.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/barrierc</string>
<!-- Replace this IP with the IP of your barriers server -->
<string>192.168.0.2</string>
</array>
<key>RunAtLoad</key>
<true/>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

View File

@ -4,12 +4,12 @@
<plist version="1.0">
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start barrier server automatically. Make sure you change configuration file below -->
<dict>
<key>Label</key>
<string>org.debauchee.com.barriers.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<key>Label</key>
<string>org.debauchee.com.barriers.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/barriers</string>
<string>--no-daemon</string>
<string>--config</string>

View File

@ -1,7 +1,7 @@
#!/bin/bash
# Checks if directory exists, otherwise asks to install package.
function check_dir_exists() {
check_dir_exists() {
local path=$1
local package=$2
@ -11,7 +11,7 @@ function check_dir_exists() {
fi
}
if [ ! $BARRIER_BUILD_ENV ]; then
if [ -z "$BARRIER_BUILD_ENV" ]; then
check_dir_exists '/Applications/Xcode.app' 'Xcode'
printf "Modifying environment for Barrier build...\n"

View File

@ -1,4 +1,4 @@
Thank you for chosing Barrier!
Thank you for choosing Barrier!
https://github.com/debauchee/barrier/
Barrier allows you to share your keyboard and mouse between computers over a network.

View File

@ -5,6 +5,5 @@ Comment=Keyboard and mouse sharing solution
Exec=barrier
Icon=barrier
Terminal=false
Categories=Utility;DesktopUtility;
Categories=Utility;RemoteAccess;
Keywords=keyboard;mouse;sharing;network;share;

View File

@ -1,10 +1,10 @@
#!/bin/sh
ICNS_BASE=../dist/macos/bundle/Barrier.app/Contents/Resources
if ! which magick >/dev/null 2>&1; then
echo "Need ImageMagic for this"
echo "Need ImageMagick for this"
exit 10
fi
cd $(dirname $0) || exit $?
cd "$(dirname "$0")" || exit $?
if [ ! -r barrier.png ]; then
echo "Use inkscape (or another vector graphics editor) to create barrier.png from barrier.svg first"
exit 10
@ -12,11 +12,11 @@ fi
rm -rf work || exit $?
mkdir -p work || exit $?
for s in 16 24 32 48 64 128 256 512 1024; do
magick convert barrier.png -resize ${s}x${s} -depth 8 work/${s}.png || exit $?
magick convert barrier.png -resize "${s}x${s}" -depth 8 "work/${s}.png" || exit $?
done
# windows icon
magick convert work/{16,24,32,48,64,128}.png barrier.png barrier.ico || exit $?
# macos icon
png2icns $ICNS_BASE/Barrier.icns work/{16,32,256,512,1024}.png || exit $?
png2icns "$ICNS_BASE/Barrier.icns" work/{16,32,256,512,1024}.png || exit $?
rm -rf work
echo Done

View File

@ -20,4 +20,3 @@ add_subdirectory(barriers)
if (WIN32)
add_subdirectory(barrierd)
endif()

View File

@ -46,4 +46,3 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
install (TARGETS barrierc DESTINATION bin)
endif()

View File

@ -66,4 +66,3 @@ createTaskBarReceiver(const BufferedLogOutputter* logBuffer, IEventQueue* events
{
return new OSXClientTaskBarReceiver(logBuffer, events);
}

View File

@ -73,7 +73,7 @@ BEGIN
VALUE "ProductName", "Barrier"
VALUE "ProductVersion", BARRIER_VERSION
VALUE "OriginalFilename", "barrierd.exe"
VALUE "FileDescription", "Open source KVM software deamon"
VALUE "FileDescription", "Open source KVM software daemon"
VALUE "InternalName", "barrierd"
END
END

View File

@ -46,5 +46,3 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
install (TARGETS barriers DESTINATION bin)
endif()

View File

@ -1,46 +1,46 @@
<?xml version="1.0" encoding="UTF-8" ?>
<languages>
<language ietfCode="en" name="English" />
<language ietfCode="ca-AD" name="Català (Andorra)" />
<language ietfCode="cs-CZ" name="Čeština" />
<language ietfCode="cy" name="Cymraeg" />
<language ietfCode="da" name="Dansk" />
<language ietfCode="de" name="Deutsch" />
<language ietfCode="es" name="Español" />
<language ietfCode="fr" name="Français" />
<language ietfCode="hr-HR" name="Hrvatski" />
<language ietfCode="id" name="Indonesia" />
<language ietfCode="it" name="Italiano" />
<language ietfCode="lv" name="Latvijas" />
<language ietfCode="lt" name="Lietuvos" />
<language ietfCode="hu-HU" name="Magyar" />
<language ietfCode="nl-NL" name="Nederlands" />
<language ietfCode="no" name="Norsk" />
<language ietfCode="pl-PL" name="Polski" />
<language ietfCode="pt-PT" name="Português" />
<language ietfCode="pt-BR" name="Português (Brasil)" />
<language ietfCode="ro" name="Română" />
<language ietfCode="sq-AL" name="Shqiptar" />
<language ietfCode="sl-SI" name="Slovenščina" />
<language ietfCode="sk-SK" name="Slovenčina" />
<language ietfCode="fi" name="Suomi" />
<language ietfCode="sv" name="Svenska" />
<language ietfCode="vi" name="Tiếng Việt" />
<language ietfCode="tr-TR" name="Türkçe" />
<language ietfCode="bg-BG" name="български" />
<language ietfCode="ru" name="Русский" />
<language ietfCode="sr" name="српски" />
<language ietfCode="uk" name="Український" />
<language ietfCode="grk" name="Ελληνικά" />
<language ietfCode="he" name="עברית" />
<language ietfCode="ar" name="العربية" />
<language ietfCode="pes-IR" name="فارسی" />
<language ietfCode="ur" name="اردو" />
<language ietfCode="mr" name="मराठी" />
<language ietfCode="si" name="Sඉන්හල" />
<language ietfCode="th-TH" name="ภาษาไทย" />
<language ietfCode="zh-CN" name="中文 (简体)" />
<language ietfCode="zh-TW" name="中文 (繁體)" />
<language ietfCode="ja-JP" name="日本語" />
<language ietfCode="ko" name="한국어" />
</languages>
<?xml version="1.0" encoding="UTF-8" ?>
<languages>
<language ietfCode="en" name="English" />
<language ietfCode="ca-AD" name="Català (Andorra)" />
<language ietfCode="cs-CZ" name="Čeština" />
<language ietfCode="cy" name="Cymraeg" />
<language ietfCode="da" name="Dansk" />
<language ietfCode="de" name="Deutsch" />
<language ietfCode="es" name="Español" />
<language ietfCode="fr" name="Français" />
<language ietfCode="hr-HR" name="Hrvatski" />
<language ietfCode="id" name="Indonesia" />
<language ietfCode="it" name="Italiano" />
<language ietfCode="lv" name="Latvijas" />
<language ietfCode="lt" name="Lietuvos" />
<language ietfCode="hu-HU" name="Magyar" />
<language ietfCode="nl-NL" name="Nederlands" />
<language ietfCode="no" name="Norsk" />
<language ietfCode="pl-PL" name="Polski" />
<language ietfCode="pt-PT" name="Português" />
<language ietfCode="pt-BR" name="Português (Brasil)" />
<language ietfCode="ro" name="Română" />
<language ietfCode="sq-AL" name="Shqiptar" />
<language ietfCode="sl-SI" name="Slovenščina" />
<language ietfCode="sk-SK" name="Slovenčina" />
<language ietfCode="fi" name="Suomi" />
<language ietfCode="sv" name="Svenska" />
<language ietfCode="vi" name="Tiếng Việt" />
<language ietfCode="tr-TR" name="Türkçe" />
<language ietfCode="bg-BG" name="български" />
<language ietfCode="ru" name="Русский" />
<language ietfCode="sr" name="српски" />
<language ietfCode="uk" name="Український" />
<language ietfCode="grk" name="Ελληνικά" />
<language ietfCode="he" name="עברית" />
<language ietfCode="ar" name="العربية" />
<language ietfCode="pes-IR" name="فارسی" />
<language ietfCode="ur" name="اردو" />
<language ietfCode="mr" name="मराठी" />
<language ietfCode="si" name="Sඉන්හල" />
<language ietfCode="th-TH" name="ภาษาไทย" />
<language ietfCode="zh-CN" name="中文 (简体)" />
<language ietfCode="zh-TW" name="中文 (繁體)" />
<language ietfCode="ja-JP" name="日本語" />
<language ietfCode="ko" name="한국어" />
</languages>

View File

@ -905,8 +905,8 @@ To automatically trust this fingerprint for future connections, click Yes. To re
<source>Drag new screens to the grid or move existing ones around.
Drag a screen to the trashcan to delete it.
Double click on a screen to edit its settings.</source>
<translation type="finished">Arrossega noves pantalles a la graella o mou les actuals al voltant.
Arrossega una pantalla a la paperera per eliminar-la.
<translation type="finished">Arrossega noves pantalles a la graella o mou les actuals al voltant.
Arrossega una pantalla a la paperera per eliminar-la.
Fes doble clic a una pantalla per editar la seva configuració.</translation>
</message>
<message>
@ -1335,7 +1335,7 @@ p, li { white-space: pre-wrap; }
Server response:
%1</source>
<translation type="finished">Error inici de sessió, hi ha hagut un error.
<translation type="finished">Error inici de sessió, hi ha hagut un error.
Resposta del servidor:
%1</translation>
</message>

View File

@ -1334,7 +1334,7 @@ p, li { white-space: pre-wrap; }
Server response:
%1</source>
<translation type="finished">Fejl i login, en fejl opstod.
<translation type="finished">Fejl i login, en fejl opstod.
Server svar:
%1</translation>
</message>

View File

@ -1334,7 +1334,7 @@ p, li { white-space: pre-wrap; }
Server response:
%1</source>
<translation type="finished">Inloggen mislukt, er is een fout opgetreden.
<translation type="finished">Inloggen mislukt, er is een fout opgetreden.
Foutmelding:
%1</translation>
</message>

View File

@ -1325,7 +1325,7 @@ p, li { white-space: pre-wrap; }
<source>Login failed, an error occurred.
%1</source>
<translation type="finished">Logowanie nie powiodło się, wystąpił błąd.
<translation type="finished">Logowanie nie powiodło się, wystąpił błąd.
%1</translation>
</message>
<message>
@ -1335,7 +1335,7 @@ p, li { white-space: pre-wrap; }
Server response:
%1</source>
<translation type="finished">Logowanie nie powiodło się, wystąpił błąd.
<translation type="finished">Logowanie nie powiodło się, wystąpił błąd.
Odpowiedź serwera:
%1</translation>
</message>

View File

@ -1325,7 +1325,7 @@ p, li { white-space: pre-wrap; }
<source>Login failed, an error occurred.
%1</source>
<translation type="finished">Войти не удалось, произошла ошибка.
<translation type="finished">Войти не удалось, произошла ошибка.
%1</translation>
</message>
@ -1336,7 +1336,7 @@ p, li { white-space: pre-wrap; }
Server response:
%1</source>
<translation type="finished">Войти не удалось, произошла ошибка.
<translation type="finished">Войти не удалось, произошла ошибка.
Ответ сервера:

View File

@ -905,8 +905,8 @@ To automatically trust this fingerprint for future connections, click Yes. To re
<source>Drag new screens to the grid or move existing ones around.
Drag a screen to the trashcan to delete it.
Double click on a screen to edit its settings.</source>
<translation type="finished">Izgaraya yeni ekranları sürükleyin veya çevresinde mevcut olanları taşıyın.
Silmek için çöp tenekesine ekranı sürükleyin.
<translation type="finished">Izgaraya yeni ekranları sürükleyin veya çevresinde mevcut olanları taşıyın.
Silmek için çöp tenekesine ekranı sürükleyin.
Kendi ayarlarınızı düzenlemek için bir ekran üzerine çift tıklayın.</translation>
</message>
<message>

View File

@ -40,4 +40,3 @@ class AboutDialog : public QDialog, public Ui::AboutDialogBase
};
#endif

View File

@ -164,4 +164,3 @@ QTextStream& operator<<(QTextStream& outStream, const Action& action)
return outStream;
}

View File

@ -211,7 +211,7 @@ void AppConfig::setElevateMode(ElevateMode em) { m_ElevateMode = em; }
void AppConfig::setAutoConfig(bool autoConfig) { m_AutoConfig = autoConfig; }
bool AppConfig::autoConfigPrompted() { return m_AutoConfigPrompted; }
bool AppConfig::autoConfigPrompted() { return m_AutoConfigPrompted; }
void AppConfig::setAutoConfigPrompted(bool prompted) { m_AutoConfigPrompted = prompted; }

View File

@ -44,4 +44,3 @@ const char* BaseConfig::m_SwitchCornerNames[] =
"bottom-left",
"bottom-right"
};

View File

@ -28,7 +28,7 @@ class IpcReader;
class IpcClient : public QObject
{
Q_OBJECT
Q_OBJECT
public:
IpcClient();

View File

@ -54,4 +54,3 @@ class KeySequence
};
#endif

View File

@ -78,4 +78,3 @@ class KeySequenceWidget : public QPushButton
};
#endif

View File

@ -624,7 +624,7 @@ QString MainWindow::configFilename()
if (m_pRadioInternalConfig->isChecked())
{
// TODO: no need to use a temporary file, since we need it to
// be permenant (since it'll be used for Windows services, etc).
// be permanent (since it'll be used for Windows services, etc).
m_pTempConfigFile = new QTemporaryFile();
if (!m_pTempConfigFile->open())
{
@ -729,7 +729,7 @@ void MainWindow::stopBarrier()
void MainWindow::stopService()
{
// send empty command to stop service from laucning anything.
// send empty command to stop service from launching anything.
m_IpcClient.sendCommand("", appConfig().elevateMode());
}
@ -1001,7 +1001,7 @@ bool MainWindow::on_m_pButtonBrowseConfigFile_clicked()
return false;
}
bool MainWindow::on_m_pActionSave_triggered()
bool MainWindow::on_m_pActionSave_triggered()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save configuration as..."), QString(), barrierConfigSaveFilter);

View File

@ -211,4 +211,3 @@ private slots:
};
#endif

View File

@ -1,4 +1,4 @@
/*
/*
* barrier -- mouse and keyboard sharing utility
* Copyright (C) 2012-2016 Symless Ltd.
* Copyright (C) 2008 Volker Lanz (vl@fidra.de)
@ -45,4 +45,3 @@ void NewScreenWidget::mousePressEvent(QMouseEvent* event)
pDrag->exec(Qt::CopyAction, Qt::CopyAction);
}

View File

@ -37,4 +37,3 @@ class NewScreenWidget : public QLabel
};
#endif

View File

@ -44,4 +44,3 @@ class QBarrierApplication : public QApplication
};
#endif

View File

@ -105,4 +105,3 @@ QDataStream& operator<<(QDataStream& outStream, const Screen& screen);
QDataStream& operator>>(QDataStream& inStream, Screen& screen);
#endif

View File

@ -152,4 +152,3 @@ void ScreenSettingsDialog::on_m_pListAliases_itemSelectionChanged()
{
m_pButtonRemoveAlias->setEnabled(!m_pListAliases->selectedItems().isEmpty());
}

View File

@ -50,4 +50,3 @@ class ScreenSettingsDialog : public QDialog, public Ui::ScreenSettingsDialogBase
};
#endif

View File

@ -110,7 +110,7 @@ bool ScreenSetupModel::dropMimeData(const QMimeData* data, Qt::DropAction action
return false;
if (!parent.isValid() || row != -1 || column != -1)
return false;
return false;
QByteArray encodedData = data->data(m_MimeType);
QDataStream stream(&encodedData, QIODevice::ReadOnly);
@ -141,4 +141,3 @@ bool ScreenSetupModel::dropMimeData(const QMimeData* data, Qt::DropAction action
return true;
}

View File

@ -68,4 +68,3 @@ class ScreenSetupModel : public QAbstractTableModel
};
#endif

View File

@ -225,4 +225,3 @@ QStyleOptionViewItem ScreenSetupView::viewOptions() const
option.textElideMode = Qt::ElideMiddle;
return option;
}

View File

@ -58,4 +58,3 @@ class ScreenSetupView : public QTableView
};
#endif

View File

@ -138,4 +138,3 @@ enum {
};
#endif

View File

@ -76,7 +76,7 @@ void ServerConfigDialog::showEvent(QShowEvent* event)
if (!m_Message.isEmpty())
{
// TODO: ideally this massage box should pop up after the dialog is shown
// TODO: ideally this message box should pop up after the dialog is shown
QMessageBox::information(this, tr("Configure server"), m_Message);
}
}

View File

@ -63,4 +63,3 @@ class ServerConfigDialog : public QDialog, public Ui::ServerConfigDialogBase
};
#endif

View File

@ -37,7 +37,7 @@ SetupWizard::SetupWizard(MainWindow& mainWindow, bool startMain) :
#elif defined(Q_OS_WIN)
// when areo is disabled on windows, the next/back buttons
// when aero is disabled on windows, the next/back buttons
// are hidden (must be a qt bug) -- resizing the window
// to +1 of the original height seems to fix this.
// NOTE: calling setMinimumSize after this will break

View File

@ -19,4 +19,3 @@
// included in both the GUI and the child apps (server & client)
const char ShutdownCh = 'S';

View File

@ -106,7 +106,7 @@ void SslCertificate::generateCertificate()
arguments.append("-x509");
arguments.append("-nodes");
// valide duration
// valid duration
arguments.append("-days");
arguments.append(kCertificateLifetime);

View File

@ -22,7 +22,7 @@
class SslCertificate : public QObject
{
Q_OBJECT
Q_OBJECT
public:
explicit SslCertificate(QObject *parent = 0);

View File

@ -40,4 +40,3 @@ void TrashScreenWidget::dropEvent(QDropEvent* event)
else
event->ignore();
}

View File

@ -39,4 +39,3 @@ class TrashScreenWidget : public QLabel
};
#endif

View File

@ -30,4 +30,4 @@ ArchConsoleStd::writeConsole(ELevel level, const char* str)
std::cout << str << std::endl;
std::cout.flush();
}
}

View File

@ -72,7 +72,7 @@ std::string ArchInternetWindows::urlEncode(const std::string& url)
std::string result(buffer);
// the win32 url encoding funcitons are pretty useless (to us) and only
// the win32 url encoding functions are pretty useless (to us) and only
// escape "unsafe" chars, but not + or =, so we need to replace these
// manually (and probably many other chars).
barrier::string::findReplaceAll(result, "+", "%2B");

View File

@ -443,7 +443,7 @@ ArchMiscWindows::wasLaunchedAsService()
bool ArchMiscWindows::getParentProcessName(std::string &name)
{
PROCESSENTRY32 parentEntry;
if (!getParentProcessEntry(parentEntry)){
if (!getParentProcessEntry(parentEntry)) {
LOG((CLOG_ERR "could not get entry for parent process"));
return false;
}

View File

@ -511,4 +511,4 @@ ArchTaskBarWindows::threadEntry(void* self)
HINSTANCE ArchTaskBarWindows::instanceWin32()
{
return ArchMiscWindows::instanceWin32();
}
}

View File

@ -57,58 +57,58 @@ XArchEvalWinsock::eval() const noexcept
// may not look up network error messages correctly. we'll have
// to do it ourself.
static const struct { int m_code; const char* m_msg; } s_netErrorCodes[] = {
/* 10004 */{WSAEINTR, "The (blocking) call was canceled via WSACancelBlockingCall"},
/* 10009 */{WSAEBADF, "Bad file handle"},
/* 10013 */{WSAEACCES, "The requested address is a broadcast address, but the appropriate flag was not set"},
/* 10014 */{WSAEFAULT, "WSAEFAULT"},
/* 10022 */{WSAEINVAL, "WSAEINVAL"},
/* 10024 */{WSAEMFILE, "No more file descriptors available"},
/* 10035 */{WSAEWOULDBLOCK, "Socket is marked as non-blocking and no connections are present or the receive operation would block"},
/* 10036 */{WSAEINPROGRESS, "A blocking Windows Sockets operation is in progress"},
/* 10004 */{WSAEINTR, "The (blocking) call was canceled via WSACancelBlockingCall"},
/* 10009 */{WSAEBADF, "Bad file handle"},
/* 10013 */{WSAEACCES, "The requested address is a broadcast address, but the appropriate flag was not set"},
/* 10014 */{WSAEFAULT, "WSAEFAULT"},
/* 10022 */{WSAEINVAL, "WSAEINVAL"},
/* 10024 */{WSAEMFILE, "No more file descriptors available"},
/* 10035 */{WSAEWOULDBLOCK, "Socket is marked as non-blocking and no connections are present or the receive operation would block"},
/* 10036 */{WSAEINPROGRESS, "A blocking Windows Sockets operation is in progress"},
/* 10037 */{WSAEALREADY, "The asynchronous routine being canceled has already completed"},
/* 10038 */{WSAENOTSOCK, "At least on descriptor is not a socket"},
/* 10039 */{WSAEDESTADDRREQ, "A destination address is required"},
/* 10040 */{WSAEMSGSIZE, "The datagram was too large to fit into the specified buffer and was truncated"},
/* 10041 */{WSAEPROTOTYPE, "The specified protocol is the wrong type for this socket"},
/* 10042 */{WSAENOPROTOOPT, "The option is unknown or unsupported"},
/* 10043 */{WSAEPROTONOSUPPORT,"The specified protocol is not supported"},
/* 10044 */{WSAESOCKTNOSUPPORT,"The specified socket type is not supported by this address family"},
/* 10045 */{WSAEOPNOTSUPP, "The referenced socket is not a type that supports that operation"},
/* 10041 */{WSAEPROTOTYPE, "The specified protocol is the wrong type for this socket"},
/* 10042 */{WSAENOPROTOOPT, "The option is unknown or unsupported"},
/* 10043 */{WSAEPROTONOSUPPORT, "The specified protocol is not supported"},
/* 10044 */{WSAESOCKTNOSUPPORT, "The specified socket type is not supported by this address family"},
/* 10045 */{WSAEOPNOTSUPP, "The referenced socket is not a type that supports that operation"},
/* 10046 */{WSAEPFNOSUPPORT, "BSD: Protocol family not supported"},
/* 10047 */{WSAEAFNOSUPPORT, "The specified address family is not supported"},
/* 10048 */{WSAEADDRINUSE, "The specified address is already in use"},
/* 10049 */{WSAEADDRNOTAVAIL, "The specified address is not available from the local machine"},
/* 10048 */{WSAEADDRINUSE, "The specified address is already in use"},
/* 10049 */{WSAEADDRNOTAVAIL, "The specified address is not available from the local machine"},
/* 10050 */{WSAENETDOWN, "The Windows Sockets implementation has detected that the network subsystem has failed"},
/* 10051 */{WSAENETUNREACH, "The network can't be reached from this host at this time"},
/* 10052 */{WSAENETRESET, "The connection must be reset because the Windows Sockets implementation dropped it"},
/* 10051 */{WSAENETUNREACH, "The network can't be reached from this host at this time"},
/* 10052 */{WSAENETRESET, "The connection must be reset because the Windows Sockets implementation dropped it"},
/* 10053 */{WSAECONNABORTED, "The virtual circuit was aborted due to timeout or other failure"},
/* 10054 */{WSAECONNRESET, "The virtual circuit was reset by the remote side"},
/* 10055 */{WSAENOBUFS, "No buffer space is available or a buffer deadlock has occured. The socket cannot be created"},
/* 10056 */{WSAEISCONN, "The socket is already connected"},
/* 10054 */{WSAECONNRESET, "The virtual circuit was reset by the remote side"},
/* 10055 */{WSAENOBUFS, "No buffer space is available or a buffer deadlock has occurred. The socket cannot be created"},
/* 10056 */{WSAEISCONN, "The socket is already connected"},
/* 10057 */{WSAENOTCONN, "The socket is not connected"},
/* 10058 */{WSAESHUTDOWN, "The socket has been shutdown"},
/* 10058 */{WSAESHUTDOWN, "The socket has been shutdown"},
/* 10059 */{WSAETOOMANYREFS, "BSD: Too many references"},
/* 10060 */{WSAETIMEDOUT, "Attempt to connect timed out without establishing a connection"},
/* 10060 */{WSAETIMEDOUT, "Attempt to connect timed out without establishing a connection"},
/* 10061 */{WSAECONNREFUSED, "Connection was refused"},
/* 10062 */{WSAELOOP, "Undocumented WinSock error code used in BSD"},
/* 10062 */{WSAELOOP, "Undocumented WinSock error code used in BSD"},
/* 10063 */{WSAENAMETOOLONG, "Undocumented WinSock error code used in BSD"},
/* 10064 */{WSAEHOSTDOWN, "Undocumented WinSock error code used in BSD"},
/* 10064 */{WSAEHOSTDOWN, "Undocumented WinSock error code used in BSD"},
/* 10065 */{WSAEHOSTUNREACH, "No route to host"},
/* 10066 */{WSAENOTEMPTY, "Undocumented WinSock error code"},
/* 10066 */{WSAENOTEMPTY, "Undocumented WinSock error code"},
/* 10067 */{WSAEPROCLIM, "Undocumented WinSock error code"},
/* 10068 */{WSAEUSERS, "Undocumented WinSock error code"},
/* 10069 */{WSAEDQUOT, "Undocumented WinSock error code"},
/* 10070 */{WSAESTALE, "Undocumented WinSock error code"},
/* 10071 */{WSAEREMOTE, "Undocumented WinSock error code"},
/* 10091 */{WSASYSNOTREADY, "Underlying network subsytem is not ready for network communication"},
/* 10092 */{WSAVERNOTSUPPORTED, "The version of WinSock API support requested is not provided in this implementation"},
/* 10093 */{WSANOTINITIALISED, "WinSock subsystem not properly initialized"},
/* 10101 */{WSAEDISCON, "Virtual circuit has gracefully terminated connection"},
/* 11001 */{WSAHOST_NOT_FOUND, "The specified host is unknown"},
/* 11002 */{WSATRY_AGAIN, "A temporary error occurred on an authoritative name server"},
/* 11003 */{WSANO_RECOVERY, "A non-recoverable name server error occurred"},
/* 11004 */{WSANO_DATA, "The requested name is valid but does not have an IP address"},
/* end */{0, NULL}
/* 10068 */{WSAEUSERS, "Undocumented WinSock error code"},
/* 10069 */{WSAEDQUOT, "Undocumented WinSock error code"},
/* 10070 */{WSAESTALE, "Undocumented WinSock error code"},
/* 10071 */{WSAEREMOTE, "Undocumented WinSock error code"},
/* 10091 */{WSASYSNOTREADY, "Underlying network subsystem is not ready for network communication"},
/* 10092 */{WSAVERNOTSUPPORTED, "The version of WinSock API support requested is not provided in this implementation"},
/* 10093 */{WSANOTINITIALISED, "WinSock subsystem not properly initialized"},
/* 10101 */{WSAEDISCON, "Virtual circuit has gracefully terminated connection"},
/* 11001 */{WSAHOST_NOT_FOUND, "The specified host is unknown"},
/* 11002 */{WSATRY_AGAIN, "A temporary error occurred on an authoritative name server"},
/* 11003 */{WSANO_RECOVERY, "A non-recoverable name server error occurred"},
/* 11004 */{WSANO_DATA, "The requested name is valid but does not have an IP address"},
/* end */{0, NULL}
};
for (unsigned int i = 0; s_netErrorCodes[i].m_code != 0; ++i) {

View File

@ -90,7 +90,7 @@ public:
ARCH_APP_UTIL& appUtil() { return m_appUtil; }
virtual IArchTaskBarReceiver* taskBarReceiver() const { return m_taskBarReceiver; }
virtual IArchTaskBarReceiver* taskBarReceiver() const { return m_taskBarReceiver; }
virtual void setByeFunc(void(*bye)(int)) { m_bye = bye; }
virtual void bye(int error) { m_bye(error); }

View File

@ -373,7 +373,7 @@ ArgParser::splitCommandString(String& command, std::vector<String>& argv)
if (space > leftDoubleQuote && space < rightDoubleQuote) {
ignoreThisSpace = true;
}
else if (space > rightDoubleQuote){
else if (space > rightDoubleQuote) {
searchDoubleQuotes(command, leftDoubleQuote, rightDoubleQuote, rightDoubleQuote + 1);
}

View File

@ -56,7 +56,7 @@ public:
//! Deactivate screen saver
/*!
Deactivate (i.e. hide) the screen saver, reseting the screen saver
Deactivate (i.e. hide) the screen saver, resetting the screen saver
timer.
*/
virtual void deactivate() = 0;

View File

@ -267,8 +267,8 @@ extern const char* kMsgDSetOptions;
// 2 means the file transfer is finished.
extern const char* kMsgDFileTransfer;
// drag infomation: primary <-> secondary
// transfer drag infomation. The first 2 bytes are used for storing
// drag information: primary <-> secondary
// transfer drag information. The first 2 bytes are used for storing
// the number of dragging objects. Then the following string consists
// of each object's directory.
extern const char* kMsgDDragInfo;

View File

@ -62,7 +62,7 @@ Log::Log()
{
assert(s_log == NULL);
// other initalization
// other initialization
m_maxPriority = g_defaultMaxPriority;
m_maxNewlineLength = 0;
insert(new ConsoleLogOutputter);

View File

@ -119,7 +119,7 @@ public:
*/
NetworkAddress getServerAddress() const;
//! Return true if recieved file size is valid
//! Return true if received file size is valid
bool isReceivedFileSizeValid();
//! Return expected file size

View File

@ -45,7 +45,7 @@ const std::string& DataDirectories::global(const std::string& path)
const std::string& DataDirectories::systemconfig()
{
// systemconfig() is a special case in that it will track the current value
// of global() unless and until it is explictly set otherwise
// of global() unless and until it is explicitly set otherwise
// previously it would default to the windows folder which was horrible!
if (_systemconfig.empty())
return global();

View File

@ -25,7 +25,7 @@ class IJob;
//! Thread handle
/*!
Creating a Thread creates a new context of execution (i.e. thread) that
runs simulatenously with the calling thread. A Thread is only a handle
runs simultaneously with the calling thread. A Thread is only a handle
to a thread; deleting a Thread does not cancel or destroy the thread it
refers to and multiple Thread objects can refer to the same thread.
@ -122,7 +122,7 @@ public:
/*!
Change the priority of the thread. Normal priority is 0, 1 is
the next lower, etc. -1 is the next higher, etc. but boosting
the priority may not be permitted and will be silenty ignored.
the priority may not be permitted and will be silently ignored.
*/
void setPriority(int n);

View File

@ -43,7 +43,7 @@ public:
If \c hostname can be parsed as a numerical address then that's how
it's used, otherwise it's used as a host name. If \c hostname ends
in ":[0-9]+" then that suffix is extracted and used as the port,
overridding the port parameter. The resulting port must be a valid
overriding the port parameter. The resulting port must be a valid
port number (zero is not a valid port number) otherwise \c XSocketAddress
is thrown with an error of \c XSocketAddress::kBadPort. The hostname
is not resolved by the c'tor; use \c resolve to do that.

View File

@ -24,7 +24,7 @@ class IEventQueue;
class SocketMultiplexer;
class IDataSocket;
class SecureListenSocket : public TCPListenSocket{
class SecureListenSocket : public TCPListenSocket {
public:
SecureListenSocket(IEventQueue* events,
SocketMultiplexer* socketMultiplexer,

View File

@ -658,7 +658,7 @@ SecureSocket::disconnect()
void SecureSocket::formatFingerprint(std::string& fingerprint, bool hex, bool separator)
{
if (hex) {
// to hexidecimal
// to hexadecimal
barrier::string::toHex(fingerprint, 2);
}
@ -666,7 +666,7 @@ void SecureSocket::formatFingerprint(std::string& fingerprint, bool hex, bool se
barrier::string::uppercase(fingerprint);
if (separator) {
// add colon to separate each 2 charactors
// add colon to separate each 2 characters
size_t separators = fingerprint.size() / 2;
for (size_t i = 1; i < separators; i++) {
fingerprint.insert(i * 3 - 1, ":");
@ -830,7 +830,7 @@ SecureSocket::showSecureCipherInfo()
}
#if OPENSSL_VERSION_NUMBER < 0x10100000L
// m_ssl->m_ssl->session->ciphers is not forward compatable,
// m_ssl->m_ssl->session->ciphers is not forward compatible,
// In future release of OpenSSL, it's not visible,
STACK_OF(SSL_CIPHER) * cStack = m_ssl->m_ssl->session->ciphers;
#else

View File

@ -33,4 +33,4 @@ public:
virtual ~IMSWindowsClipboardFacade() { }
};
#endif
#endif

View File

@ -50,4 +50,4 @@ static void add_key(const char * const buffer, std::vector<DWORD> &keys)
}
}
return true;
}
}

View File

@ -803,7 +803,7 @@ MSWindowsDesks::checkDesk()
// if active desktop changed then tell the old and new desk threads
// about the change. don't switch desktops when the screensaver is
// active becaue we'd most likely switch to the screensaver desktop
// active because we'd most likely switch to the screensaver desktop
// which would have the side effect of forcing the screensaver to
// stop.
if (name != m_activeDeskName && !m_screensaver->isActive()) {

View File

@ -30,4 +30,4 @@ bool WindowsHookResource::unset()
}
bool WindowsHookResource::is_set() const { return _hook != NULL; }
WindowsHookResource::operator HHOOK() const { return _hook; }
WindowsHookResource::operator HHOOK() const { return _hook; }

View File

@ -17,4 +17,4 @@ public:
private:
HHOOK _hook;
};
};

View File

@ -1330,7 +1330,7 @@ MSWindowsKeyState::getKeyID(UINT virtualKey, KeyButton button) const
if ((LOWORD(m_keyLayout) & 0xffffu) == 0x0412u) { // 0x0412 : Korean Locale ID
if (virtualKey == VK_HANGUL || virtualKey == VK_HANJA) {
// If shift-space is used to change the input mode,
// the extented bit is not set. So add it to get right key id.
// the extended bit is not set. So add it to get right key id.
button |= 0x100u;
}
}

View File

@ -94,7 +94,7 @@ MSWindowsSession::isProcessInSession(const char* name, PHANDLE process = NULL)
}
std::string nameListJoin;
for(std::list<std::string>::iterator it = nameList.begin();
for (std::list<std::string>::iterator it = nameList.begin();
it != nameList.end(); it++) {
nameListJoin.append(*it);
nameListJoin.append(", ");

View File

@ -81,7 +81,7 @@ private:
//! Relauncher error
/*!
An error occured in the process watchdog.
An error occurred in the process watchdog.
*/
class XMSWindowsWatchdogError : public XBarrier {
public:

View File

@ -52,7 +52,7 @@ OSXClipboard::OSXClipboard() :
OSStatus syncErr = PasteboardSynchronize(m_pboard);
if (syncErr != noErr) {
LOG((CLOG_DEBUG "failed to syncronize clipboard: error %i", syncErr));
LOG((CLOG_DEBUG "failed to synchronize clipboard: error %i", syncErr));
}
}

View File

@ -30,9 +30,9 @@ void
runCocoaApp()
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
[NSApplication sharedApplication];
NSWindow* window = [[NSWindow alloc]
initWithContentRect: NSMakeRect(0, 0, 3, 3)
styleMask: NSBorderlessWindowMask
@ -41,16 +41,16 @@ runCocoaApp()
[window setTitle: @""];
[window setAlphaValue:0.1];
[window makeKeyAndOrderFront:nil];
OSXDragView* dragView = [[OSXDragView alloc] initWithFrame:NSMakeRect(0, 0, 3, 3)];
g_dragWindow = window;
g_dragView = dragView;
[window setContentView: dragView];
NSLog(@"starting cocoa loop");
[NSApp run];
NSLog(@"cocoa: release");
[pool release];
}
@ -65,25 +65,25 @@ void
fakeDragging(const char* str, int cursorX, int cursorY)
{
g_ext = [NSString stringWithUTF8String:str];
dispatch_async(dispatch_get_main_queue(), ^{
NSRect screen = [[NSScreen mainScreen] frame];
NSLog ( @"screen size: witdh = %f height = %f", screen.size.width, screen.size.height);
NSLog ( @"screen size: width = %f height = %f", screen.size.width, screen.size.height);
NSLog ( @"mouseLocation: %d %d", cursorX, cursorY);
int newPosX = 0;
int newPosY = 0;
newPosX = cursorX - 1;
newPosY = screen.size.height - cursorY - 1;
NSRect rect = NSMakeRect(newPosX, newPosY, 3, 3);
NSLog ( @"newPosX: %d", newPosX);
NSLog ( @"newPosY: %d", newPosY);
[g_dragWindow setFrame:rect display:NO];
[g_dragWindow makeKeyAndOrderFront:nil];
[NSApp activateIgnoringOtherApps:YES];
[g_dragView setFileExt:g_ext];
CGEventRef down = CGEventCreateMouseEvent(CGEventSourceCreate(kCGEventSourceStateHIDSystemState), kCGEventLeftMouseDown, CGPointMake(cursorX, cursorY), kCGMouseButtonLeft);

View File

@ -2,11 +2,11 @@
* barrier -- mouse and keyboard sharing utility
* Copyright (C) 2012-2016 Symless Ltd.
* Copyright (C) 2004 Chris Schoeneman
*
*
* This package is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* found in the file LICENSE that should have accompanied this file.
*
*
* This package 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
@ -110,10 +110,10 @@ OSXScreen::OSXScreen(IEventQueue* events, bool isPrimary, bool autoShowHideCurso
updateScreenShape(m_displayID, 0);
m_screensaver = new OSXScreenSaver(m_events, getEventTarget());
m_keyState = new OSXKeyState(m_events);
// only needed when running as a server.
if (m_isPrimary) {
#if defined(MAC_OS_X_VERSION_10_9)
// we can't pass options to show the dialog, this must be done by the gui.
if (!AXIsProcessTrusted()) {
@ -126,7 +126,7 @@ OSXScreen::OSXScreen(IEventQueue* events, bool isPrimary, bool autoShowHideCurso
}
#endif
}
// install display manager notification handler
CGDisplayRegisterReconfigurationCallback(displayReconfigurationCallback, this);
@ -166,7 +166,7 @@ OSXScreen::OSXScreen(IEventQueue* events, bool isPrimary, bool autoShowHideCurso
if (m_switchEventHandlerRef != 0) {
RemoveEventHandler(m_switchEventHandlerRef);
}
CGDisplayRemoveReconfigurationCallback(displayReconfigurationCallback, this);
delete m_keyState;
@ -217,7 +217,7 @@ OSXScreen::~OSXScreen()
delete m_keyState;
delete m_screensaver;
#if defined(MAC_OS_X_VERSION_10_7)
delete m_carbonLoopMutex;
delete m_carbonLoopReady;
@ -273,7 +273,7 @@ OSXScreen::warpCursor(SInt32 x, SInt32 y)
pos.x = x;
pos.y = y;
CGWarpMouseCursorPosition(pos);
// save new cursor position
m_xCursor = x;
m_yCursor = y;
@ -325,7 +325,7 @@ OSXScreen::registerHotKey(KeyID key, KeyModifierMask mask)
LOG((CLOG_DEBUG "could not map hotkey id=%04x mask=%04x", key, mask));
return 0;
}
// choose hotkey id
UInt32 id;
if (!m_oldHotKeyIDs.empty()) {
@ -351,7 +351,7 @@ OSXScreen::registerHotKey(KeyID key, KeyModifierMask mask)
}
else {
EventHotKeyID hkid = { 'SNRG', (UInt32)id };
OSStatus status = RegisterEventHotKey(macKey, macMask, hkid,
OSStatus status = RegisterEventHotKey(macKey, macMask, hkid,
GetApplicationEventTarget(), 0,
&ref);
okay = (status == noErr);
@ -366,7 +366,7 @@ OSXScreen::registerHotKey(KeyID key, KeyModifierMask mask)
}
m_hotKeys.insert(std::make_pair(id, HotKeyItem(ref, macKey, macMask)));
LOG((CLOG_DEBUG "registered hotkey %s (id=%04x mask=%04x) as id=%d", barrier::KeyMap::formatKey(key, mask).c_str(), key, mask, id));
return id;
}
@ -468,7 +468,7 @@ OSXScreen::postMouseEvent(CGPoint& pos) const
}
}
}
CGEventType type = kCGEventMouseMoved;
SInt8 button = m_buttonState.getFirstButtonDown();
@ -478,10 +478,10 @@ OSXScreen::postMouseEvent(CGPoint& pos) const
}
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, static_cast<CGMouseButton>(button));
// Dragging events also need the click state
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
// Fix for sticky keys
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
CGEventSetFlags(event, modifiers);
@ -503,7 +503,7 @@ OSXScreen::postMouseEvent(CGPoint& pos) const
CGEventSetDoubleValueField(event, kCGMouseEventDeltaY, deltaFY);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
}
@ -515,7 +515,7 @@ OSXScreen::fakeMouseButton(ButtonID id, bool press)
if (index >= NumButtonIDs) {
return;
}
CGPoint pos;
if (!m_cursorPosValid) {
SInt32 x, y;
@ -533,55 +533,55 @@ OSXScreen::fakeMouseButton(ButtonID id, bool press)
// since we don't have double click distance in NX APIs
// we define our own defaults.
const double maxDiff = sqrt(2) + 0.0001;
double clickTime = [NSEvent doubleClickInterval];
// As long as the click is within the time window and distance window
// increase clickState (double click, triple click, etc)
// This will allow for higher than triple click but the quartz documenation
// This will allow for higher than triple click but the quartz documentation
// does not specify that this should be limited to triple click
if (press) {
if ((ARCH->time() - m_lastClickTime) <= clickTime && diff <= maxDiff){
if ((ARCH->time() - m_lastClickTime) <= clickTime && diff <= maxDiff) {
m_clickState++;
}
else {
m_clickState = 1;
}
m_lastClickTime = ARCH->time();
}
if (m_clickState == 1){
if (m_clickState == 1) {
m_lastSingleClickXCursor = m_xCursor;
m_lastSingleClickYCursor = m_yCursor;
}
EMouseButtonState state = press ? kMouseButtonDown : kMouseButtonUp;
LOG((CLOG_DEBUG1 "faking mouse button id: %d press: %s", index, press ? "pressed" : "released"));
MouseButtonEventMapType thisButtonMap = MouseButtonEventMap[index];
CGEventType type = thisButtonMap[state];
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, static_cast<CGMouseButton>(index));
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
// Fix for sticky keys
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
CGEventSetFlags(event, modifiers);
m_buttonState.set(index, state);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
if (!press && (id == kButtonLeft)) {
if (m_fakeDraggingStarted) {
m_getDropTargetThread = new Thread(new TMethodJob<OSXScreen>(
this, &OSXScreen::getDropTargetThread));
}
m_draggingStarted = false;
}
}
@ -591,21 +591,21 @@ OSXScreen::getDropTargetThread(void*)
{
#if defined(MAC_OS_X_VERSION_10_7)
char* cstr = NULL;
// wait for 5 secs for the drop destinaiton string to be filled.
UInt32 timeout = ARCH->time() + 5;
while (ARCH->time() < timeout) {
CFStringRef cfstr = getCocoaDropTarget();
cstr = CFStringRefToUTF8String(cfstr);
CFRelease(cfstr);
if (cstr != NULL) {
break;
}
ARCH->sleep(.1f);
}
if (cstr != NULL) {
LOG((CLOG_DEBUG "drop target: %s", cstr));
m_dropTarget = cstr;
@ -626,12 +626,12 @@ OSXScreen::fakeMouseMove(SInt32 x, SInt32 y)
if (m_fakeDraggingStarted) {
m_buttonState.set(0, kMouseButtonDown);
}
// index 0 means left mouse button
if (m_buttonState.test(0)) {
m_draggingStarted = true;
}
// synthesize event
CGPoint pos;
pos.x = x;
@ -679,11 +679,11 @@ OSXScreen::fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const
NULL, kCGScrollEventUnitLine, 2,
mapScrollWheelFromBarrier(yDelta),
-mapScrollWheelFromBarrier(xDelta));
// Fix for sticky keys
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
CGEventSetFlags(scrollEvent, modifiers);
CGEventPost(kCGHIDEventTap, scrollEvent);
CFRelease(scrollEvent);
}
@ -754,11 +754,11 @@ OSXScreen::enable()
if (m_isPrimary) {
// FIXME -- start watching jump zones
// kCGEventTapOptionDefault = 0x00000000 (Missing in 10.4, so specified literally)
m_eventTapPort = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault,
kCGEventMaskForAllEvents,
handleCGInputEvent,
kCGEventMaskForAllEvents,
handleCGInputEvent,
this);
}
else {
@ -773,10 +773,10 @@ OSXScreen::enable()
// there may be a better way to do this, but we register an event handler even if we're
// not on the primary display (acting as a client). This way, if a local event comes in
// (either keyboard or mouse), we can make sure to show the cursor if we've hidden it.
// (either keyboard or mouse), we can make sure to show the cursor if we've hidden it.
m_eventTapPort = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault,
kCGEventMaskForAllEvents,
handleCGInputEventSecondary,
kCGEventMaskForAllEvents,
handleCGInputEventSecondary,
this);
}
@ -798,9 +798,9 @@ OSXScreen::disable()
if (m_autoShowHideCursor) {
showCursor();
}
// FIXME -- stop watching jump zones, stop capturing input
if (m_eventTapRLSR) {
CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_eventTapRLSR, kCFRunLoopDefaultMode);
CFRelease(m_eventTapRLSR);
@ -846,7 +846,7 @@ OSXScreen::enter()
io_registry_entry_t entry = IORegistryEntryFromPath(
kIOMasterPortDefault,
"IOService:/IOResources/IODisplayWrangler");
if (entry != MACH_PORT_NULL) {
IORegistryEntrySetCFProperty(entry, CFSTR("IORequestIdle"), kCFBooleanFalse);
IOObjectRelease(entry);
@ -863,15 +863,15 @@ bool
OSXScreen::leave()
{
hideCursor();
if (isDraggingStarted()) {
String& fileList = getDraggingFilename();
if (!m_isPrimary) {
if (fileList.empty() == false) {
ClientApp& app = ClientApp::instance();
Client* client = app.getClientPtr();
DragInformation di;
di.setFilename(fileList);
DragFileList dragFileList;
@ -881,7 +881,7 @@ OSXScreen::leave()
dragFileList, info);
client->sendDragInfo(fileCount, info, info.size());
LOG((CLOG_DEBUG "send dragging file to server"));
// TODO: what to do with multiple file or even
// a folder
client->sendFileToServer(fileList.c_str());
@ -889,7 +889,7 @@ OSXScreen::leave()
}
m_draggingStarted = false;
}
if (m_isPrimary) {
avoidHesitatingCursor();
@ -906,8 +906,8 @@ OSXScreen::setClipboard(ClipboardID, const IClipboard* src)
{
if (src != NULL) {
LOG((CLOG_DEBUG "setting clipboard"));
Clipboard::copy(&m_pasteboard, src);
}
Clipboard::copy(&m_pasteboard, src);
}
return true;
}
@ -1036,16 +1036,16 @@ OSXScreen::handleSystemEvent(const Event& event, void*)
}
break;
case kEventClassKeyboard:
case kEventClassKeyboard:
switch (GetEventKind(*carbonEvent)) {
case kEventHotKeyPressed:
case kEventHotKeyReleased:
onHotKey(*carbonEvent);
break;
}
break;
case kEventClassWindow:
// 2nd param was formerly GetWindowEventTarget(m_userInputWindow) which is 32-bit only,
// however as m_userInputWindow is never initialized to anything we can take advantage of
@ -1076,7 +1076,7 @@ OSXScreen::handleSystemEvent(const Event& event, void*)
}
}
bool
bool
OSXScreen::onMouseMove(CGFloat mx, CGFloat my)
{
LOG((CLOG_DEBUG2 "mouse move %+f,%+f", mx, my));
@ -1140,7 +1140,7 @@ OSXScreen::onMouseMove(CGFloat mx, CGFloat my)
return true;
}
bool
bool
OSXScreen::onMouseButton(bool pressed, UInt16 macButton)
{
// Buttons 2 and 3 are inverted on the mac
@ -1176,7 +1176,7 @@ OSXScreen::onMouseButton(bool pressed, UInt16 macButton)
}
}
}
if (macButton == kButtonLeft) {
EMouseButtonState state = pressed ? kMouseButtonDown : kMouseButtonUp;
m_buttonState.set(kButtonLeft - 1, state);
@ -1189,7 +1189,7 @@ OSXScreen::onMouseButton(bool pressed, UInt16 macButton)
m_getDropTargetThread = new Thread(new TMethodJob<OSXScreen>(
this, &OSXScreen::getDropTargetThread));
}
m_draggingStarted = false;
}
}
@ -1218,16 +1218,16 @@ OSXScreen::displayReconfigurationCallback(CGDirectDisplayID displayID, CGDisplay
// Closing or opening the lid when an external monitor is
// connected causes an kCGDisplayBeginConfigurationFlag event
CGDisplayChangeSummaryFlags mask = kCGDisplayBeginConfigurationFlag | kCGDisplayMovedFlag |
kCGDisplaySetModeFlag | kCGDisplayAddFlag | kCGDisplayRemoveFlag |
kCGDisplayEnabledFlag | kCGDisplayDisabledFlag |
kCGDisplayMirrorFlag | kCGDisplayUnMirrorFlag |
CGDisplayChangeSummaryFlags mask = kCGDisplayBeginConfigurationFlag | kCGDisplayMovedFlag |
kCGDisplaySetModeFlag | kCGDisplayAddFlag | kCGDisplayRemoveFlag |
kCGDisplayEnabledFlag | kCGDisplayDisabledFlag |
kCGDisplayMirrorFlag | kCGDisplayUnMirrorFlag |
kCGDisplayDesktopShapeChangedFlag;
LOG((CLOG_DEBUG1 "event: display was reconfigured: %x %x %x", flags, mask, flags & mask));
if (flags & mask) { /* Something actually did change */
LOG((CLOG_DEBUG1 "event: screen changed shape; refreshing dimensions"));
screen->updateScreenShape(displayID, flags);
}
@ -1274,7 +1274,7 @@ OSXScreen::onKey(CGEventRef event)
m_activeModifierHotKeyMask = 0;
}
}
return true;
}
@ -1342,7 +1342,7 @@ OSXScreen::onKey(CGEventRef event)
}
void
OSXScreen::onMediaKey(CGEventRef event)
OSXScreen::onMediaKey(CGEventRef event)
{
KeyID keyID;
bool down;
@ -1405,7 +1405,7 @@ OSXScreen::mapBarrierButtonToMac(UInt16 button) const
return static_cast<ButtonID>(button);
}
ButtonID
ButtonID
OSXScreen::mapMacButtonToBarrier(UInt16 macButton) const
{
switch (macButton) {
@ -1418,7 +1418,7 @@ OSXScreen::mapMacButtonToBarrier(UInt16 macButton) const
case 3:
return kButtonMiddle;
}
return static_cast<ButtonID>(macButton);
}
@ -1445,8 +1445,8 @@ OSXScreen::getScrollSpeed() const
double scaling = 0.0;
CFPropertyListRef pref = ::CFPreferencesCopyValue(
CFSTR("com.apple.scrollwheel.scaling") ,
kCFPreferencesAnyApplication,
CFSTR("com.apple.scrollwheel.scaling") ,
kCFPreferencesAnyApplication,
kCFPreferencesCurrentUser,
kCFPreferencesAnyHost);
if (pref != NULL) {
@ -1535,7 +1535,7 @@ OSXScreen::updateScreenShape()
if (CGGetActiveDisplayList(0, NULL, &displayCount) != CGDisplayNoErr) {
return;
}
if (displayCount == 0) {
return;
}
@ -1579,13 +1579,13 @@ OSXScreen::updateScreenShape()
(displayCount == 1) ? "display" : "displays"));
}
#pragma mark -
#pragma mark -
//
// FAST USER SWITCH NOTIFICATION SUPPORT
//
// OSXScreen::userSwitchCallback(void*)
//
//
// gets called if a fast user switch occurs
//
@ -1611,14 +1611,14 @@ OSXScreen::userSwitchCallback(EventHandlerCallRef nextHandler,
return (CallNextEventHandler(nextHandler, theEvent));
}
#pragma mark -
#pragma mark -
//
// SLEEP/WAKEUP NOTIFICATION SUPPORT
//
// OSXScreen::watchSystemPowerThread(void*)
//
// main of thread monitoring system power (sleep/wakup) using a CFRunLoop
//
// main of thread monitoring system power (sleep/wakeup) using a CFRunLoop
//
void
@ -1641,7 +1641,7 @@ OSXScreen::watchSystemPowerThread(void*)
CFRunLoopAddSource(m_pmRunloop, runloopSourceRef,
kCFRunLoopCommonModes);
}
// thread is ready
{
Lock lock(m_pmMutex);
@ -1658,15 +1658,15 @@ OSXScreen::watchSystemPowerThread(void*)
}
LOG((CLOG_DEBUG "started watchSystemPowerThread"));
LOG((CLOG_DEBUG "waiting for event loop"));
m_events->waitForReady();
#if defined(MAC_OS_X_VERSION_10_7)
{
Lock lockCarbon(m_carbonLoopMutex);
if (*m_carbonLoopReady == false) {
// we signalling carbon loop ready before starting
// unless we know how to do it within the loop
LOG((CLOG_DEBUG "signalling carbon loop ready"));
@ -1676,12 +1676,12 @@ OSXScreen::watchSystemPowerThread(void*)
}
}
#endif
// start the run loop
LOG((CLOG_DEBUG "starting carbon loop"));
CFRunLoopRun();
LOG((CLOG_DEBUG "carbon loop has stopped"));
// cleanup
if (notificationPortRef) {
CFRunLoopRemoveSource(m_pmRunloop,
@ -1716,7 +1716,7 @@ OSXScreen::handlePowerChangeRequest(natural_t messageType, void* messageArg)
getEventTarget(), messageArg,
Event::kDontFreeData));
return;
case kIOMessageSystemHasPoweredOn:
LOG((CLOG_DEBUG "system wakeup"));
m_events->addEvent(Event(m_events->forIScreen().resume(),
@ -1742,16 +1742,16 @@ OSXScreen::handleConfirmSleep(const Event& event, void*)
if (m_pmRootPort != 0) {
// deliver suspend event immediately.
m_events->addEvent(Event(m_events->forIScreen().suspend(),
getEventTarget(), NULL,
getEventTarget(), NULL,
Event::kDeliverImmediately));
LOG((CLOG_DEBUG "system will sleep"));
IOAllowPowerChange(m_pmRootPort, messageArg);
}
}
}
#pragma mark -
#pragma mark -
//
// GLOBAL HOTKEY OPERATING MODE SUPPORT (10.3)
@ -1941,7 +1941,7 @@ OSXScreen::handleCGInputEvent(CGEventTapProxy proxy,
case kCGEventMouseMoved:
pos = CGEventGetLocation(event);
screen->onMouseMove(pos.x, pos.y);
// The system ignores our cursor-centering calls if
// we don't return the event. This should be harmless,
// but might register as slight movement to other apps
@ -1980,10 +1980,10 @@ OSXScreen::handleCGInputEvent(CGEventTapProxy proxy,
}
break;
}
LOG((CLOG_DEBUG3 "unknown quartz event type: 0x%02x", type));
}
if (screen->m_isOnScreen) {
return event;
} else {
@ -1992,38 +1992,38 @@ OSXScreen::handleCGInputEvent(CGEventTapProxy proxy,
}
void
OSXScreen::MouseButtonState::set(UInt32 button, EMouseButtonState state)
OSXScreen::MouseButtonState::set(UInt32 button, EMouseButtonState state)
{
bool newState = (state == kMouseButtonDown);
m_buttons.set(button, newState);
}
bool
OSXScreen::MouseButtonState::any()
OSXScreen::MouseButtonState::any()
{
return m_buttons.any();
}
void
OSXScreen::MouseButtonState::reset()
OSXScreen::MouseButtonState::reset()
{
m_buttons.reset();
}
void
OSXScreen::MouseButtonState::overwrite(UInt32 buttons)
OSXScreen::MouseButtonState::overwrite(UInt32 buttons)
{
m_buttons = std::bitset<NumButtonIDs>(buttons);
}
bool
OSXScreen::MouseButtonState::test(UInt32 button) const
OSXScreen::MouseButtonState::test(UInt32 button) const
{
return m_buttons.test(button);
}
SInt8
OSXScreen::MouseButtonState::getFirstButtonDown() const
OSXScreen::MouseButtonState::getFirstButtonDown() const
{
if (m_buttons.any()) {
for (unsigned short button = 0; button < m_buttons.size(); button++) {
@ -2041,7 +2041,7 @@ OSXScreen::CFStringRefToUTF8String(CFStringRef aString)
if (aString == NULL) {
return NULL;
}
CFIndex length = CFStringGetLength(aString);
CFIndex maxSize = CFStringGetMaximumSizeForEncoding(
length,

View File

@ -115,7 +115,7 @@ private:
// the X display
Display* m_display;
// window to receive xscreensaver repsonses
// window to receive xscreensaver responses
Window m_xscreensaverSink;
// the target for the events we generate

View File

@ -1136,9 +1136,9 @@ Server::processOptions()
return;
}
m_switchNeedsShift = false; // it seems if i don't add these
m_switchNeedsShift = false; // it seems if I don't add these
m_switchNeedsControl = false; // lines, the 'reload config' option
m_switchNeedsAlt = false; // doesnt' work correct.
m_switchNeedsAlt = false; // doesn't work correct.
bool newRelativeMoves = m_relativeMoves;
for (Config::ScreenOptions::const_iterator index = options->begin();

View File

@ -167,7 +167,7 @@ public:
*/
void getClients(std::vector<std::string>& list) const;
//! Return true if recieved file size is valid
//! Return true if received file size is valid
bool isReceivedFileSizeValid();
//! Return expected file data size
@ -357,7 +357,7 @@ private:
// force the cursor off of \p client
void forceLeaveClient(BaseClientProxy* client);
// thread funciton for sending file
// thread function for sending file
void sendFileThread(void*);
// thread function for writing file to drop directory