Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# Daniel Nachbaur <daniel.nachbaur@epfl.ch>

cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(Deflect VERSION 0.11.1)
project(Deflect VERSION 0.12.0)
set(Deflect_VERSION_ABI 4)

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake
Expand Down
6 changes: 6 additions & 0 deletions deflect/qt/EventReceiver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ void EventReceiver::_onEvent( int socket )
case Event::EVT_SWIPE_UP:
case Event::EVT_SWIPE_DOWN:
case Event::EVT_KEY_PRESS:
emit keyPress( deflectEvent.key, deflectEvent.modifiers,
QString::fromStdString( deflectEvent.text ));
break;
case Event::EVT_KEY_RELEASE:
emit keyRelease( deflectEvent.key, deflectEvent.modifiers,
QString::fromStdString( deflectEvent.text ));
break;
default:
break;
}
Expand Down
2 changes: 2 additions & 0 deletions deflect/qt/EventReceiver.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ class EventReceiver : public QObject
void moved( double x, double y );
void resized( double x, double y );
void wheeled( double x, double y, double dy );
void keyPress( int key, int modifiers, QString text );
void keyRelease( int key, int modifiers, QString text );

private slots:
void _onEvent( int socket );
Expand Down
39 changes: 39 additions & 0 deletions deflect/qt/QmlStreamerImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,41 @@ void QmlStreamer::Impl::_onResized( double x_, double y_ )
QCoreApplication::postEvent( this, resizeEvent_ );
}

void QmlStreamer::Impl::_onKeyPress( int key, int modifiers, QString text )
{
QKeyEvent* keyEvent_ = new QKeyEvent( QEvent::KeyPress, key,
(Qt::KeyboardModifiers)modifiers,
text );
_send( keyEvent_ );
}

void QmlStreamer::Impl::_onKeyRelease( int key, int modifiers, QString text )
{
QKeyEvent* keyEvent_ = new QKeyEvent( QEvent::KeyRelease, key,
(Qt::KeyboardModifiers)modifiers,
text );
_send( keyEvent_ );
}

void QmlStreamer::Impl::_send( QKeyEvent* keyEvent_ )
{
// Work around missing key event support in Qt for offscreen windows.

const QList<QQuickItem*> items =
_rootItem->findChildren<QQuickItem*>( QString(),
Qt::FindChildrenRecursively );
for( QQuickItem* item : items )
{
if( item->hasFocus( ))
{
_quickWindow->sendEvent( item, keyEvent_ );
if( keyEvent_->isAccepted())
break;
}
}
delete keyEvent_;
}

bool QmlStreamer::Impl::_setupRootItem()
{
disconnect( _qmlComponent, &QQmlComponent::statusChanged,
Expand Down Expand Up @@ -372,6 +407,10 @@ bool QmlStreamer::Impl::_setupDeflectStream()
this, &QmlStreamer::Impl::_onResized );
connect( _eventHandler, &EventReceiver::wheeled,
this, &QmlStreamer::Impl::_onWheeled );
connect( _eventHandler, &EventReceiver::keyPress,
this, &QmlStreamer::Impl::_onKeyPress );
connect( _eventHandler, &EventReceiver::keyRelease,
this, &QmlStreamer::Impl::_onKeyRelease );

return true;
}
Expand Down
3 changes: 3 additions & 0 deletions deflect/qt/QmlStreamerImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,14 @@ private slots:
void _onMoved( double, double );
void _onResized( double, double );
void _onWheeled( double, double, double );
void _onKeyPress( int key, int modifiers, QString text );
void _onKeyRelease( int key, int modifiers, QString text );

signals:
void streamClosed();

private:
void _send( QKeyEvent* keyEvent );
std::string _getDeflectStreamIdentifier() const;
bool _setupDeflectStream();
void _updateSizes( const QSize& size );
Expand Down
7 changes: 7 additions & 0 deletions doc/Changelog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
Changelog {#Changelog}
============

## Deflect 0.12

### 0.12.0 (git master)

* [114](https://github.com/BlueBrain/Deflect/pull/114):
QmlStreamer: added support for keyboard events

## Deflect 0.11

### 0.11.1 (30-06-2016)
Expand Down