1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 or (at your option) any later version
20** approved by the KDE Free Qt Foundation. The licenses are as published by
21** the Free Software Foundation and appearing in the file LICENSE.GPL3
22** included in the packaging of this file. Please review the following
23** information to ensure the GNU General Public License requirements will
24** be met: https://www.gnu.org/licenses/gpl-3.0.html.
25**
26** $QT_END_LICENSE$
27**
28****************************************************************************/
29
30#include <QtVirtualKeyboard/private/inputselectionhandle_p.h>
31#include <QtVirtualKeyboard/private/desktopinputselectioncontrol_p.h>
32
33#include <QtCore/qcoreapplication.h>
34#include <QtGui/QPainter>
35
36QT_BEGIN_NAMESPACE
37namespace QtVirtualKeyboard {
38InputSelectionHandle::InputSelectionHandle(DesktopInputSelectionControl *control, QWindow *eventWindow)
39 : QRasterWindow()
40 , m_control(control)
41 , m_eventWindow(eventWindow)
42{
43 setFlags(Qt::ToolTip |
44 Qt::FramelessWindowHint |
45 Qt::WindowStaysOnTopHint |
46 Qt::WindowDoesNotAcceptFocus);
47
48 QSurfaceFormat format;
49 format.setAlphaBufferSize(8);
50 setFormat(format);
51}
52
53void InputSelectionHandle::applyImage(const QSize &windowSize)
54{
55 resize(newSize: windowSize);
56 update(); // update paint device in case resize() did not resize.
57}
58
59void InputSelectionHandle::paintEvent(QPaintEvent *pe)
60{
61 Q_UNUSED(pe);
62 QPainter painter(this);
63
64 Q_ASSERT(m_control);
65 QImage *img = m_control->handleImage();
66 const QSize szDelta = size() - img->size();
67 // center image onto window
68 painter.drawImage(p: QPoint(szDelta.width(), szDelta.height())/2, image: *img);
69}
70
71bool InputSelectionHandle::event(QEvent *e)
72{
73 switch (e->type())
74 {
75 case QEvent::MouseButtonPress:
76 case QEvent::MouseButtonRelease:
77 case QEvent::MouseMove:
78 return QCoreApplication::sendEvent(receiver: m_eventWindow, event: e);
79 default:
80 break;
81 }
82 return QRasterWindow::event(event: e);
83}
84
85} // namespace QtVirtualKeyboard
86QT_END_NAMESPACE
87

source code of qtvirtualkeyboard/src/virtualkeyboard/inputselectionhandle.cpp