Merge pull request #1297 from a1346054/fixes
Simple maintenance improvements
This commit is contained in:
commit
dd8c2a1a38
|
@ -18,7 +18,7 @@ body:
|
||||||
id: version
|
id: version
|
||||||
attributes:
|
attributes:
|
||||||
label: Version
|
label: Version
|
||||||
description: What version of Barrier are you runnning?
|
description: What version of Barrier are you running?
|
||||||
options:
|
options:
|
||||||
- v2.0.0-RC1
|
- v2.0.0-RC1
|
||||||
- v2.0.0-RC2
|
- v2.0.0-RC2
|
||||||
|
|
61
LICENSE
61
LICENSE
|
@ -3,7 +3,7 @@ Copyright (C) 2012-2016 Symless Ltd.
|
||||||
Copyright (C) 2008-2014 Nick Bolton
|
Copyright (C) 2008-2014 Nick Bolton
|
||||||
Copyright (C) 2002-2014 Chris Schoeneman
|
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.
|
that compiling, linking, and/or using OpenSSL is allowed.
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
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.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
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.
|
||||||
|
|
|
@ -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!
|
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
|
A: Edit your configuration to include the server's ip address manually with
|
||||||
(...)
|
|
||||||
section: options
|
(...)
|
||||||
serverhostname=<AAA.BBB.CCC.DDD>
|
section: options
|
||||||
|
serverhostname=<AAA.BBB.CCC.DDD>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
theme: jekyll-theme-slate
|
theme: jekyll-theme-slate
|
||||||
|
|
|
@ -65,7 +65,7 @@ if exist bin\Debug (
|
||||||
mkdir bin\Release\platforms
|
mkdir bin\Release\platforms
|
||||||
copy %B_QT_FULLPATH%\plugins\platforms\qwindows.dll bin\Release\platforms\ > NUL
|
copy %B_QT_FULLPATH%\plugins\platforms\qwindows.dll bin\Release\platforms\ > NUL
|
||||||
) else (
|
) else (
|
||||||
echo Remember to copy supporting binaries and confiuration files!
|
echo Remember to copy supporting binaries and configuration files!
|
||||||
)
|
)
|
||||||
|
|
||||||
echo Build completed successfully
|
echo Build completed successfully
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
cd "$(dirname $0)" || exit 1
|
cd "$(dirname "$0")" || exit 1
|
||||||
# some environments have cmake v2 as 'cmake' and v3 as 'cmake3'
|
# some environments have cmake v2 as 'cmake' and v3 as 'cmake3'
|
||||||
# check for cmake3 first then fallback to just cmake
|
# check for cmake3 first then fallback to just cmake
|
||||||
B_CMAKE=`type cmake3 2>/dev/null`
|
B_CMAKE=`type cmake3 2>/dev/null`
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
B_CMAKE=`echo $B_CMAKE | cut -d' ' -f3`
|
B_CMAKE=`echo "$B_CMAKE" | cut -d' ' -f3`
|
||||||
else
|
else
|
||||||
B_CMAKE=cmake
|
B_CMAKE=cmake
|
||||||
fi
|
fi
|
||||||
|
@ -26,7 +26,7 @@ B_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=$B_BUILD_TYPE $B_CMAKE_FLAGS"
|
||||||
rm -rf build
|
rm -rf build
|
||||||
mkdir build || exit 1
|
mkdir build || exit 1
|
||||||
cd 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
|
$B_CMAKE $B_CMAKE_FLAGS .. || exit 1
|
||||||
make || exit 1
|
make || exit 1
|
||||||
echo "Build completed successfully"
|
echo "Build completed successfully"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Use the same verbose variable as CMake
|
# Use the same verbose variable as CMake
|
||||||
[ "$VERBOSE" == "1" ] && set -x
|
[ "$VERBOSE" = "1" ] && set -x
|
||||||
|
|
||||||
# Exit on unset variables or pipe errors
|
# Exit on unset variables or pipe errors
|
||||||
set -uo pipefail
|
set -uo pipefail
|
||||||
|
@ -14,10 +14,10 @@ B_BARRIERC="Barrier.app/Contents/MacOS/barrierc"
|
||||||
B_BARRIERS="Barrier.app/Contents/MacOS/barriers"
|
B_BARRIERS="Barrier.app/Contents/MacOS/barriers"
|
||||||
|
|
||||||
# Colorized output
|
# Colorized output
|
||||||
function info() { tput bold; echo "$@" ; tput sgr0 ;}
|
info() { tput bold; echo "$@"; tput sgr0 ; }
|
||||||
function error() { tput bold; tput setaf 1; echo "$@"; tput sgr0 ; }
|
error() { tput bold; tput setaf 1; echo "$@"; tput sgr0 ; }
|
||||||
function success() { tput bold; tput setaf 2; echo "$@"; tput sgr0 ; }
|
success() { tput bold; tput setaf 2; echo "$@"; tput sgr0 ; }
|
||||||
function warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
|
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
|
||||||
|
|
||||||
info "Checking for bundle contents"
|
info "Checking for bundle contents"
|
||||||
if [ ! -d "Barrier.app/Contents" ]; then
|
if [ ! -d "Barrier.app/Contents" ]; then
|
||||||
|
@ -40,7 +40,7 @@ if which -s port ; then
|
||||||
info "MacPorts found, searching for macdeployqt"
|
info "MacPorts found, searching for macdeployqt"
|
||||||
DEPLOYQT="$(port contents qt5-qttools | grep --only --max-count 1 '/.*macdeployqt')"
|
DEPLOYQT="$(port contents qt5-qttools | grep --only --max-count 1 '/.*macdeployqt')"
|
||||||
if [ ! -x "$DEPLOYQT" ]; then
|
if [ ! -x "$DEPLOYQT" ]; then
|
||||||
error Please install package qt5-qttools
|
error "Please install package qt5-qttools"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -50,13 +50,13 @@ if which -s brew ; then
|
||||||
info "Homebrew found, searching for macdeployqt"
|
info "Homebrew found, searching for macdeployqt"
|
||||||
DEPLOYQT="$(brew list qt@5 | grep --only '/.*macdeployqt' | head -1)"
|
DEPLOYQT="$(brew list qt@5 | grep --only '/.*macdeployqt' | head -1)"
|
||||||
if [ ! -x "$DEPLOYQT" ]; then
|
if [ ! -x "$DEPLOYQT" ]; then
|
||||||
error Please install package qt
|
error "Please install package qt"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use macdeployqt to include libraries and create dmg
|
# Use macdeployqt to include libraries and create dmg
|
||||||
if [ "$B_BUILDTYPE" == "Release" ]; then
|
if [ "$B_BUILDTYPE" = "Release" ]; then
|
||||||
info "Building Release disk image (dmg)"
|
info "Building Release disk image (dmg)"
|
||||||
"$DEPLOYQT" Barrier.app -dmg \
|
"$DEPLOYQT" Barrier.app -dmg \
|
||||||
-executable="$B_BARRIERC" \
|
-executable="$B_BARRIERC" \
|
||||||
|
|
|
@ -1,30 +1,30 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# add warning for users running manually
|
# 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 "The scripts build_installer.sh and reref_dylibs.sh have been deprecated."
|
||||||
warn "Please use build_dist.sh instead to deploy using macdeployqt"
|
warn "Please use build_dist.sh instead to deploy using macdeployqt"
|
||||||
|
|
||||||
# change this to rename the installer package
|
# change this to rename the installer package
|
||||||
B_DMG="Barrier-@BARRIER_VERSION@.dmg"
|
B_DMG="Barrier-@BARRIER_VERSION@.dmg"
|
||||||
|
|
||||||
cd "$( dirname '$0' )"
|
cd "$( dirname "$0" )"
|
||||||
OWNDIR="$( pwd )"
|
OWNDIR="$( pwd )"
|
||||||
|
|
||||||
B_REREF_SCRIPT="$OWNDIR/reref_dylibs.sh"
|
B_REREF_SCRIPT="$OWNDIR/reref_dylibs.sh"
|
||||||
if [ ! -x $B_REREF_SCRIPT ]; then
|
if [ ! -x "$B_REREF_SCRIPT" ]; then
|
||||||
echo Missing script: $B_REREF_SCRIPT
|
echo "Missing script: $B_REREF_SCRIPT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# remove any old copies so there's no confusion about whether this
|
# remove any old copies so there's no confusion about whether this
|
||||||
# process completes successfully or not
|
# process completes successfully or not
|
||||||
rm -rf temp.dmg $B_DMG
|
rm -rf temp.dmg "$B_DMG"
|
||||||
|
|
||||||
cd Barrier.app/Contents 2>/dev/null
|
cd Barrier.app/Contents 2>/dev/null
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo Please make sure that the build completed successfully
|
echo "Please make sure that the build completed successfully"
|
||||||
echo before trying to create the installer.
|
echo "before trying to create the installer."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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
|
hdiutil attach temp.dmg -mountpoint mnt || exit 1
|
||||||
cp -r Barrier.app mnt/ || exit 1
|
cp -r Barrier.app mnt/ || exit 1
|
||||||
hdiutil detach 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
|
rm temp.dmg
|
||||||
|
|
||||||
echo "dmg $B_DMB created successfully"
|
echo "dmg $B_DMG created successfully"
|
||||||
|
|
|
@ -5,28 +5,28 @@ B_TARGET=$1
|
||||||
if [ "x$B_TARGET" = "x" ]; then
|
if [ "x$B_TARGET" = "x" ]; then
|
||||||
|
|
||||||
# add warning for users running manually
|
# 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 "The scripts build_installer.sh and reref_dylibs.sh have been deprecated."
|
||||||
warn "Please use build_dist.sh instead to deploy using macdeployqt"
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $(dirname $B_TARGET) || exit 1
|
cd "$(dirname "$B_TARGET")" || exit 1
|
||||||
|
|
||||||
# where to find non-system libraries relative to target's directory.
|
# where to find non-system libraries relative to target's directory.
|
||||||
# the vast majority of the time this should be empty
|
# the vast majority of the time this should be empty
|
||||||
B_REL_PATH=$2
|
B_REL_PATH=$2
|
||||||
|
|
||||||
# we're in target's directory now. trim off the path
|
# 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
|
# 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
|
[ $? -ne 0 ] && exit 1
|
||||||
for B_LIB in $B_LIBS; do
|
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
|
# otool reports barrier as "barrier:" which fails self-reference test below
|
||||||
B_LIB_NAME=${B_LIB_NAME//:}
|
B_LIB_NAME=${B_LIB_NAME//:}
|
||||||
|
|
||||||
|
@ -34,16 +34,16 @@ for B_LIB in $B_LIBS; do
|
||||||
[ "$B_TARGET" = "$B_LIB_NAME" ] && continue
|
[ "$B_TARGET" = "$B_LIB_NAME" ] && continue
|
||||||
|
|
||||||
B_DST=${B_REL_PATH}${B_LIB_NAME}
|
B_DST=${B_REL_PATH}${B_LIB_NAME}
|
||||||
if [ ! -e $B_DST ]; then
|
if [ ! -e "$B_DST" ]; then
|
||||||
cp $B_LIB $B_DST || exit 1
|
cp "$B_LIB" "$B_DST" || exit 1
|
||||||
chmod u+rw $B_DST || exit 1
|
chmod u+rw "$B_DST" || exit 1
|
||||||
# recursively call this script on libraries purposefully not passing
|
# recursively call this script on libraries purposefully not passing
|
||||||
# $B_REL_PATH so that it is only used explicitly
|
# $B_REL_PATH so that it is only used explicitly
|
||||||
$0 $B_DST
|
$0 "$B_DST"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# adjust the target's metadata to point to the local copy
|
# adjust the target's metadata to point to the local copy
|
||||||
# rather than the system-wide copy which would only exist on
|
# rather than the system-wide copy which would only exist on
|
||||||
# a development machine
|
# 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
|
done
|
||||||
|
|
|
@ -47,7 +47,7 @@ section: links
|
||||||
end
|
end
|
||||||
|
|
||||||
# The aliases section is to map the full names of the computers to their logical names used in the screens section
|
# 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
|
section: aliases
|
||||||
# Laptop is actually known as John-Smiths-MacBook-3.local
|
# Laptop is actually known as John-Smiths-MacBook-3.local
|
||||||
John-Smiths-MacBook-3.local:
|
John-Smiths-MacBook-3.local:
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -4,17 +4,17 @@
|
||||||
<plist version="1.0">
|
<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. -->
|
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start barrier client automatically. Make sure you change the IP below. -->
|
||||||
<dict>
|
<dict>
|
||||||
<key>Label</key>
|
<key>Label</key>
|
||||||
<string>org.debauchee.com.barrierc.plist</string>
|
<string>org.debauchee.com.barrierc.plist</string>
|
||||||
<key>OnDemand</key>
|
<key>OnDemand</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>ProgramArguments</key>
|
<key>ProgramArguments</key>
|
||||||
<array>
|
<array>
|
||||||
<string>/usr/bin/barrierc</string>
|
<string>/usr/bin/barrierc</string>
|
||||||
<!-- Replace this IP with the IP of your barriers server -->
|
<!-- Replace this IP with the IP of your barriers server -->
|
||||||
<string>192.168.0.2</string>
|
<string>192.168.0.2</string>
|
||||||
</array>
|
</array>
|
||||||
<key>RunAtLoad</key>
|
<key>RunAtLoad</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
<plist version="1.0">
|
<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 -->
|
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start barrier server automatically. Make sure you change configuration file below -->
|
||||||
<dict>
|
<dict>
|
||||||
<key>Label</key>
|
<key>Label</key>
|
||||||
<string>org.debauchee.com.barriers.plist</string>
|
<string>org.debauchee.com.barriers.plist</string>
|
||||||
<key>OnDemand</key>
|
<key>OnDemand</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>ProgramArguments</key>
|
<key>ProgramArguments</key>
|
||||||
<array>
|
<array>
|
||||||
<string>/usr/bin/barriers</string>
|
<string>/usr/bin/barriers</string>
|
||||||
<string>--no-daemon</string>
|
<string>--no-daemon</string>
|
||||||
<string>--config</string>
|
<string>--config</string>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Checks if directory exists, otherwise asks to install package.
|
# Checks if directory exists, otherwise asks to install package.
|
||||||
function check_dir_exists() {
|
check_dir_exists() {
|
||||||
local path=$1
|
local path=$1
|
||||||
local package=$2
|
local package=$2
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ function check_dir_exists() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ ! $BARRIER_BUILD_ENV ]; then
|
if [ -z "$BARRIER_BUILD_ENV" ]; then
|
||||||
check_dir_exists '/Applications/Xcode.app' 'Xcode'
|
check_dir_exists '/Applications/Xcode.app' 'Xcode'
|
||||||
|
|
||||||
printf "Modifying environment for Barrier build...\n"
|
printf "Modifying environment for Barrier build...\n"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Thank you for chosing Barrier!
|
Thank you for choosing Barrier!
|
||||||
https://github.com/debauchee/barrier/
|
https://github.com/debauchee/barrier/
|
||||||
|
|
||||||
Barrier allows you to share your keyboard and mouse between computers over a network.
|
Barrier allows you to share your keyboard and mouse between computers over a network.
|
||||||
|
|
|
@ -5,6 +5,5 @@ Comment=Keyboard and mouse sharing solution
|
||||||
Exec=barrier
|
Exec=barrier
|
||||||
Icon=barrier
|
Icon=barrier
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Categories=Utility;DesktopUtility;
|
Categories=Utility;RemoteAccess;
|
||||||
Keywords=keyboard;mouse;sharing;network;share;
|
Keywords=keyboard;mouse;sharing;network;share;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
ICNS_BASE=../dist/macos/bundle/Barrier.app/Contents/Resources
|
ICNS_BASE=../dist/macos/bundle/Barrier.app/Contents/Resources
|
||||||
if ! which magick >/dev/null 2>&1; then
|
if ! which magick >/dev/null 2>&1; then
|
||||||
echo "Need ImageMagic for this"
|
echo "Need ImageMagick for this"
|
||||||
exit 10
|
exit 10
|
||||||
fi
|
fi
|
||||||
cd $(dirname $0) || exit $?
|
cd "$(dirname "$0")" || exit $?
|
||||||
if [ ! -r barrier.png ]; then
|
if [ ! -r barrier.png ]; then
|
||||||
echo "Use inkscape (or another vector graphics editor) to create barrier.png from barrier.svg first"
|
echo "Use inkscape (or another vector graphics editor) to create barrier.png from barrier.svg first"
|
||||||
exit 10
|
exit 10
|
||||||
|
@ -12,11 +12,11 @@ fi
|
||||||
rm -rf work || exit $?
|
rm -rf work || exit $?
|
||||||
mkdir -p work || exit $?
|
mkdir -p work || exit $?
|
||||||
for s in 16 24 32 48 64 128 256 512 1024; do
|
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
|
done
|
||||||
# windows icon
|
# windows icon
|
||||||
magick convert work/{16,24,32,48,64,128}.png barrier.png barrier.ico || exit $?
|
magick convert work/{16,24,32,48,64,128}.png barrier.png barrier.ico || exit $?
|
||||||
# macos icon
|
# 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
|
rm -rf work
|
||||||
echo Done
|
echo Done
|
||||||
|
|
|
@ -20,4 +20,3 @@ add_subdirectory(barriers)
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
add_subdirectory(barrierd)
|
add_subdirectory(barrierd)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -46,4 +46,3 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
install (TARGETS barrierc DESTINATION bin)
|
install (TARGETS barrierc DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -66,4 +66,3 @@ createTaskBarReceiver(const BufferedLogOutputter* logBuffer, IEventQueue* events
|
||||||
{
|
{
|
||||||
return new OSXClientTaskBarReceiver(logBuffer, events);
|
return new OSXClientTaskBarReceiver(logBuffer, events);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ BEGIN
|
||||||
VALUE "ProductName", "Barrier"
|
VALUE "ProductName", "Barrier"
|
||||||
VALUE "ProductVersion", BARRIER_VERSION
|
VALUE "ProductVersion", BARRIER_VERSION
|
||||||
VALUE "OriginalFilename", "barrierd.exe"
|
VALUE "OriginalFilename", "barrierd.exe"
|
||||||
VALUE "FileDescription", "Open source KVM software deamon"
|
VALUE "FileDescription", "Open source KVM software daemon"
|
||||||
VALUE "InternalName", "barrierd"
|
VALUE "InternalName", "barrierd"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
|
@ -46,5 +46,3 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
install (TARGETS barriers DESTINATION bin)
|
install (TARGETS barriers DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,46 +1,46 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<languages>
|
<languages>
|
||||||
<language ietfCode="en" name="English" />
|
<language ietfCode="en" name="English" />
|
||||||
<language ietfCode="ca-AD" name="Català (Andorra)" />
|
<language ietfCode="ca-AD" name="Català (Andorra)" />
|
||||||
<language ietfCode="cs-CZ" name="Čeština" />
|
<language ietfCode="cs-CZ" name="Čeština" />
|
||||||
<language ietfCode="cy" name="Cymraeg" />
|
<language ietfCode="cy" name="Cymraeg" />
|
||||||
<language ietfCode="da" name="Dansk" />
|
<language ietfCode="da" name="Dansk" />
|
||||||
<language ietfCode="de" name="Deutsch" />
|
<language ietfCode="de" name="Deutsch" />
|
||||||
<language ietfCode="es" name="Español" />
|
<language ietfCode="es" name="Español" />
|
||||||
<language ietfCode="fr" name="Français" />
|
<language ietfCode="fr" name="Français" />
|
||||||
<language ietfCode="hr-HR" name="Hrvatski" />
|
<language ietfCode="hr-HR" name="Hrvatski" />
|
||||||
<language ietfCode="id" name="Indonesia" />
|
<language ietfCode="id" name="Indonesia" />
|
||||||
<language ietfCode="it" name="Italiano" />
|
<language ietfCode="it" name="Italiano" />
|
||||||
<language ietfCode="lv" name="Latvijas" />
|
<language ietfCode="lv" name="Latvijas" />
|
||||||
<language ietfCode="lt" name="Lietuvos" />
|
<language ietfCode="lt" name="Lietuvos" />
|
||||||
<language ietfCode="hu-HU" name="Magyar" />
|
<language ietfCode="hu-HU" name="Magyar" />
|
||||||
<language ietfCode="nl-NL" name="Nederlands" />
|
<language ietfCode="nl-NL" name="Nederlands" />
|
||||||
<language ietfCode="no" name="Norsk" />
|
<language ietfCode="no" name="Norsk" />
|
||||||
<language ietfCode="pl-PL" name="Polski" />
|
<language ietfCode="pl-PL" name="Polski" />
|
||||||
<language ietfCode="pt-PT" name="Português" />
|
<language ietfCode="pt-PT" name="Português" />
|
||||||
<language ietfCode="pt-BR" name="Português (Brasil)" />
|
<language ietfCode="pt-BR" name="Português (Brasil)" />
|
||||||
<language ietfCode="ro" name="Română" />
|
<language ietfCode="ro" name="Română" />
|
||||||
<language ietfCode="sq-AL" name="Shqiptar" />
|
<language ietfCode="sq-AL" name="Shqiptar" />
|
||||||
<language ietfCode="sl-SI" name="Slovenščina" />
|
<language ietfCode="sl-SI" name="Slovenščina" />
|
||||||
<language ietfCode="sk-SK" name="Slovenčina" />
|
<language ietfCode="sk-SK" name="Slovenčina" />
|
||||||
<language ietfCode="fi" name="Suomi" />
|
<language ietfCode="fi" name="Suomi" />
|
||||||
<language ietfCode="sv" name="Svenska" />
|
<language ietfCode="sv" name="Svenska" />
|
||||||
<language ietfCode="vi" name="Tiếng Việt" />
|
<language ietfCode="vi" name="Tiếng Việt" />
|
||||||
<language ietfCode="tr-TR" name="Türkçe" />
|
<language ietfCode="tr-TR" name="Türkçe" />
|
||||||
<language ietfCode="bg-BG" name="български" />
|
<language ietfCode="bg-BG" name="български" />
|
||||||
<language ietfCode="ru" name="Русский" />
|
<language ietfCode="ru" name="Русский" />
|
||||||
<language ietfCode="sr" name="српски" />
|
<language ietfCode="sr" name="српски" />
|
||||||
<language ietfCode="uk" name="Український" />
|
<language ietfCode="uk" name="Український" />
|
||||||
<language ietfCode="grk" name="Ελληνικά" />
|
<language ietfCode="grk" name="Ελληνικά" />
|
||||||
<language ietfCode="he" name="עברית" />
|
<language ietfCode="he" name="עברית" />
|
||||||
<language ietfCode="ar" name="العربية" />
|
<language ietfCode="ar" name="العربية" />
|
||||||
<language ietfCode="pes-IR" name="فارسی" />
|
<language ietfCode="pes-IR" name="فارسی" />
|
||||||
<language ietfCode="ur" name="اردو" />
|
<language ietfCode="ur" name="اردو" />
|
||||||
<language ietfCode="mr" name="मराठी" />
|
<language ietfCode="mr" name="मराठी" />
|
||||||
<language ietfCode="si" name="Sඉන්හල" />
|
<language ietfCode="si" name="Sඉන්හල" />
|
||||||
<language ietfCode="th-TH" name="ภาษาไทย" />
|
<language ietfCode="th-TH" name="ภาษาไทย" />
|
||||||
<language ietfCode="zh-CN" name="中文 (简体)" />
|
<language ietfCode="zh-CN" name="中文 (简体)" />
|
||||||
<language ietfCode="zh-TW" name="中文 (繁體)" />
|
<language ietfCode="zh-TW" name="中文 (繁體)" />
|
||||||
<language ietfCode="ja-JP" name="日本語" />
|
<language ietfCode="ja-JP" name="日本語" />
|
||||||
<language ietfCode="ko" name="한국어" />
|
<language ietfCode="ko" name="한국어" />
|
||||||
</languages>
|
</languages>
|
||||||
|
|
|
@ -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.
|
<source>Drag new screens to the grid or move existing ones around.
|
||||||
Drag a screen to the trashcan to delete it.
|
Drag a screen to the trashcan to delete it.
|
||||||
Double click on a screen to edit its settings.</source>
|
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.
|
<translation type="finished">Arrossega noves pantalles a la graella o mou les actuals al voltant.
|
||||||
Arrossega una pantalla a la paperera per eliminar-la.
|
Arrossega una pantalla a la paperera per eliminar-la.
|
||||||
Fes doble clic a una pantalla per editar la seva configuració.</translation>
|
Fes doble clic a una pantalla per editar la seva configuració.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
@ -1335,7 +1335,7 @@ p, li { white-space: pre-wrap; }
|
||||||
Server response:
|
Server response:
|
||||||
|
|
||||||
%1</source>
|
%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:
|
Resposta del servidor:
|
||||||
%1</translation>
|
%1</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -1334,7 +1334,7 @@ p, li { white-space: pre-wrap; }
|
||||||
Server response:
|
Server response:
|
||||||
|
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation type="finished">Fejl i login, en fejl opstod.
|
<translation type="finished">Fejl i login, en fejl opstod.
|
||||||
Server svar:
|
Server svar:
|
||||||
%1</translation>
|
%1</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -1334,7 +1334,7 @@ p, li { white-space: pre-wrap; }
|
||||||
Server response:
|
Server response:
|
||||||
|
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation type="finished">Inloggen mislukt, er is een fout opgetreden.
|
<translation type="finished">Inloggen mislukt, er is een fout opgetreden.
|
||||||
Foutmelding:
|
Foutmelding:
|
||||||
%1</translation>
|
%1</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -1325,7 +1325,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<source>Login failed, an error occurred.
|
<source>Login failed, an error occurred.
|
||||||
|
|
||||||
%1</source>
|
%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>
|
%1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
@ -1335,7 +1335,7 @@ p, li { white-space: pre-wrap; }
|
||||||
Server response:
|
Server response:
|
||||||
|
|
||||||
%1</source>
|
%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:
|
Odpowiedź serwera:
|
||||||
%1</translation>
|
%1</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -1325,7 +1325,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<source>Login failed, an error occurred.
|
<source>Login failed, an error occurred.
|
||||||
|
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation type="finished">Войти не удалось, произошла ошибка.
|
<translation type="finished">Войти не удалось, произошла ошибка.
|
||||||
|
|
||||||
%1</translation>
|
%1</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1336,7 +1336,7 @@ p, li { white-space: pre-wrap; }
|
||||||
Server response:
|
Server response:
|
||||||
|
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation type="finished">Войти не удалось, произошла ошибка.
|
<translation type="finished">Войти не удалось, произошла ошибка.
|
||||||
|
|
||||||
Ответ сервера:
|
Ответ сервера:
|
||||||
|
|
||||||
|
|
|
@ -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.
|
<source>Drag new screens to the grid or move existing ones around.
|
||||||
Drag a screen to the trashcan to delete it.
|
Drag a screen to the trashcan to delete it.
|
||||||
Double click on a screen to edit its settings.</source>
|
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.
|
<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.
|
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>
|
Kendi ayarlarınızı düzenlemek için bir ekran üzerine çift tıklayın.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
|
|
@ -40,4 +40,3 @@ class AboutDialog : public QDialog, public Ui::AboutDialogBase
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -164,4 +164,3 @@ QTextStream& operator<<(QTextStream& outStream, const Action& action)
|
||||||
|
|
||||||
return outStream;
|
return outStream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,7 @@ void AppConfig::setElevateMode(ElevateMode em) { m_ElevateMode = em; }
|
||||||
|
|
||||||
void AppConfig::setAutoConfig(bool autoConfig) { m_AutoConfig = autoConfig; }
|
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; }
|
void AppConfig::setAutoConfigPrompted(bool prompted) { m_AutoConfigPrompted = prompted; }
|
||||||
|
|
||||||
|
|
|
@ -44,4 +44,3 @@ const char* BaseConfig::m_SwitchCornerNames[] =
|
||||||
"bottom-left",
|
"bottom-left",
|
||||||
"bottom-right"
|
"bottom-right"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ class IpcReader;
|
||||||
|
|
||||||
class IpcClient : public QObject
|
class IpcClient : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IpcClient();
|
IpcClient();
|
||||||
|
|
|
@ -54,4 +54,3 @@ class KeySequence
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -78,4 +78,3 @@ class KeySequenceWidget : public QPushButton
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -624,7 +624,7 @@ QString MainWindow::configFilename()
|
||||||
if (m_pRadioInternalConfig->isChecked())
|
if (m_pRadioInternalConfig->isChecked())
|
||||||
{
|
{
|
||||||
// TODO: no need to use a temporary file, since we need it to
|
// 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();
|
m_pTempConfigFile = new QTemporaryFile();
|
||||||
if (!m_pTempConfigFile->open())
|
if (!m_pTempConfigFile->open())
|
||||||
{
|
{
|
||||||
|
@ -729,7 +729,7 @@ void MainWindow::stopBarrier()
|
||||||
|
|
||||||
void MainWindow::stopService()
|
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());
|
m_IpcClient.sendCommand("", appConfig().elevateMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1001,7 +1001,7 @@ bool MainWindow::on_m_pButtonBrowseConfigFile_clicked()
|
||||||
return false;
|
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);
|
QString fileName = QFileDialog::getSaveFileName(this, tr("Save configuration as..."), QString(), barrierConfigSaveFilter);
|
||||||
|
|
||||||
|
|
|
@ -211,4 +211,3 @@ private slots:
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* barrier -- mouse and keyboard sharing utility
|
* barrier -- mouse and keyboard sharing utility
|
||||||
* Copyright (C) 2012-2016 Symless Ltd.
|
* Copyright (C) 2012-2016 Symless Ltd.
|
||||||
* Copyright (C) 2008 Volker Lanz (vl@fidra.de)
|
* Copyright (C) 2008 Volker Lanz (vl@fidra.de)
|
||||||
|
@ -45,4 +45,3 @@ void NewScreenWidget::mousePressEvent(QMouseEvent* event)
|
||||||
|
|
||||||
pDrag->exec(Qt::CopyAction, Qt::CopyAction);
|
pDrag->exec(Qt::CopyAction, Qt::CopyAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,4 +37,3 @@ class NewScreenWidget : public QLabel
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -44,4 +44,3 @@ class QBarrierApplication : public QApplication
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -105,4 +105,3 @@ QDataStream& operator<<(QDataStream& outStream, const Screen& screen);
|
||||||
QDataStream& operator>>(QDataStream& inStream, Screen& screen);
|
QDataStream& operator>>(QDataStream& inStream, Screen& screen);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -152,4 +152,3 @@ void ScreenSettingsDialog::on_m_pListAliases_itemSelectionChanged()
|
||||||
{
|
{
|
||||||
m_pButtonRemoveAlias->setEnabled(!m_pListAliases->selectedItems().isEmpty());
|
m_pButtonRemoveAlias->setEnabled(!m_pListAliases->selectedItems().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,4 +50,3 @@ class ScreenSettingsDialog : public QDialog, public Ui::ScreenSettingsDialogBase
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ bool ScreenSetupModel::dropMimeData(const QMimeData* data, Qt::DropAction action
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!parent.isValid() || row != -1 || column != -1)
|
if (!parent.isValid() || row != -1 || column != -1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
QByteArray encodedData = data->data(m_MimeType);
|
QByteArray encodedData = data->data(m_MimeType);
|
||||||
QDataStream stream(&encodedData, QIODevice::ReadOnly);
|
QDataStream stream(&encodedData, QIODevice::ReadOnly);
|
||||||
|
@ -141,4 +141,3 @@ bool ScreenSetupModel::dropMimeData(const QMimeData* data, Qt::DropAction action
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,4 +68,3 @@ class ScreenSetupModel : public QAbstractTableModel
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -225,4 +225,3 @@ QStyleOptionViewItem ScreenSetupView::viewOptions() const
|
||||||
option.textElideMode = Qt::ElideMiddle;
|
option.textElideMode = Qt::ElideMiddle;
|
||||||
return option;
|
return option;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,4 +58,3 @@ class ScreenSetupView : public QTableView
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -138,4 +138,3 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ void ServerConfigDialog::showEvent(QShowEvent* event)
|
||||||
|
|
||||||
if (!m_Message.isEmpty())
|
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);
|
QMessageBox::information(this, tr("Configure server"), m_Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,4 +63,3 @@ class ServerConfigDialog : public QDialog, public Ui::ServerConfigDialogBase
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ SetupWizard::SetupWizard(MainWindow& mainWindow, bool startMain) :
|
||||||
|
|
||||||
#elif defined(Q_OS_WIN)
|
#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
|
// are hidden (must be a qt bug) -- resizing the window
|
||||||
// to +1 of the original height seems to fix this.
|
// to +1 of the original height seems to fix this.
|
||||||
// NOTE: calling setMinimumSize after this will break
|
// NOTE: calling setMinimumSize after this will break
|
||||||
|
|
|
@ -19,4 +19,3 @@
|
||||||
|
|
||||||
// included in both the GUI and the child apps (server & client)
|
// included in both the GUI and the child apps (server & client)
|
||||||
const char ShutdownCh = 'S';
|
const char ShutdownCh = 'S';
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ void SslCertificate::generateCertificate()
|
||||||
arguments.append("-x509");
|
arguments.append("-x509");
|
||||||
arguments.append("-nodes");
|
arguments.append("-nodes");
|
||||||
|
|
||||||
// valide duration
|
// valid duration
|
||||||
arguments.append("-days");
|
arguments.append("-days");
|
||||||
arguments.append(kCertificateLifetime);
|
arguments.append(kCertificateLifetime);
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
class SslCertificate : public QObject
|
class SslCertificate : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SslCertificate(QObject *parent = 0);
|
explicit SslCertificate(QObject *parent = 0);
|
||||||
|
|
|
@ -40,4 +40,3 @@ void TrashScreenWidget::dropEvent(QDropEvent* event)
|
||||||
else
|
else
|
||||||
event->ignore();
|
event->ignore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,4 +39,3 @@ class TrashScreenWidget : public QLabel
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -30,4 +30,4 @@ ArchConsoleStd::writeConsole(ELevel level, const char* str)
|
||||||
std::cout << str << std::endl;
|
std::cout << str << std::endl;
|
||||||
|
|
||||||
std::cout.flush();
|
std::cout.flush();
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ std::string ArchInternetWindows::urlEncode(const std::string& url)
|
||||||
|
|
||||||
std::string result(buffer);
|
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
|
// escape "unsafe" chars, but not + or =, so we need to replace these
|
||||||
// manually (and probably many other chars).
|
// manually (and probably many other chars).
|
||||||
barrier::string::findReplaceAll(result, "+", "%2B");
|
barrier::string::findReplaceAll(result, "+", "%2B");
|
||||||
|
|
|
@ -443,7 +443,7 @@ ArchMiscWindows::wasLaunchedAsService()
|
||||||
bool ArchMiscWindows::getParentProcessName(std::string &name)
|
bool ArchMiscWindows::getParentProcessName(std::string &name)
|
||||||
{
|
{
|
||||||
PROCESSENTRY32 parentEntry;
|
PROCESSENTRY32 parentEntry;
|
||||||
if (!getParentProcessEntry(parentEntry)){
|
if (!getParentProcessEntry(parentEntry)) {
|
||||||
LOG((CLOG_ERR "could not get entry for parent process"));
|
LOG((CLOG_ERR "could not get entry for parent process"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -511,4 +511,4 @@ ArchTaskBarWindows::threadEntry(void* self)
|
||||||
HINSTANCE ArchTaskBarWindows::instanceWin32()
|
HINSTANCE ArchTaskBarWindows::instanceWin32()
|
||||||
{
|
{
|
||||||
return ArchMiscWindows::instanceWin32();
|
return ArchMiscWindows::instanceWin32();
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,58 +57,58 @@ XArchEvalWinsock::eval() const noexcept
|
||||||
// may not look up network error messages correctly. we'll have
|
// may not look up network error messages correctly. we'll have
|
||||||
// to do it ourself.
|
// to do it ourself.
|
||||||
static const struct { int m_code; const char* m_msg; } s_netErrorCodes[] = {
|
static const struct { int m_code; const char* m_msg; } s_netErrorCodes[] = {
|
||||||
/* 10004 */{WSAEINTR, "The (blocking) call was canceled via WSACancelBlockingCall"},
|
/* 10004 */{WSAEINTR, "The (blocking) call was canceled via WSACancelBlockingCall"},
|
||||||
/* 10009 */{WSAEBADF, "Bad file handle"},
|
/* 10009 */{WSAEBADF, "Bad file handle"},
|
||||||
/* 10013 */{WSAEACCES, "The requested address is a broadcast address, but the appropriate flag was not set"},
|
/* 10013 */{WSAEACCES, "The requested address is a broadcast address, but the appropriate flag was not set"},
|
||||||
/* 10014 */{WSAEFAULT, "WSAEFAULT"},
|
/* 10014 */{WSAEFAULT, "WSAEFAULT"},
|
||||||
/* 10022 */{WSAEINVAL, "WSAEINVAL"},
|
/* 10022 */{WSAEINVAL, "WSAEINVAL"},
|
||||||
/* 10024 */{WSAEMFILE, "No more file descriptors available"},
|
/* 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"},
|
/* 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"},
|
/* 10036 */{WSAEINPROGRESS, "A blocking Windows Sockets operation is in progress"},
|
||||||
/* 10037 */{WSAEALREADY, "The asynchronous routine being canceled has already completed"},
|
/* 10037 */{WSAEALREADY, "The asynchronous routine being canceled has already completed"},
|
||||||
/* 10038 */{WSAENOTSOCK, "At least on descriptor is not a socket"},
|
/* 10038 */{WSAENOTSOCK, "At least on descriptor is not a socket"},
|
||||||
/* 10039 */{WSAEDESTADDRREQ, "A destination address is required"},
|
/* 10039 */{WSAEDESTADDRREQ, "A destination address is required"},
|
||||||
/* 10040 */{WSAEMSGSIZE, "The datagram was too large to fit into the specified buffer and was truncated"},
|
/* 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"},
|
/* 10041 */{WSAEPROTOTYPE, "The specified protocol is the wrong type for this socket"},
|
||||||
/* 10042 */{WSAENOPROTOOPT, "The option is unknown or unsupported"},
|
/* 10042 */{WSAENOPROTOOPT, "The option is unknown or unsupported"},
|
||||||
/* 10043 */{WSAEPROTONOSUPPORT,"The specified protocol is not supported"},
|
/* 10043 */{WSAEPROTONOSUPPORT, "The specified protocol is not supported"},
|
||||||
/* 10044 */{WSAESOCKTNOSUPPORT,"The specified socket type is not supported by this address family"},
|
/* 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"},
|
/* 10045 */{WSAEOPNOTSUPP, "The referenced socket is not a type that supports that operation"},
|
||||||
/* 10046 */{WSAEPFNOSUPPORT, "BSD: Protocol family not supported"},
|
/* 10046 */{WSAEPFNOSUPPORT, "BSD: Protocol family not supported"},
|
||||||
/* 10047 */{WSAEAFNOSUPPORT, "The specified address family is not supported"},
|
/* 10047 */{WSAEAFNOSUPPORT, "The specified address family is not supported"},
|
||||||
/* 10048 */{WSAEADDRINUSE, "The specified address is already in use"},
|
/* 10048 */{WSAEADDRINUSE, "The specified address is already in use"},
|
||||||
/* 10049 */{WSAEADDRNOTAVAIL, "The specified address is not available from the local machine"},
|
/* 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"},
|
/* 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"},
|
/* 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"},
|
/* 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"},
|
/* 10053 */{WSAECONNABORTED, "The virtual circuit was aborted due to timeout or other failure"},
|
||||||
/* 10054 */{WSAECONNRESET, "The virtual circuit was reset by the remote side"},
|
/* 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"},
|
/* 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"},
|
/* 10056 */{WSAEISCONN, "The socket is already connected"},
|
||||||
/* 10057 */{WSAENOTCONN, "The socket is not 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"},
|
/* 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"},
|
/* 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"},
|
/* 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"},
|
/* 10065 */{WSAEHOSTUNREACH, "No route to host"},
|
||||||
/* 10066 */{WSAENOTEMPTY, "Undocumented WinSock error code"},
|
/* 10066 */{WSAENOTEMPTY, "Undocumented WinSock error code"},
|
||||||
/* 10067 */{WSAEPROCLIM, "Undocumented WinSock error code"},
|
/* 10067 */{WSAEPROCLIM, "Undocumented WinSock error code"},
|
||||||
/* 10068 */{WSAEUSERS, "Undocumented WinSock error code"},
|
/* 10068 */{WSAEUSERS, "Undocumented WinSock error code"},
|
||||||
/* 10069 */{WSAEDQUOT, "Undocumented WinSock error code"},
|
/* 10069 */{WSAEDQUOT, "Undocumented WinSock error code"},
|
||||||
/* 10070 */{WSAESTALE, "Undocumented WinSock error code"},
|
/* 10070 */{WSAESTALE, "Undocumented WinSock error code"},
|
||||||
/* 10071 */{WSAEREMOTE, "Undocumented WinSock error code"},
|
/* 10071 */{WSAEREMOTE, "Undocumented WinSock error code"},
|
||||||
/* 10091 */{WSASYSNOTREADY, "Underlying network subsytem is not ready for network communication"},
|
/* 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"},
|
/* 10092 */{WSAVERNOTSUPPORTED, "The version of WinSock API support requested is not provided in this implementation"},
|
||||||
/* 10093 */{WSANOTINITIALISED, "WinSock subsystem not properly initialized"},
|
/* 10093 */{WSANOTINITIALISED, "WinSock subsystem not properly initialized"},
|
||||||
/* 10101 */{WSAEDISCON, "Virtual circuit has gracefully terminated connection"},
|
/* 10101 */{WSAEDISCON, "Virtual circuit has gracefully terminated connection"},
|
||||||
/* 11001 */{WSAHOST_NOT_FOUND, "The specified host is unknown"},
|
/* 11001 */{WSAHOST_NOT_FOUND, "The specified host is unknown"},
|
||||||
/* 11002 */{WSATRY_AGAIN, "A temporary error occurred on an authoritative name server"},
|
/* 11002 */{WSATRY_AGAIN, "A temporary error occurred on an authoritative name server"},
|
||||||
/* 11003 */{WSANO_RECOVERY, "A non-recoverable name server error occurred"},
|
/* 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"},
|
/* 11004 */{WSANO_DATA, "The requested name is valid but does not have an IP address"},
|
||||||
/* end */{0, NULL}
|
/* end */{0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (unsigned int i = 0; s_netErrorCodes[i].m_code != 0; ++i) {
|
for (unsigned int i = 0; s_netErrorCodes[i].m_code != 0; ++i) {
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
|
|
||||||
ARCH_APP_UTIL& appUtil() { return m_appUtil; }
|
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 setByeFunc(void(*bye)(int)) { m_bye = bye; }
|
||||||
virtual void bye(int error) { m_bye(error); }
|
virtual void bye(int error) { m_bye(error); }
|
||||||
|
|
|
@ -373,7 +373,7 @@ ArgParser::splitCommandString(String& command, std::vector<String>& argv)
|
||||||
if (space > leftDoubleQuote && space < rightDoubleQuote) {
|
if (space > leftDoubleQuote && space < rightDoubleQuote) {
|
||||||
ignoreThisSpace = true;
|
ignoreThisSpace = true;
|
||||||
}
|
}
|
||||||
else if (space > rightDoubleQuote){
|
else if (space > rightDoubleQuote) {
|
||||||
searchDoubleQuotes(command, leftDoubleQuote, rightDoubleQuote, rightDoubleQuote + 1);
|
searchDoubleQuotes(command, leftDoubleQuote, rightDoubleQuote, rightDoubleQuote + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ public:
|
||||||
|
|
||||||
//! Deactivate screen saver
|
//! 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.
|
timer.
|
||||||
*/
|
*/
|
||||||
virtual void deactivate() = 0;
|
virtual void deactivate() = 0;
|
||||||
|
|
|
@ -267,8 +267,8 @@ extern const char* kMsgDSetOptions;
|
||||||
// 2 means the file transfer is finished.
|
// 2 means the file transfer is finished.
|
||||||
extern const char* kMsgDFileTransfer;
|
extern const char* kMsgDFileTransfer;
|
||||||
|
|
||||||
// drag infomation: primary <-> secondary
|
// drag information: primary <-> secondary
|
||||||
// transfer drag infomation. The first 2 bytes are used for storing
|
// transfer drag information. The first 2 bytes are used for storing
|
||||||
// the number of dragging objects. Then the following string consists
|
// the number of dragging objects. Then the following string consists
|
||||||
// of each object's directory.
|
// of each object's directory.
|
||||||
extern const char* kMsgDDragInfo;
|
extern const char* kMsgDDragInfo;
|
||||||
|
|
|
@ -62,7 +62,7 @@ Log::Log()
|
||||||
{
|
{
|
||||||
assert(s_log == NULL);
|
assert(s_log == NULL);
|
||||||
|
|
||||||
// other initalization
|
// other initialization
|
||||||
m_maxPriority = g_defaultMaxPriority;
|
m_maxPriority = g_defaultMaxPriority;
|
||||||
m_maxNewlineLength = 0;
|
m_maxNewlineLength = 0;
|
||||||
insert(new ConsoleLogOutputter);
|
insert(new ConsoleLogOutputter);
|
||||||
|
|
|
@ -119,7 +119,7 @@ public:
|
||||||
*/
|
*/
|
||||||
NetworkAddress getServerAddress() const;
|
NetworkAddress getServerAddress() const;
|
||||||
|
|
||||||
//! Return true if recieved file size is valid
|
//! Return true if received file size is valid
|
||||||
bool isReceivedFileSizeValid();
|
bool isReceivedFileSizeValid();
|
||||||
|
|
||||||
//! Return expected file size
|
//! Return expected file size
|
||||||
|
|
|
@ -45,7 +45,7 @@ const std::string& DataDirectories::global(const std::string& path)
|
||||||
const std::string& DataDirectories::systemconfig()
|
const std::string& DataDirectories::systemconfig()
|
||||||
{
|
{
|
||||||
// systemconfig() is a special case in that it will track the current value
|
// 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!
|
// previously it would default to the windows folder which was horrible!
|
||||||
if (_systemconfig.empty())
|
if (_systemconfig.empty())
|
||||||
return global();
|
return global();
|
||||||
|
|
|
@ -25,7 +25,7 @@ class IJob;
|
||||||
//! Thread handle
|
//! Thread handle
|
||||||
/*!
|
/*!
|
||||||
Creating a Thread creates a new context of execution (i.e. thread) that
|
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
|
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.
|
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
|
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 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);
|
void setPriority(int n);
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ public:
|
||||||
If \c hostname can be parsed as a numerical address then that's how
|
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
|
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,
|
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
|
port number (zero is not a valid port number) otherwise \c XSocketAddress
|
||||||
is thrown with an error of \c XSocketAddress::kBadPort. The hostname
|
is thrown with an error of \c XSocketAddress::kBadPort. The hostname
|
||||||
is not resolved by the c'tor; use \c resolve to do that.
|
is not resolved by the c'tor; use \c resolve to do that.
|
||||||
|
|
|
@ -24,7 +24,7 @@ class IEventQueue;
|
||||||
class SocketMultiplexer;
|
class SocketMultiplexer;
|
||||||
class IDataSocket;
|
class IDataSocket;
|
||||||
|
|
||||||
class SecureListenSocket : public TCPListenSocket{
|
class SecureListenSocket : public TCPListenSocket {
|
||||||
public:
|
public:
|
||||||
SecureListenSocket(IEventQueue* events,
|
SecureListenSocket(IEventQueue* events,
|
||||||
SocketMultiplexer* socketMultiplexer,
|
SocketMultiplexer* socketMultiplexer,
|
||||||
|
|
|
@ -658,7 +658,7 @@ SecureSocket::disconnect()
|
||||||
void SecureSocket::formatFingerprint(std::string& fingerprint, bool hex, bool separator)
|
void SecureSocket::formatFingerprint(std::string& fingerprint, bool hex, bool separator)
|
||||||
{
|
{
|
||||||
if (hex) {
|
if (hex) {
|
||||||
// to hexidecimal
|
// to hexadecimal
|
||||||
barrier::string::toHex(fingerprint, 2);
|
barrier::string::toHex(fingerprint, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -666,7 +666,7 @@ void SecureSocket::formatFingerprint(std::string& fingerprint, bool hex, bool se
|
||||||
barrier::string::uppercase(fingerprint);
|
barrier::string::uppercase(fingerprint);
|
||||||
|
|
||||||
if (separator) {
|
if (separator) {
|
||||||
// add colon to separate each 2 charactors
|
// add colon to separate each 2 characters
|
||||||
size_t separators = fingerprint.size() / 2;
|
size_t separators = fingerprint.size() / 2;
|
||||||
for (size_t i = 1; i < separators; i++) {
|
for (size_t i = 1; i < separators; i++) {
|
||||||
fingerprint.insert(i * 3 - 1, ":");
|
fingerprint.insert(i * 3 - 1, ":");
|
||||||
|
@ -830,7 +830,7 @@ SecureSocket::showSecureCipherInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
#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,
|
// In future release of OpenSSL, it's not visible,
|
||||||
STACK_OF(SSL_CIPHER) * cStack = m_ssl->m_ssl->session->ciphers;
|
STACK_OF(SSL_CIPHER) * cStack = m_ssl->m_ssl->session->ciphers;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -33,4 +33,4 @@ public:
|
||||||
virtual ~IMSWindowsClipboardFacade() { }
|
virtual ~IMSWindowsClipboardFacade() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -50,4 +50,4 @@ static void add_key(const char * const buffer, std::vector<DWORD> &keys)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -803,7 +803,7 @@ MSWindowsDesks::checkDesk()
|
||||||
|
|
||||||
// if active desktop changed then tell the old and new desk threads
|
// if active desktop changed then tell the old and new desk threads
|
||||||
// about the change. don't switch desktops when the screensaver is
|
// 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
|
// which would have the side effect of forcing the screensaver to
|
||||||
// stop.
|
// stop.
|
||||||
if (name != m_activeDeskName && !m_screensaver->isActive()) {
|
if (name != m_activeDeskName && !m_screensaver->isActive()) {
|
||||||
|
|
|
@ -30,4 +30,4 @@ bool WindowsHookResource::unset()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WindowsHookResource::is_set() const { return _hook != NULL; }
|
bool WindowsHookResource::is_set() const { return _hook != NULL; }
|
||||||
WindowsHookResource::operator HHOOK() const { return _hook; }
|
WindowsHookResource::operator HHOOK() const { return _hook; }
|
||||||
|
|
|
@ -17,4 +17,4 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HHOOK _hook;
|
HHOOK _hook;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1330,7 +1330,7 @@ MSWindowsKeyState::getKeyID(UINT virtualKey, KeyButton button) const
|
||||||
if ((LOWORD(m_keyLayout) & 0xffffu) == 0x0412u) { // 0x0412 : Korean Locale ID
|
if ((LOWORD(m_keyLayout) & 0xffffu) == 0x0412u) { // 0x0412 : Korean Locale ID
|
||||||
if (virtualKey == VK_HANGUL || virtualKey == VK_HANJA) {
|
if (virtualKey == VK_HANGUL || virtualKey == VK_HANJA) {
|
||||||
// If shift-space is used to change the input mode,
|
// 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;
|
button |= 0x100u;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ MSWindowsSession::isProcessInSession(const char* name, PHANDLE process = NULL)
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string nameListJoin;
|
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++) {
|
it != nameList.end(); it++) {
|
||||||
nameListJoin.append(*it);
|
nameListJoin.append(*it);
|
||||||
nameListJoin.append(", ");
|
nameListJoin.append(", ");
|
||||||
|
|
|
@ -81,7 +81,7 @@ private:
|
||||||
|
|
||||||
//! Relauncher error
|
//! Relauncher error
|
||||||
/*!
|
/*!
|
||||||
An error occured in the process watchdog.
|
An error occurred in the process watchdog.
|
||||||
*/
|
*/
|
||||||
class XMSWindowsWatchdogError : public XBarrier {
|
class XMSWindowsWatchdogError : public XBarrier {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -52,7 +52,7 @@ OSXClipboard::OSXClipboard() :
|
||||||
|
|
||||||
OSStatus syncErr = PasteboardSynchronize(m_pboard);
|
OSStatus syncErr = PasteboardSynchronize(m_pboard);
|
||||||
if (syncErr != noErr) {
|
if (syncErr != noErr) {
|
||||||
LOG((CLOG_DEBUG "failed to syncronize clipboard: error %i", syncErr));
|
LOG((CLOG_DEBUG "failed to synchronize clipboard: error %i", syncErr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,9 @@ void
|
||||||
runCocoaApp()
|
runCocoaApp()
|
||||||
{
|
{
|
||||||
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
|
||||||
[NSApplication sharedApplication];
|
[NSApplication sharedApplication];
|
||||||
|
|
||||||
NSWindow* window = [[NSWindow alloc]
|
NSWindow* window = [[NSWindow alloc]
|
||||||
initWithContentRect: NSMakeRect(0, 0, 3, 3)
|
initWithContentRect: NSMakeRect(0, 0, 3, 3)
|
||||||
styleMask: NSBorderlessWindowMask
|
styleMask: NSBorderlessWindowMask
|
||||||
|
@ -41,16 +41,16 @@ runCocoaApp()
|
||||||
[window setTitle: @""];
|
[window setTitle: @""];
|
||||||
[window setAlphaValue:0.1];
|
[window setAlphaValue:0.1];
|
||||||
[window makeKeyAndOrderFront:nil];
|
[window makeKeyAndOrderFront:nil];
|
||||||
|
|
||||||
OSXDragView* dragView = [[OSXDragView alloc] initWithFrame:NSMakeRect(0, 0, 3, 3)];
|
OSXDragView* dragView = [[OSXDragView alloc] initWithFrame:NSMakeRect(0, 0, 3, 3)];
|
||||||
|
|
||||||
g_dragWindow = window;
|
g_dragWindow = window;
|
||||||
g_dragView = dragView;
|
g_dragView = dragView;
|
||||||
[window setContentView: dragView];
|
[window setContentView: dragView];
|
||||||
|
|
||||||
NSLog(@"starting cocoa loop");
|
NSLog(@"starting cocoa loop");
|
||||||
[NSApp run];
|
[NSApp run];
|
||||||
|
|
||||||
NSLog(@"cocoa: release");
|
NSLog(@"cocoa: release");
|
||||||
[pool release];
|
[pool release];
|
||||||
}
|
}
|
||||||
|
@ -65,25 +65,25 @@ void
|
||||||
fakeDragging(const char* str, int cursorX, int cursorY)
|
fakeDragging(const char* str, int cursorX, int cursorY)
|
||||||
{
|
{
|
||||||
g_ext = [NSString stringWithUTF8String:str];
|
g_ext = [NSString stringWithUTF8String:str];
|
||||||
|
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
NSRect screen = [[NSScreen mainScreen] frame];
|
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);
|
NSLog ( @"mouseLocation: %d %d", cursorX, cursorY);
|
||||||
|
|
||||||
int newPosX = 0;
|
int newPosX = 0;
|
||||||
int newPosY = 0;
|
int newPosY = 0;
|
||||||
newPosX = cursorX - 1;
|
newPosX = cursorX - 1;
|
||||||
newPosY = screen.size.height - cursorY - 1;
|
newPosY = screen.size.height - cursorY - 1;
|
||||||
|
|
||||||
NSRect rect = NSMakeRect(newPosX, newPosY, 3, 3);
|
NSRect rect = NSMakeRect(newPosX, newPosY, 3, 3);
|
||||||
NSLog ( @"newPosX: %d", newPosX);
|
NSLog ( @"newPosX: %d", newPosX);
|
||||||
NSLog ( @"newPosY: %d", newPosY);
|
NSLog ( @"newPosY: %d", newPosY);
|
||||||
|
|
||||||
[g_dragWindow setFrame:rect display:NO];
|
[g_dragWindow setFrame:rect display:NO];
|
||||||
[g_dragWindow makeKeyAndOrderFront:nil];
|
[g_dragWindow makeKeyAndOrderFront:nil];
|
||||||
[NSApp activateIgnoringOtherApps:YES];
|
[NSApp activateIgnoringOtherApps:YES];
|
||||||
|
|
||||||
[g_dragView setFileExt:g_ext];
|
[g_dragView setFileExt:g_ext];
|
||||||
|
|
||||||
CGEventRef down = CGEventCreateMouseEvent(CGEventSourceCreate(kCGEventSourceStateHIDSystemState), kCGEventLeftMouseDown, CGPointMake(cursorX, cursorY), kCGMouseButtonLeft);
|
CGEventRef down = CGEventCreateMouseEvent(CGEventSourceCreate(kCGEventSourceStateHIDSystemState), kCGEventLeftMouseDown, CGPointMake(cursorX, cursorY), kCGMouseButtonLeft);
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
* barrier -- mouse and keyboard sharing utility
|
* barrier -- mouse and keyboard sharing utility
|
||||||
* Copyright (C) 2012-2016 Symless Ltd.
|
* Copyright (C) 2012-2016 Symless Ltd.
|
||||||
* Copyright (C) 2004 Chris Schoeneman
|
* Copyright (C) 2004 Chris Schoeneman
|
||||||
*
|
*
|
||||||
* This package is free software; you can redistribute it and/or
|
* This package is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
* found in the file LICENSE that should have accompanied this file.
|
* found in the file LICENSE that should have accompanied this file.
|
||||||
*
|
*
|
||||||
* This package is distributed in the hope that it will be useful,
|
* This package is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* 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);
|
updateScreenShape(m_displayID, 0);
|
||||||
m_screensaver = new OSXScreenSaver(m_events, getEventTarget());
|
m_screensaver = new OSXScreenSaver(m_events, getEventTarget());
|
||||||
m_keyState = new OSXKeyState(m_events);
|
m_keyState = new OSXKeyState(m_events);
|
||||||
|
|
||||||
// only needed when running as a server.
|
// only needed when running as a server.
|
||||||
if (m_isPrimary) {
|
if (m_isPrimary) {
|
||||||
|
|
||||||
#if defined(MAC_OS_X_VERSION_10_9)
|
#if defined(MAC_OS_X_VERSION_10_9)
|
||||||
// we can't pass options to show the dialog, this must be done by the gui.
|
// we can't pass options to show the dialog, this must be done by the gui.
|
||||||
if (!AXIsProcessTrusted()) {
|
if (!AXIsProcessTrusted()) {
|
||||||
|
@ -126,7 +126,7 @@ OSXScreen::OSXScreen(IEventQueue* events, bool isPrimary, bool autoShowHideCurso
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// install display manager notification handler
|
// install display manager notification handler
|
||||||
CGDisplayRegisterReconfigurationCallback(displayReconfigurationCallback, this);
|
CGDisplayRegisterReconfigurationCallback(displayReconfigurationCallback, this);
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ OSXScreen::OSXScreen(IEventQueue* events, bool isPrimary, bool autoShowHideCurso
|
||||||
if (m_switchEventHandlerRef != 0) {
|
if (m_switchEventHandlerRef != 0) {
|
||||||
RemoveEventHandler(m_switchEventHandlerRef);
|
RemoveEventHandler(m_switchEventHandlerRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
CGDisplayRemoveReconfigurationCallback(displayReconfigurationCallback, this);
|
CGDisplayRemoveReconfigurationCallback(displayReconfigurationCallback, this);
|
||||||
|
|
||||||
delete m_keyState;
|
delete m_keyState;
|
||||||
|
@ -217,7 +217,7 @@ OSXScreen::~OSXScreen()
|
||||||
|
|
||||||
delete m_keyState;
|
delete m_keyState;
|
||||||
delete m_screensaver;
|
delete m_screensaver;
|
||||||
|
|
||||||
#if defined(MAC_OS_X_VERSION_10_7)
|
#if defined(MAC_OS_X_VERSION_10_7)
|
||||||
delete m_carbonLoopMutex;
|
delete m_carbonLoopMutex;
|
||||||
delete m_carbonLoopReady;
|
delete m_carbonLoopReady;
|
||||||
|
@ -273,7 +273,7 @@ OSXScreen::warpCursor(SInt32 x, SInt32 y)
|
||||||
pos.x = x;
|
pos.x = x;
|
||||||
pos.y = y;
|
pos.y = y;
|
||||||
CGWarpMouseCursorPosition(pos);
|
CGWarpMouseCursorPosition(pos);
|
||||||
|
|
||||||
// save new cursor position
|
// save new cursor position
|
||||||
m_xCursor = x;
|
m_xCursor = x;
|
||||||
m_yCursor = y;
|
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));
|
LOG((CLOG_DEBUG "could not map hotkey id=%04x mask=%04x", key, mask));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// choose hotkey id
|
// choose hotkey id
|
||||||
UInt32 id;
|
UInt32 id;
|
||||||
if (!m_oldHotKeyIDs.empty()) {
|
if (!m_oldHotKeyIDs.empty()) {
|
||||||
|
@ -351,7 +351,7 @@ OSXScreen::registerHotKey(KeyID key, KeyModifierMask mask)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
EventHotKeyID hkid = { 'SNRG', (UInt32)id };
|
EventHotKeyID hkid = { 'SNRG', (UInt32)id };
|
||||||
OSStatus status = RegisterEventHotKey(macKey, macMask, hkid,
|
OSStatus status = RegisterEventHotKey(macKey, macMask, hkid,
|
||||||
GetApplicationEventTarget(), 0,
|
GetApplicationEventTarget(), 0,
|
||||||
&ref);
|
&ref);
|
||||||
okay = (status == noErr);
|
okay = (status == noErr);
|
||||||
|
@ -366,7 +366,7 @@ OSXScreen::registerHotKey(KeyID key, KeyModifierMask mask)
|
||||||
}
|
}
|
||||||
|
|
||||||
m_hotKeys.insert(std::make_pair(id, HotKeyItem(ref, macKey, macMask)));
|
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));
|
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;
|
return id;
|
||||||
}
|
}
|
||||||
|
@ -468,7 +468,7 @@ OSXScreen::postMouseEvent(CGPoint& pos) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CGEventType type = kCGEventMouseMoved;
|
CGEventType type = kCGEventMouseMoved;
|
||||||
|
|
||||||
SInt8 button = m_buttonState.getFirstButtonDown();
|
SInt8 button = m_buttonState.getFirstButtonDown();
|
||||||
|
@ -478,10 +478,10 @@ OSXScreen::postMouseEvent(CGPoint& pos) const
|
||||||
}
|
}
|
||||||
|
|
||||||
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, static_cast<CGMouseButton>(button));
|
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, static_cast<CGMouseButton>(button));
|
||||||
|
|
||||||
// Dragging events also need the click state
|
// Dragging events also need the click state
|
||||||
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
|
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
|
||||||
|
|
||||||
// Fix for sticky keys
|
// Fix for sticky keys
|
||||||
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
|
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
|
||||||
CGEventSetFlags(event, modifiers);
|
CGEventSetFlags(event, modifiers);
|
||||||
|
@ -503,7 +503,7 @@ OSXScreen::postMouseEvent(CGPoint& pos) const
|
||||||
CGEventSetDoubleValueField(event, kCGMouseEventDeltaY, deltaFY);
|
CGEventSetDoubleValueField(event, kCGMouseEventDeltaY, deltaFY);
|
||||||
|
|
||||||
CGEventPost(kCGHIDEventTap, event);
|
CGEventPost(kCGHIDEventTap, event);
|
||||||
|
|
||||||
CFRelease(event);
|
CFRelease(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,7 +515,7 @@ OSXScreen::fakeMouseButton(ButtonID id, bool press)
|
||||||
if (index >= NumButtonIDs) {
|
if (index >= NumButtonIDs) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CGPoint pos;
|
CGPoint pos;
|
||||||
if (!m_cursorPosValid) {
|
if (!m_cursorPosValid) {
|
||||||
SInt32 x, y;
|
SInt32 x, y;
|
||||||
|
@ -533,55 +533,55 @@ OSXScreen::fakeMouseButton(ButtonID id, bool press)
|
||||||
// since we don't have double click distance in NX APIs
|
// since we don't have double click distance in NX APIs
|
||||||
// we define our own defaults.
|
// we define our own defaults.
|
||||||
const double maxDiff = sqrt(2) + 0.0001;
|
const double maxDiff = sqrt(2) + 0.0001;
|
||||||
|
|
||||||
double clickTime = [NSEvent doubleClickInterval];
|
double clickTime = [NSEvent doubleClickInterval];
|
||||||
|
|
||||||
// As long as the click is within the time window and distance window
|
// As long as the click is within the time window and distance window
|
||||||
// increase clickState (double click, triple click, etc)
|
// 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
|
// does not specify that this should be limited to triple click
|
||||||
if (press) {
|
if (press) {
|
||||||
if ((ARCH->time() - m_lastClickTime) <= clickTime && diff <= maxDiff){
|
if ((ARCH->time() - m_lastClickTime) <= clickTime && diff <= maxDiff) {
|
||||||
m_clickState++;
|
m_clickState++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_clickState = 1;
|
m_clickState = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_lastClickTime = ARCH->time();
|
m_lastClickTime = ARCH->time();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_clickState == 1){
|
if (m_clickState == 1) {
|
||||||
m_lastSingleClickXCursor = m_xCursor;
|
m_lastSingleClickXCursor = m_xCursor;
|
||||||
m_lastSingleClickYCursor = m_yCursor;
|
m_lastSingleClickYCursor = m_yCursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
EMouseButtonState state = press ? kMouseButtonDown : kMouseButtonUp;
|
EMouseButtonState state = press ? kMouseButtonDown : kMouseButtonUp;
|
||||||
|
|
||||||
LOG((CLOG_DEBUG1 "faking mouse button id: %d press: %s", index, press ? "pressed" : "released"));
|
LOG((CLOG_DEBUG1 "faking mouse button id: %d press: %s", index, press ? "pressed" : "released"));
|
||||||
|
|
||||||
MouseButtonEventMapType thisButtonMap = MouseButtonEventMap[index];
|
MouseButtonEventMapType thisButtonMap = MouseButtonEventMap[index];
|
||||||
CGEventType type = thisButtonMap[state];
|
CGEventType type = thisButtonMap[state];
|
||||||
|
|
||||||
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, static_cast<CGMouseButton>(index));
|
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, static_cast<CGMouseButton>(index));
|
||||||
|
|
||||||
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
|
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
|
||||||
|
|
||||||
// Fix for sticky keys
|
// Fix for sticky keys
|
||||||
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
|
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
|
||||||
CGEventSetFlags(event, modifiers);
|
CGEventSetFlags(event, modifiers);
|
||||||
|
|
||||||
m_buttonState.set(index, state);
|
m_buttonState.set(index, state);
|
||||||
CGEventPost(kCGHIDEventTap, event);
|
CGEventPost(kCGHIDEventTap, event);
|
||||||
|
|
||||||
CFRelease(event);
|
CFRelease(event);
|
||||||
|
|
||||||
if (!press && (id == kButtonLeft)) {
|
if (!press && (id == kButtonLeft)) {
|
||||||
if (m_fakeDraggingStarted) {
|
if (m_fakeDraggingStarted) {
|
||||||
m_getDropTargetThread = new Thread(new TMethodJob<OSXScreen>(
|
m_getDropTargetThread = new Thread(new TMethodJob<OSXScreen>(
|
||||||
this, &OSXScreen::getDropTargetThread));
|
this, &OSXScreen::getDropTargetThread));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_draggingStarted = false;
|
m_draggingStarted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -591,21 +591,21 @@ OSXScreen::getDropTargetThread(void*)
|
||||||
{
|
{
|
||||||
#if defined(MAC_OS_X_VERSION_10_7)
|
#if defined(MAC_OS_X_VERSION_10_7)
|
||||||
char* cstr = NULL;
|
char* cstr = NULL;
|
||||||
|
|
||||||
// wait for 5 secs for the drop destinaiton string to be filled.
|
// wait for 5 secs for the drop destinaiton string to be filled.
|
||||||
UInt32 timeout = ARCH->time() + 5;
|
UInt32 timeout = ARCH->time() + 5;
|
||||||
|
|
||||||
while (ARCH->time() < timeout) {
|
while (ARCH->time() < timeout) {
|
||||||
CFStringRef cfstr = getCocoaDropTarget();
|
CFStringRef cfstr = getCocoaDropTarget();
|
||||||
cstr = CFStringRefToUTF8String(cfstr);
|
cstr = CFStringRefToUTF8String(cfstr);
|
||||||
CFRelease(cfstr);
|
CFRelease(cfstr);
|
||||||
|
|
||||||
if (cstr != NULL) {
|
if (cstr != NULL) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ARCH->sleep(.1f);
|
ARCH->sleep(.1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cstr != NULL) {
|
if (cstr != NULL) {
|
||||||
LOG((CLOG_DEBUG "drop target: %s", cstr));
|
LOG((CLOG_DEBUG "drop target: %s", cstr));
|
||||||
m_dropTarget = cstr;
|
m_dropTarget = cstr;
|
||||||
|
@ -626,12 +626,12 @@ OSXScreen::fakeMouseMove(SInt32 x, SInt32 y)
|
||||||
if (m_fakeDraggingStarted) {
|
if (m_fakeDraggingStarted) {
|
||||||
m_buttonState.set(0, kMouseButtonDown);
|
m_buttonState.set(0, kMouseButtonDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
// index 0 means left mouse button
|
// index 0 means left mouse button
|
||||||
if (m_buttonState.test(0)) {
|
if (m_buttonState.test(0)) {
|
||||||
m_draggingStarted = true;
|
m_draggingStarted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// synthesize event
|
// synthesize event
|
||||||
CGPoint pos;
|
CGPoint pos;
|
||||||
pos.x = x;
|
pos.x = x;
|
||||||
|
@ -679,11 +679,11 @@ OSXScreen::fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const
|
||||||
NULL, kCGScrollEventUnitLine, 2,
|
NULL, kCGScrollEventUnitLine, 2,
|
||||||
mapScrollWheelFromBarrier(yDelta),
|
mapScrollWheelFromBarrier(yDelta),
|
||||||
-mapScrollWheelFromBarrier(xDelta));
|
-mapScrollWheelFromBarrier(xDelta));
|
||||||
|
|
||||||
// Fix for sticky keys
|
// Fix for sticky keys
|
||||||
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
|
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
|
||||||
CGEventSetFlags(scrollEvent, modifiers);
|
CGEventSetFlags(scrollEvent, modifiers);
|
||||||
|
|
||||||
CGEventPost(kCGHIDEventTap, scrollEvent);
|
CGEventPost(kCGHIDEventTap, scrollEvent);
|
||||||
CFRelease(scrollEvent);
|
CFRelease(scrollEvent);
|
||||||
}
|
}
|
||||||
|
@ -754,11 +754,11 @@ OSXScreen::enable()
|
||||||
|
|
||||||
if (m_isPrimary) {
|
if (m_isPrimary) {
|
||||||
// FIXME -- start watching jump zones
|
// FIXME -- start watching jump zones
|
||||||
|
|
||||||
// kCGEventTapOptionDefault = 0x00000000 (Missing in 10.4, so specified literally)
|
// kCGEventTapOptionDefault = 0x00000000 (Missing in 10.4, so specified literally)
|
||||||
m_eventTapPort = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault,
|
m_eventTapPort = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault,
|
||||||
kCGEventMaskForAllEvents,
|
kCGEventMaskForAllEvents,
|
||||||
handleCGInputEvent,
|
handleCGInputEvent,
|
||||||
this);
|
this);
|
||||||
}
|
}
|
||||||
else {
|
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
|
// 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
|
// 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,
|
m_eventTapPort = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault,
|
||||||
kCGEventMaskForAllEvents,
|
kCGEventMaskForAllEvents,
|
||||||
handleCGInputEventSecondary,
|
handleCGInputEventSecondary,
|
||||||
this);
|
this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -798,9 +798,9 @@ OSXScreen::disable()
|
||||||
if (m_autoShowHideCursor) {
|
if (m_autoShowHideCursor) {
|
||||||
showCursor();
|
showCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME -- stop watching jump zones, stop capturing input
|
// FIXME -- stop watching jump zones, stop capturing input
|
||||||
|
|
||||||
if (m_eventTapRLSR) {
|
if (m_eventTapRLSR) {
|
||||||
CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_eventTapRLSR, kCFRunLoopDefaultMode);
|
CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_eventTapRLSR, kCFRunLoopDefaultMode);
|
||||||
CFRelease(m_eventTapRLSR);
|
CFRelease(m_eventTapRLSR);
|
||||||
|
@ -846,7 +846,7 @@ OSXScreen::enter()
|
||||||
io_registry_entry_t entry = IORegistryEntryFromPath(
|
io_registry_entry_t entry = IORegistryEntryFromPath(
|
||||||
kIOMasterPortDefault,
|
kIOMasterPortDefault,
|
||||||
"IOService:/IOResources/IODisplayWrangler");
|
"IOService:/IOResources/IODisplayWrangler");
|
||||||
|
|
||||||
if (entry != MACH_PORT_NULL) {
|
if (entry != MACH_PORT_NULL) {
|
||||||
IORegistryEntrySetCFProperty(entry, CFSTR("IORequestIdle"), kCFBooleanFalse);
|
IORegistryEntrySetCFProperty(entry, CFSTR("IORequestIdle"), kCFBooleanFalse);
|
||||||
IOObjectRelease(entry);
|
IOObjectRelease(entry);
|
||||||
|
@ -863,15 +863,15 @@ bool
|
||||||
OSXScreen::leave()
|
OSXScreen::leave()
|
||||||
{
|
{
|
||||||
hideCursor();
|
hideCursor();
|
||||||
|
|
||||||
if (isDraggingStarted()) {
|
if (isDraggingStarted()) {
|
||||||
String& fileList = getDraggingFilename();
|
String& fileList = getDraggingFilename();
|
||||||
|
|
||||||
if (!m_isPrimary) {
|
if (!m_isPrimary) {
|
||||||
if (fileList.empty() == false) {
|
if (fileList.empty() == false) {
|
||||||
ClientApp& app = ClientApp::instance();
|
ClientApp& app = ClientApp::instance();
|
||||||
Client* client = app.getClientPtr();
|
Client* client = app.getClientPtr();
|
||||||
|
|
||||||
DragInformation di;
|
DragInformation di;
|
||||||
di.setFilename(fileList);
|
di.setFilename(fileList);
|
||||||
DragFileList dragFileList;
|
DragFileList dragFileList;
|
||||||
|
@ -881,7 +881,7 @@ OSXScreen::leave()
|
||||||
dragFileList, info);
|
dragFileList, info);
|
||||||
client->sendDragInfo(fileCount, info, info.size());
|
client->sendDragInfo(fileCount, info, info.size());
|
||||||
LOG((CLOG_DEBUG "send dragging file to server"));
|
LOG((CLOG_DEBUG "send dragging file to server"));
|
||||||
|
|
||||||
// TODO: what to do with multiple file or even
|
// TODO: what to do with multiple file or even
|
||||||
// a folder
|
// a folder
|
||||||
client->sendFileToServer(fileList.c_str());
|
client->sendFileToServer(fileList.c_str());
|
||||||
|
@ -889,7 +889,7 @@ OSXScreen::leave()
|
||||||
}
|
}
|
||||||
m_draggingStarted = false;
|
m_draggingStarted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_isPrimary) {
|
if (m_isPrimary) {
|
||||||
avoidHesitatingCursor();
|
avoidHesitatingCursor();
|
||||||
|
|
||||||
|
@ -906,8 +906,8 @@ OSXScreen::setClipboard(ClipboardID, const IClipboard* src)
|
||||||
{
|
{
|
||||||
if (src != NULL) {
|
if (src != NULL) {
|
||||||
LOG((CLOG_DEBUG "setting clipboard"));
|
LOG((CLOG_DEBUG "setting clipboard"));
|
||||||
Clipboard::copy(&m_pasteboard, src);
|
Clipboard::copy(&m_pasteboard, src);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1036,16 +1036,16 @@ OSXScreen::handleSystemEvent(const Event& event, void*)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kEventClassKeyboard:
|
case kEventClassKeyboard:
|
||||||
switch (GetEventKind(*carbonEvent)) {
|
switch (GetEventKind(*carbonEvent)) {
|
||||||
case kEventHotKeyPressed:
|
case kEventHotKeyPressed:
|
||||||
case kEventHotKeyReleased:
|
case kEventHotKeyReleased:
|
||||||
onHotKey(*carbonEvent);
|
onHotKey(*carbonEvent);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kEventClassWindow:
|
case kEventClassWindow:
|
||||||
// 2nd param was formerly GetWindowEventTarget(m_userInputWindow) which is 32-bit only,
|
// 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
|
// 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)
|
OSXScreen::onMouseMove(CGFloat mx, CGFloat my)
|
||||||
{
|
{
|
||||||
LOG((CLOG_DEBUG2 "mouse move %+f,%+f", mx, my));
|
LOG((CLOG_DEBUG2 "mouse move %+f,%+f", mx, my));
|
||||||
|
@ -1140,7 +1140,7 @@ OSXScreen::onMouseMove(CGFloat mx, CGFloat my)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
OSXScreen::onMouseButton(bool pressed, UInt16 macButton)
|
OSXScreen::onMouseButton(bool pressed, UInt16 macButton)
|
||||||
{
|
{
|
||||||
// Buttons 2 and 3 are inverted on the mac
|
// Buttons 2 and 3 are inverted on the mac
|
||||||
|
@ -1176,7 +1176,7 @@ OSXScreen::onMouseButton(bool pressed, UInt16 macButton)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (macButton == kButtonLeft) {
|
if (macButton == kButtonLeft) {
|
||||||
EMouseButtonState state = pressed ? kMouseButtonDown : kMouseButtonUp;
|
EMouseButtonState state = pressed ? kMouseButtonDown : kMouseButtonUp;
|
||||||
m_buttonState.set(kButtonLeft - 1, state);
|
m_buttonState.set(kButtonLeft - 1, state);
|
||||||
|
@ -1189,7 +1189,7 @@ OSXScreen::onMouseButton(bool pressed, UInt16 macButton)
|
||||||
m_getDropTargetThread = new Thread(new TMethodJob<OSXScreen>(
|
m_getDropTargetThread = new Thread(new TMethodJob<OSXScreen>(
|
||||||
this, &OSXScreen::getDropTargetThread));
|
this, &OSXScreen::getDropTargetThread));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_draggingStarted = false;
|
m_draggingStarted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1218,16 +1218,16 @@ OSXScreen::displayReconfigurationCallback(CGDirectDisplayID displayID, CGDisplay
|
||||||
|
|
||||||
// Closing or opening the lid when an external monitor is
|
// Closing or opening the lid when an external monitor is
|
||||||
// connected causes an kCGDisplayBeginConfigurationFlag event
|
// connected causes an kCGDisplayBeginConfigurationFlag event
|
||||||
CGDisplayChangeSummaryFlags mask = kCGDisplayBeginConfigurationFlag | kCGDisplayMovedFlag |
|
CGDisplayChangeSummaryFlags mask = kCGDisplayBeginConfigurationFlag | kCGDisplayMovedFlag |
|
||||||
kCGDisplaySetModeFlag | kCGDisplayAddFlag | kCGDisplayRemoveFlag |
|
kCGDisplaySetModeFlag | kCGDisplayAddFlag | kCGDisplayRemoveFlag |
|
||||||
kCGDisplayEnabledFlag | kCGDisplayDisabledFlag |
|
kCGDisplayEnabledFlag | kCGDisplayDisabledFlag |
|
||||||
kCGDisplayMirrorFlag | kCGDisplayUnMirrorFlag |
|
kCGDisplayMirrorFlag | kCGDisplayUnMirrorFlag |
|
||||||
kCGDisplayDesktopShapeChangedFlag;
|
kCGDisplayDesktopShapeChangedFlag;
|
||||||
|
|
||||||
LOG((CLOG_DEBUG1 "event: display was reconfigured: %x %x %x", flags, mask, flags & mask));
|
LOG((CLOG_DEBUG1 "event: display was reconfigured: %x %x %x", flags, mask, flags & mask));
|
||||||
|
|
||||||
if (flags & mask) { /* Something actually did change */
|
if (flags & mask) { /* Something actually did change */
|
||||||
|
|
||||||
LOG((CLOG_DEBUG1 "event: screen changed shape; refreshing dimensions"));
|
LOG((CLOG_DEBUG1 "event: screen changed shape; refreshing dimensions"));
|
||||||
screen->updateScreenShape(displayID, flags);
|
screen->updateScreenShape(displayID, flags);
|
||||||
}
|
}
|
||||||
|
@ -1274,7 +1274,7 @@ OSXScreen::onKey(CGEventRef event)
|
||||||
m_activeModifierHotKeyMask = 0;
|
m_activeModifierHotKeyMask = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1342,7 +1342,7 @@ OSXScreen::onKey(CGEventRef event)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
OSXScreen::onMediaKey(CGEventRef event)
|
OSXScreen::onMediaKey(CGEventRef event)
|
||||||
{
|
{
|
||||||
KeyID keyID;
|
KeyID keyID;
|
||||||
bool down;
|
bool down;
|
||||||
|
@ -1405,7 +1405,7 @@ OSXScreen::mapBarrierButtonToMac(UInt16 button) const
|
||||||
return static_cast<ButtonID>(button);
|
return static_cast<ButtonID>(button);
|
||||||
}
|
}
|
||||||
|
|
||||||
ButtonID
|
ButtonID
|
||||||
OSXScreen::mapMacButtonToBarrier(UInt16 macButton) const
|
OSXScreen::mapMacButtonToBarrier(UInt16 macButton) const
|
||||||
{
|
{
|
||||||
switch (macButton) {
|
switch (macButton) {
|
||||||
|
@ -1418,7 +1418,7 @@ OSXScreen::mapMacButtonToBarrier(UInt16 macButton) const
|
||||||
case 3:
|
case 3:
|
||||||
return kButtonMiddle;
|
return kButtonMiddle;
|
||||||
}
|
}
|
||||||
|
|
||||||
return static_cast<ButtonID>(macButton);
|
return static_cast<ButtonID>(macButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1445,8 +1445,8 @@ OSXScreen::getScrollSpeed() const
|
||||||
double scaling = 0.0;
|
double scaling = 0.0;
|
||||||
|
|
||||||
CFPropertyListRef pref = ::CFPreferencesCopyValue(
|
CFPropertyListRef pref = ::CFPreferencesCopyValue(
|
||||||
CFSTR("com.apple.scrollwheel.scaling") ,
|
CFSTR("com.apple.scrollwheel.scaling") ,
|
||||||
kCFPreferencesAnyApplication,
|
kCFPreferencesAnyApplication,
|
||||||
kCFPreferencesCurrentUser,
|
kCFPreferencesCurrentUser,
|
||||||
kCFPreferencesAnyHost);
|
kCFPreferencesAnyHost);
|
||||||
if (pref != NULL) {
|
if (pref != NULL) {
|
||||||
|
@ -1535,7 +1535,7 @@ OSXScreen::updateScreenShape()
|
||||||
if (CGGetActiveDisplayList(0, NULL, &displayCount) != CGDisplayNoErr) {
|
if (CGGetActiveDisplayList(0, NULL, &displayCount) != CGDisplayNoErr) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displayCount == 0) {
|
if (displayCount == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1579,13 +1579,13 @@ OSXScreen::updateScreenShape()
|
||||||
(displayCount == 1) ? "display" : "displays"));
|
(displayCount == 1) ? "display" : "displays"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
//
|
//
|
||||||
// FAST USER SWITCH NOTIFICATION SUPPORT
|
// FAST USER SWITCH NOTIFICATION SUPPORT
|
||||||
//
|
//
|
||||||
// OSXScreen::userSwitchCallback(void*)
|
// OSXScreen::userSwitchCallback(void*)
|
||||||
//
|
//
|
||||||
// gets called if a fast user switch occurs
|
// gets called if a fast user switch occurs
|
||||||
//
|
//
|
||||||
|
|
||||||
|
@ -1611,14 +1611,14 @@ OSXScreen::userSwitchCallback(EventHandlerCallRef nextHandler,
|
||||||
return (CallNextEventHandler(nextHandler, theEvent));
|
return (CallNextEventHandler(nextHandler, theEvent));
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
//
|
//
|
||||||
// SLEEP/WAKEUP NOTIFICATION SUPPORT
|
// SLEEP/WAKEUP NOTIFICATION SUPPORT
|
||||||
//
|
//
|
||||||
// OSXScreen::watchSystemPowerThread(void*)
|
// 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
|
void
|
||||||
|
@ -1641,7 +1641,7 @@ OSXScreen::watchSystemPowerThread(void*)
|
||||||
CFRunLoopAddSource(m_pmRunloop, runloopSourceRef,
|
CFRunLoopAddSource(m_pmRunloop, runloopSourceRef,
|
||||||
kCFRunLoopCommonModes);
|
kCFRunLoopCommonModes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// thread is ready
|
// thread is ready
|
||||||
{
|
{
|
||||||
Lock lock(m_pmMutex);
|
Lock lock(m_pmMutex);
|
||||||
|
@ -1658,15 +1658,15 @@ OSXScreen::watchSystemPowerThread(void*)
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG((CLOG_DEBUG "started watchSystemPowerThread"));
|
LOG((CLOG_DEBUG "started watchSystemPowerThread"));
|
||||||
|
|
||||||
LOG((CLOG_DEBUG "waiting for event loop"));
|
LOG((CLOG_DEBUG "waiting for event loop"));
|
||||||
m_events->waitForReady();
|
m_events->waitForReady();
|
||||||
|
|
||||||
#if defined(MAC_OS_X_VERSION_10_7)
|
#if defined(MAC_OS_X_VERSION_10_7)
|
||||||
{
|
{
|
||||||
Lock lockCarbon(m_carbonLoopMutex);
|
Lock lockCarbon(m_carbonLoopMutex);
|
||||||
if (*m_carbonLoopReady == false) {
|
if (*m_carbonLoopReady == false) {
|
||||||
|
|
||||||
// we signalling carbon loop ready before starting
|
// we signalling carbon loop ready before starting
|
||||||
// unless we know how to do it within the loop
|
// unless we know how to do it within the loop
|
||||||
LOG((CLOG_DEBUG "signalling carbon loop ready"));
|
LOG((CLOG_DEBUG "signalling carbon loop ready"));
|
||||||
|
@ -1676,12 +1676,12 @@ OSXScreen::watchSystemPowerThread(void*)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// start the run loop
|
// start the run loop
|
||||||
LOG((CLOG_DEBUG "starting carbon loop"));
|
LOG((CLOG_DEBUG "starting carbon loop"));
|
||||||
CFRunLoopRun();
|
CFRunLoopRun();
|
||||||
LOG((CLOG_DEBUG "carbon loop has stopped"));
|
LOG((CLOG_DEBUG "carbon loop has stopped"));
|
||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
if (notificationPortRef) {
|
if (notificationPortRef) {
|
||||||
CFRunLoopRemoveSource(m_pmRunloop,
|
CFRunLoopRemoveSource(m_pmRunloop,
|
||||||
|
@ -1716,7 +1716,7 @@ OSXScreen::handlePowerChangeRequest(natural_t messageType, void* messageArg)
|
||||||
getEventTarget(), messageArg,
|
getEventTarget(), messageArg,
|
||||||
Event::kDontFreeData));
|
Event::kDontFreeData));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case kIOMessageSystemHasPoweredOn:
|
case kIOMessageSystemHasPoweredOn:
|
||||||
LOG((CLOG_DEBUG "system wakeup"));
|
LOG((CLOG_DEBUG "system wakeup"));
|
||||||
m_events->addEvent(Event(m_events->forIScreen().resume(),
|
m_events->addEvent(Event(m_events->forIScreen().resume(),
|
||||||
|
@ -1742,16 +1742,16 @@ OSXScreen::handleConfirmSleep(const Event& event, void*)
|
||||||
if (m_pmRootPort != 0) {
|
if (m_pmRootPort != 0) {
|
||||||
// deliver suspend event immediately.
|
// deliver suspend event immediately.
|
||||||
m_events->addEvent(Event(m_events->forIScreen().suspend(),
|
m_events->addEvent(Event(m_events->forIScreen().suspend(),
|
||||||
getEventTarget(), NULL,
|
getEventTarget(), NULL,
|
||||||
Event::kDeliverImmediately));
|
Event::kDeliverImmediately));
|
||||||
|
|
||||||
LOG((CLOG_DEBUG "system will sleep"));
|
LOG((CLOG_DEBUG "system will sleep"));
|
||||||
IOAllowPowerChange(m_pmRootPort, messageArg);
|
IOAllowPowerChange(m_pmRootPort, messageArg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
//
|
//
|
||||||
// GLOBAL HOTKEY OPERATING MODE SUPPORT (10.3)
|
// GLOBAL HOTKEY OPERATING MODE SUPPORT (10.3)
|
||||||
|
@ -1941,7 +1941,7 @@ OSXScreen::handleCGInputEvent(CGEventTapProxy proxy,
|
||||||
case kCGEventMouseMoved:
|
case kCGEventMouseMoved:
|
||||||
pos = CGEventGetLocation(event);
|
pos = CGEventGetLocation(event);
|
||||||
screen->onMouseMove(pos.x, pos.y);
|
screen->onMouseMove(pos.x, pos.y);
|
||||||
|
|
||||||
// The system ignores our cursor-centering calls if
|
// The system ignores our cursor-centering calls if
|
||||||
// we don't return the event. This should be harmless,
|
// we don't return the event. This should be harmless,
|
||||||
// but might register as slight movement to other apps
|
// but might register as slight movement to other apps
|
||||||
|
@ -1980,10 +1980,10 @@ OSXScreen::handleCGInputEvent(CGEventTapProxy proxy,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG((CLOG_DEBUG3 "unknown quartz event type: 0x%02x", type));
|
LOG((CLOG_DEBUG3 "unknown quartz event type: 0x%02x", type));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (screen->m_isOnScreen) {
|
if (screen->m_isOnScreen) {
|
||||||
return event;
|
return event;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1992,38 +1992,38 @@ OSXScreen::handleCGInputEvent(CGEventTapProxy proxy,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
OSXScreen::MouseButtonState::set(UInt32 button, EMouseButtonState state)
|
OSXScreen::MouseButtonState::set(UInt32 button, EMouseButtonState state)
|
||||||
{
|
{
|
||||||
bool newState = (state == kMouseButtonDown);
|
bool newState = (state == kMouseButtonDown);
|
||||||
m_buttons.set(button, newState);
|
m_buttons.set(button, newState);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
OSXScreen::MouseButtonState::any()
|
OSXScreen::MouseButtonState::any()
|
||||||
{
|
{
|
||||||
return m_buttons.any();
|
return m_buttons.any();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
OSXScreen::MouseButtonState::reset()
|
OSXScreen::MouseButtonState::reset()
|
||||||
{
|
{
|
||||||
m_buttons.reset();
|
m_buttons.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
OSXScreen::MouseButtonState::overwrite(UInt32 buttons)
|
OSXScreen::MouseButtonState::overwrite(UInt32 buttons)
|
||||||
{
|
{
|
||||||
m_buttons = std::bitset<NumButtonIDs>(buttons);
|
m_buttons = std::bitset<NumButtonIDs>(buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
OSXScreen::MouseButtonState::test(UInt32 button) const
|
OSXScreen::MouseButtonState::test(UInt32 button) const
|
||||||
{
|
{
|
||||||
return m_buttons.test(button);
|
return m_buttons.test(button);
|
||||||
}
|
}
|
||||||
|
|
||||||
SInt8
|
SInt8
|
||||||
OSXScreen::MouseButtonState::getFirstButtonDown() const
|
OSXScreen::MouseButtonState::getFirstButtonDown() const
|
||||||
{
|
{
|
||||||
if (m_buttons.any()) {
|
if (m_buttons.any()) {
|
||||||
for (unsigned short button = 0; button < m_buttons.size(); button++) {
|
for (unsigned short button = 0; button < m_buttons.size(); button++) {
|
||||||
|
@ -2041,7 +2041,7 @@ OSXScreen::CFStringRefToUTF8String(CFStringRef aString)
|
||||||
if (aString == NULL) {
|
if (aString == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFIndex length = CFStringGetLength(aString);
|
CFIndex length = CFStringGetLength(aString);
|
||||||
CFIndex maxSize = CFStringGetMaximumSizeForEncoding(
|
CFIndex maxSize = CFStringGetMaximumSizeForEncoding(
|
||||||
length,
|
length,
|
||||||
|
|
|
@ -115,7 +115,7 @@ private:
|
||||||
// the X display
|
// the X display
|
||||||
Display* m_display;
|
Display* m_display;
|
||||||
|
|
||||||
// window to receive xscreensaver repsonses
|
// window to receive xscreensaver responses
|
||||||
Window m_xscreensaverSink;
|
Window m_xscreensaverSink;
|
||||||
|
|
||||||
// the target for the events we generate
|
// the target for the events we generate
|
||||||
|
|
|
@ -1136,9 +1136,9 @@ Server::processOptions()
|
||||||
return;
|
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_switchNeedsControl = false; // lines, the 'reload config' option
|
||||||
m_switchNeedsAlt = false; // doesnt' work correct.
|
m_switchNeedsAlt = false; // doesn't work correct.
|
||||||
|
|
||||||
bool newRelativeMoves = m_relativeMoves;
|
bool newRelativeMoves = m_relativeMoves;
|
||||||
for (Config::ScreenOptions::const_iterator index = options->begin();
|
for (Config::ScreenOptions::const_iterator index = options->begin();
|
||||||
|
|
|
@ -167,7 +167,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void getClients(std::vector<std::string>& list) const;
|
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();
|
bool isReceivedFileSizeValid();
|
||||||
|
|
||||||
//! Return expected file data size
|
//! Return expected file data size
|
||||||
|
@ -357,7 +357,7 @@ private:
|
||||||
// force the cursor off of \p client
|
// force the cursor off of \p client
|
||||||
void forceLeaveClient(BaseClientProxy* client);
|
void forceLeaveClient(BaseClientProxy* client);
|
||||||
|
|
||||||
// thread funciton for sending file
|
// thread function for sending file
|
||||||
void sendFileThread(void*);
|
void sendFileThread(void*);
|
||||||
|
|
||||||
// thread function for writing file to drop directory
|
// thread function for writing file to drop directory
|
||||||
|
|
Loading…
Reference in New Issue