Merge pull request #75 from debauchee/master
pull in recent patches from master
This commit is contained in:
commit
f65189190c
|
@ -193,7 +193,7 @@ if (UNIX)
|
||||||
message (FATAL_ERROR "Missing header: " ${XKBlib})
|
message (FATAL_ERROR "Missing header: " ${XKBlib})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT HAVE_DNSSD)
|
if (BARRIER_BUILD_GUI AND NOT HAVE_DNSSD)
|
||||||
message (FATAL_ERROR "Missing header: dns_sd.h")
|
message (FATAL_ERROR "Missing header: dns_sd.h")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
barrier (2.1-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Initial release (Closes: #123456)
|
||||||
|
|
||||||
|
-- Debauchee Open Source Group <debauchee.oss@gmail.com> Sat, 01 Apr 2018 00:00:00 +0000
|
|
@ -22,7 +22,7 @@ add_executable (barrier WIN32
|
||||||
|
|
||||||
include_directories (./src)
|
include_directories (./src)
|
||||||
|
|
||||||
qt5_use_modules (barrier Core Widgets Network)
|
target_link_libraries (barrier Qt5::Core Qt5::Widgets Qt5::Network)
|
||||||
target_compile_definitions (barrier PRIVATE -DBARRIER_VERSION_STAGE="${BARRIER_VERSION_STAGE}")
|
target_compile_definitions (barrier PRIVATE -DBARRIER_VERSION_STAGE="${BARRIER_VERSION_STAGE}")
|
||||||
target_compile_definitions (barrier PRIVATE -DBARRIER_REVISION="${BARRIER_REVISION}")
|
target_compile_definitions (barrier PRIVATE -DBARRIER_REVISION="${BARRIER_REVISION}")
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
#include <QtCore>
|
#include <QtCore>
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
|
#include <QButtonGroup>
|
||||||
|
|
||||||
ActionDialog::ActionDialog(QWidget* parent, ServerConfig& config, Hotkey& hotkey, Action& action) :
|
ActionDialog::ActionDialog(QWidget* parent, ServerConfig& config, Hotkey& hotkey, Action& action) :
|
||||||
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint),
|
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint),
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -23,6 +23,19 @@
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
static const QRegExp ValidScreenName("[a-z0-9\\._-]{,255}", Qt::CaseInsensitive);
|
||||||
|
|
||||||
|
static QString check_name_param(QString name)
|
||||||
|
{
|
||||||
|
// after internationalization happens the default name "Unnamed" might
|
||||||
|
// be translated with spaces (or other chars). let's replace the spaces
|
||||||
|
// with dashes and just give up if that doesn't pass the regexp
|
||||||
|
name.replace(' ', '-');
|
||||||
|
if (ValidScreenName.exactMatch(name))
|
||||||
|
return name;
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
ScreenSettingsDialog::ScreenSettingsDialog(QWidget* parent, Screen* pScreen) :
|
ScreenSettingsDialog::ScreenSettingsDialog(QWidget* parent, Screen* pScreen) :
|
||||||
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint),
|
QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint),
|
||||||
Ui::ScreenSettingsDialogBase(),
|
Ui::ScreenSettingsDialogBase(),
|
||||||
|
@ -30,13 +43,11 @@ ScreenSettingsDialog::ScreenSettingsDialog(QWidget* parent, Screen* pScreen) :
|
||||||
{
|
{
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
|
|
||||||
QRegExp validScreenName("[a-z0-9\\._-]{,255}", Qt::CaseInsensitive);
|
m_pLineEditName->setText(check_name_param(m_pScreen->name()));
|
||||||
|
m_pLineEditName->setValidator(new QRegExpValidator(ValidScreenName, m_pLineEditName));
|
||||||
m_pLineEditName->setText(m_pScreen->name());
|
|
||||||
m_pLineEditName->setValidator(new QRegExpValidator(validScreenName, m_pLineEditName));
|
|
||||||
m_pLineEditName->selectAll();
|
m_pLineEditName->selectAll();
|
||||||
|
|
||||||
m_pLineEditAlias->setValidator(new QRegExpValidator(validScreenName, m_pLineEditName));
|
m_pLineEditAlias->setValidator(new QRegExpValidator(ValidScreenName, m_pLineEditName));
|
||||||
|
|
||||||
for (int i = 0; i < m_pScreen->aliases().count(); i++)
|
for (int i = 0; i < m_pScreen->aliases().count(); i++)
|
||||||
new QListWidgetItem(m_pScreen->aliases()[i], m_pListAliases);
|
new QListWidgetItem(m_pScreen->aliases()[i], m_pListAliases);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include <QtCore>
|
#include <QtCore>
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
|
#include <QHeaderView>
|
||||||
|
|
||||||
ScreenSetupView::ScreenSetupView(QWidget* parent) :
|
ScreenSetupView::ScreenSetupView(QWidget* parent) :
|
||||||
QTableView(parent)
|
QTableView(parent)
|
||||||
|
|
|
@ -144,10 +144,10 @@ private:
|
||||||
ButtonID mapMacButtonToBarrier(UInt16) const;
|
ButtonID mapMacButtonToBarrier(UInt16) const;
|
||||||
|
|
||||||
// map mac scroll wheel value to a barrier scroll wheel value
|
// map mac scroll wheel value to a barrier scroll wheel value
|
||||||
SInt32 mapScrollWheelToBarrier(SInt32) const;
|
SInt32 mapScrollWheelToBarrier(float) const;
|
||||||
|
|
||||||
// map barrier scroll wheel value to a mac scroll wheel value
|
// map barrier scroll wheel value to a mac scroll wheel value
|
||||||
SInt32 mapScrollWheelFromBarrier(SInt32) const;
|
SInt32 mapScrollWheelFromBarrier(float) const;
|
||||||
|
|
||||||
// get the current scroll wheel speed
|
// get the current scroll wheel speed
|
||||||
double getScrollSpeed() const;
|
double getScrollSpeed() const;
|
||||||
|
|
|
@ -1421,7 +1421,7 @@ OSXScreen::mapMacButtonToBarrier(UInt16 macButton) const
|
||||||
}
|
}
|
||||||
|
|
||||||
SInt32
|
SInt32
|
||||||
OSXScreen::mapScrollWheelToBarrier(SInt32 x) const
|
OSXScreen::mapScrollWheelToBarrier(float x) const
|
||||||
{
|
{
|
||||||
// return accelerated scrolling but not exponentially scaled as it is
|
// return accelerated scrolling but not exponentially scaled as it is
|
||||||
// on the mac.
|
// on the mac.
|
||||||
|
@ -1430,7 +1430,7 @@ OSXScreen::mapScrollWheelToBarrier(SInt32 x) const
|
||||||
}
|
}
|
||||||
|
|
||||||
SInt32
|
SInt32
|
||||||
OSXScreen::mapScrollWheelFromBarrier(SInt32 x) const
|
OSXScreen::mapScrollWheelFromBarrier(float x) const
|
||||||
{
|
{
|
||||||
// use server's acceleration with a little boost since other platforms
|
// use server's acceleration with a little boost since other platforms
|
||||||
// take one wheel step as a larger step than the mac does.
|
// take one wheel step as a larger step than the mac does.
|
||||||
|
@ -1948,9 +1948,9 @@ OSXScreen::handleCGInputEvent(CGEventTapProxy proxy,
|
||||||
break;
|
break;
|
||||||
case kCGEventScrollWheel:
|
case kCGEventScrollWheel:
|
||||||
screen->onMouseWheel(screen->mapScrollWheelToBarrier(
|
screen->onMouseWheel(screen->mapScrollWheelToBarrier(
|
||||||
CGEventGetIntegerValueField(event, kCGScrollWheelEventDeltaAxis2)),
|
CGEventGetIntegerValueField(event, kCGScrollWheelEventFixedPtDeltaAxis2) / 65536.0f),
|
||||||
screen->mapScrollWheelToBarrier(
|
screen->mapScrollWheelToBarrier(
|
||||||
CGEventGetIntegerValueField(event, kCGScrollWheelEventDeltaAxis1)));
|
CGEventGetIntegerValueField(event, kCGScrollWheelEventFixedPtDeltaAxis1) / 65536.0f));
|
||||||
break;
|
break;
|
||||||
case kCGEventKeyDown:
|
case kCGEventKeyDown:
|
||||||
case kCGEventKeyUp:
|
case kCGEventKeyUp:
|
||||||
|
|
|
@ -99,6 +99,7 @@ XWindowsScreen::XWindowsScreen(
|
||||||
IEventQueue* events) :
|
IEventQueue* events) :
|
||||||
m_isPrimary(isPrimary),
|
m_isPrimary(isPrimary),
|
||||||
m_mouseScrollDelta(mouseScrollDelta),
|
m_mouseScrollDelta(mouseScrollDelta),
|
||||||
|
m_accumulatedScroll(0),
|
||||||
m_display(NULL),
|
m_display(NULL),
|
||||||
m_root(None),
|
m_root(None),
|
||||||
m_window(None),
|
m_window(None),
|
||||||
|
@ -865,9 +866,11 @@ XWindowsScreen::fakeMouseWheel(SInt32, SInt32 yDelta) const
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// choose button depending on rotation direction
|
int numEvents = accumulateMouseScroll(yDelta);
|
||||||
const unsigned int xButton = mapButtonToX(static_cast<ButtonID>(
|
|
||||||
(yDelta >= 0) ? -1 : -2));
|
// choose button depending on rotation direction
|
||||||
|
const unsigned int xButton = mapButtonToX(static_cast<ButtonID>(
|
||||||
|
(numEvents >= 0) ? -1 : -2));
|
||||||
if (xButton == 0) {
|
if (xButton == 0) {
|
||||||
// If we get here, then the XServer does not support the scroll
|
// If we get here, then the XServer does not support the scroll
|
||||||
// wheel buttons, so send PageUp/PageDown keystrokes instead.
|
// wheel buttons, so send PageUp/PageDown keystrokes instead.
|
||||||
|
@ -886,20 +889,14 @@ XWindowsScreen::fakeMouseWheel(SInt32, SInt32 yDelta) const
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// now use absolute value of delta
|
numEvents = std::abs(numEvents);
|
||||||
if (yDelta < 0) {
|
|
||||||
yDelta = -yDelta;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (yDelta < m_mouseScrollDelta) {
|
|
||||||
LOG((CLOG_WARN "Wheel scroll delta (%d) smaller than threshold (%d)", yDelta, m_mouseScrollDelta));
|
|
||||||
}
|
|
||||||
|
|
||||||
// send as many clicks as necessary
|
// send as many clicks as necessary
|
||||||
for (; yDelta >= m_mouseScrollDelta; yDelta -= m_mouseScrollDelta) {
|
for (; numEvents > 0; numEvents--) {
|
||||||
XTestFakeButtonEvent(m_display, xButton, True, CurrentTime);
|
XTestFakeButtonEvent(m_display, xButton, True, CurrentTime);
|
||||||
XTestFakeButtonEvent(m_display, xButton, False, CurrentTime);
|
XTestFakeButtonEvent(m_display, xButton, False, CurrentTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
XFlush(m_display);
|
XFlush(m_display);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1643,6 +1640,15 @@ XWindowsScreen::onMouseMove(const XMotionEvent& xmotion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
XWindowsScreen::accumulateMouseScroll(SInt32 yDelta) const
|
||||||
|
{
|
||||||
|
m_accumulatedScroll += yDelta;
|
||||||
|
int numEvents = m_accumulatedScroll / m_mouseScrollDelta;
|
||||||
|
m_accumulatedScroll -= numEvents * m_mouseScrollDelta;
|
||||||
|
return numEvents;
|
||||||
|
}
|
||||||
|
|
||||||
Cursor
|
Cursor
|
||||||
XWindowsScreen::createBlankCursor() const
|
XWindowsScreen::createBlankCursor() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -136,6 +136,10 @@ private:
|
||||||
void onMouseRelease(const XButtonEvent&);
|
void onMouseRelease(const XButtonEvent&);
|
||||||
void onMouseMove(const XMotionEvent&);
|
void onMouseMove(const XMotionEvent&);
|
||||||
|
|
||||||
|
// Returns the number of scroll events needed after the current delta has
|
||||||
|
// been taken into account
|
||||||
|
int accumulateMouseScroll(SInt32 yDelta) const;
|
||||||
|
|
||||||
bool detectXI2();
|
bool detectXI2();
|
||||||
#ifdef HAVE_XI2
|
#ifdef HAVE_XI2
|
||||||
void selectXIRawMotion();
|
void selectXIRawMotion();
|
||||||
|
@ -172,8 +176,15 @@ private:
|
||||||
|
|
||||||
// true if screen is being used as a primary screen, false otherwise
|
// true if screen is being used as a primary screen, false otherwise
|
||||||
bool m_isPrimary;
|
bool m_isPrimary;
|
||||||
|
|
||||||
|
// The size of a smallest supported scroll event, in points
|
||||||
int m_mouseScrollDelta;
|
int m_mouseScrollDelta;
|
||||||
|
|
||||||
|
// Accumulates scrolls of less than m_mouseScrollDelta across multiple
|
||||||
|
// scroll events. We dispatch a scroll event whenever the accumulated scroll
|
||||||
|
// becomes larger than m_mouseScrollDelta
|
||||||
|
mutable int m_accumulatedScroll;
|
||||||
|
|
||||||
Display* m_display;
|
Display* m_display;
|
||||||
Window m_root;
|
Window m_root;
|
||||||
Window m_window;
|
Window m_window;
|
||||||
|
|
Loading…
Reference in New Issue