LibreOffice Module vcl (master)  1
Qt5Object.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #pragma once
21 
22 #include <salobj.hxx>
23 #include <vcl/sysdata.hxx>
24 
25 #include <QtCore/QObject>
26 #include <QtGui/QRegion>
27 #include <QtGui/QWindow>
28 
29 class Qt5Frame;
30 class QWidget;
31 
32 class Qt5Object : public QObject, public SalObject
33 {
34  Q_OBJECT
35 
38  QWidget* m_pQWidget; // main widget, container
39  QWindow* m_pQWindow; // contained window, used for opengl rendering
40  QRegion m_pRegion;
41 
42 public:
43  Qt5Object(Qt5Frame* pParent, bool bShow);
44  ~Qt5Object() override;
45 
46  Qt5Frame* frame() const { return m_pParent; }
47  QWidget* widget() const { return m_pQWidget; }
48  QWindow* windowHandle() const { return m_pQWindow; }
49 
50  virtual void ResetClipRegion() override;
51  virtual void BeginSetClipRegion(sal_uInt32 nRects) override;
52  virtual void UnionClipRegion(long nX, long nY, long nWidth, long nHeight) override;
53  virtual void EndSetClipRegion() override;
54 
55  virtual void SetPosSize(long nX, long nY, long nWidth, long nHeight) override;
56  virtual void Show(bool bVisible) override;
57 
58  virtual void SetForwardKey(bool bEnable) override;
59 
60  virtual const SystemEnvData* GetSystemData() const override { return &m_aSystemData; }
61 };
62 
63 class Qt5ObjectWindow : public QWindow
64 {
66 
67  bool event(QEvent*) override;
68  void focusInEvent(QFocusEvent*) override;
69  void focusOutEvent(QFocusEvent*) override;
70  void mousePressEvent(QMouseEvent*) override;
71  void mouseReleaseEvent(QMouseEvent*) override;
72  // keyPressEvent(QKeyEvent*) is handled via event(QEvent*); see comment in Qt5Widget::event
73  void keyReleaseEvent(QKeyEvent*) override;
74 
75 public:
76  explicit Qt5ObjectWindow(Qt5Object& rParent);
77 };
78 
79 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
QWidget * m_pQWidget
Definition: Qt5Object.hxx:38
QWindow * m_pQWindow
Definition: Qt5Object.hxx:39
void mouseReleaseEvent(QMouseEvent *) override
virtual const SystemEnvData * GetSystemData() const override
Definition: Qt5Object.hxx:60
Qt5Frame * m_pParent
Definition: Qt5Object.hxx:37
Qt5Object & m_rParent
Definition: Qt5Object.hxx:65
QWindow * windowHandle() const
Definition: Qt5Object.hxx:48
void keyReleaseEvent(QKeyEvent *) override
virtual void SetForwardKey(bool bEnable) override
virtual void ResetClipRegion() override
virtual void Show(bool bVisible) override
Qt5Frame * frame() const
Definition: Qt5Object.hxx:46
virtual void UnionClipRegion(long nX, long nY, long nWidth, long nHeight) override
virtual void BeginSetClipRegion(sal_uInt32 nRects) override
void focusInEvent(QFocusEvent *) override
QWidget * widget() const
Definition: Qt5Object.hxx:47
Qt5ObjectWindow(Qt5Object &rParent)
bool event(QEvent *) override
virtual void SetPosSize(long nX, long nY, long nWidth, long nHeight) override
virtual void EndSetClipRegion() override
SystemEnvData m_aSystemData
Definition: Qt5Object.hxx:36
void mousePressEvent(QMouseEvent *) override
QRegion m_pRegion
Definition: Qt5Object.hxx:40
Qt5Object(Qt5Frame *pParent, bool bShow)
void focusOutEvent(QFocusEvent *) override
~Qt5Object() override