aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2024-10-14 14:57:38 +0200
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2024-10-14 14:57:38 +0200
commitb5d3c540086c04326f6497a4e37d65c24ebfe175 (patch)
tree323840a7003f89b3ec0b082d75eec555c1e92198
parent0d1e5a0360d51d27843c166c313e07331e15d588 (diff)
Branch libreoffice-24-2-7
This is 'libreoffice-24-2-7' - the stable branch for the 24.2.7 release. Only very safe changes, reviewed by three people are allowed. If you want to commit more complicated fix for the next 24.2.x release, please use the 'libreoffice-24-2' branch. If you want to build something cool, unstable, and risky, use master. Change-Id: I6ac2800bbcd1871da3591ebf951371ecab224870
0 files changed, 0 insertions, 0 deletions
ions-5-0'>feature/svg-optimisations-5-0 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/vcl/qt5/QtObject.cxx
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2021-09-28 15:55:43 +0200
committerMichael Weghorn <m.weghorn@posteo.de>2021-09-29 13:50:28 +0200
commitb9cd02937b358ae035ed554a28037237a6c8434c (patch)
tree5dc296220e1af8dfaa5605180194c2426a60f499 /vcl/qt5/QtObject.cxx
parentdfd3fdfe664e214ca1bba72b96d19b89ff25e7bc (diff)
qt5: Rename sources + headers according to new class names
This renames the source and header files according to the new class names without a "5" in them, as mentioned in Change-Id: Idf422f82ca9dafbb70e9a64de9c8cfc4cc8c0909 (qt5: Remove "5" from class names in qt5 VCL plugin): > Renaming the headers and source files will be done > in a separate commit to make tracking git history easier. Change-Id: If955e77c8ba508d0a2e01e3a9df1be6dc04c4e4e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122806 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Diffstat (limited to 'vcl/qt5/QtObject.cxx')
-rw-r--r--vcl/qt5/QtObject.cxx157
1 files changed, 157 insertions, 0 deletions
diff --git a/vcl/qt5/QtObject.cxx b/vcl/qt5/QtObject.cxx
new file mode 100644
index 000000000000..1c9bc8d1fe09
--- /dev/null
+++ b/vcl/qt5/QtObject.cxx
@@ -0,0 +1,157 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <QtObject.hxx>
+#include <QtObject.moc>
+
+#include <QtFrame.hxx>
+#include <QtWidget.hxx>
+
+#include <QtGui/QGuiApplication>
+
+QtObject::QtObject(QtFrame* pParent, bool bShow)
+ : m_pParent(pParent)
+ , m_pQWidget(nullptr)
+ , m_pQWindow(nullptr)
+{
+ if (!m_pParent || !pParent->GetQWidget())
+ return;
+
+ m_pQWindow = new QtObjectWindow(*this);
+ m_pQWidget = QWidget::createWindowContainer(m_pQWindow, pParent->GetQWidget());
+ m_pQWidget->setAttribute(Qt::WA_NoSystemBackground);
+ connect(m_pQWidget, &QObject::destroyed, this, [this]() { m_pQWidget = nullptr; });
+
+ if (bShow)
+ m_pQWidget->show();
+
+ m_aSystemData.aShellWindow = reinterpret_cast<sal_IntPtr>(this);
+ //m_aSystemData.pSalFrame = this;
+ m_aSystemData.pWidget = m_pQWidget;
+ //m_aSystemData.nScreen = m_nXScreen.getXScreen();
+ m_aSystemData.toolkit = SystemEnvData::Toolkit::Qt5;
+ m_aSystemData.platform = SystemEnvData::Platform::Xcb;
+ const bool bWayland = QGuiApplication::platformName() == "wayland";
+ if (!bWayland)
+ {
+ m_aSystemData.platform = SystemEnvData::Platform::Xcb;
+ m_aSystemData.SetWindowHandle(m_pQWindow->winId()); // ID of the embedded window
+ }
+ else
+ {
+ m_aSystemData.platform = SystemEnvData::Platform::Wayland;
+ // TODO implement as needed for Wayland,
+ // s.a. commit c0d4f3ad3307c which did this for gtk3
+ // QPlatformNativeInterface* native = QGuiApplication::platformNativeInterface();
+ // m_aSystemData.pDisplay = native->nativeResourceForWindow("display", nullptr);
+ // m_aSystemData.aWindow = reinterpret_cast<unsigned long>(
+ // native->nativeResourceForWindow("surface", m_pQWidget->windowHandle()));
+ }
+}
+
+QtObject::~QtObject()
+{
+ if (m_pQWidget)
+ {
+ m_pQWidget->setParent(nullptr);
+ delete m_pQWidget;
+ }
+}
+
+void QtObject::ResetClipRegion()
+{
+ if (m_pQWidget)
+ m_pRegion = QRegion(m_pQWidget->geometry());
+ else
+ m_pRegion = QRegion();
+}
+
+void QtObject::BeginSetClipRegion(sal_uInt32) { m_pRegion = QRegion(); }
+
+void QtObject::UnionClipRegion(tools::Long nX, tools::Long nY, tools::Long nWidth,
+ tools::Long nHeight)
+{
+ m_pRegion += QRect(nX, nY, nWidth, nHeight);
+}
+
+void QtObject::EndSetClipRegion()
+{
+ if (m_pQWidget)
+ m_pRegion = m_pRegion.intersected(m_pQWidget->geometry());
+}
+
+void QtObject::SetPosSize(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight)
+{
+ if (m_pQWidget)
+ {
+ m_pQWidget->move(nX, nY);
+ m_pQWidget->setFixedSize(nWidth, nHeight);
+ }
+}
+
+void QtObject::Show(bool bVisible)
+{
+ if (m_pQWidget)
+ m_pQWidget->setVisible(bVisible);
+}
+
+void QtObject::SetForwardKey(bool /*bEnable*/) {}
+
+QtObjectWindow::QtObjectWindow(QtObject& rParent)
+ : m_rParent(rParent)
+{
+ assert(m_rParent.frame() && m_rParent.frame()->GetQWidget());
+}
+
+void QtObjectWindow::focusInEvent(QFocusEvent* pEvent)
+{
+ m_rParent.CallCallback(SalObjEvent::GetFocus);
+ QWindow::focusInEvent(pEvent);
+}
+
+void QtObjectWindow::focusOutEvent(QFocusEvent* pEvent)
+{
+ m_rParent.CallCallback(SalObjEvent::LoseFocus);
+ QWindow::focusOutEvent(pEvent);
+}
+
+void QtObjectWindow::mousePressEvent(QMouseEvent* pEvent)
+{
+ m_rParent.CallCallback(SalObjEvent::ToTop);
+ QtWidget::handleMousePressEvent(*m_rParent.frame(), pEvent);
+}
+
+void QtObjectWindow::mouseReleaseEvent(QMouseEvent* pEvent)
+{
+ QtWidget::handleMouseReleaseEvent(*m_rParent.frame(), pEvent);
+}
+
+bool QtObjectWindow::event(QEvent* pEvent)
+{
+ return QtWidget::handleEvent(*m_rParent.frame(), *m_rParent.widget(), pEvent)
+ || QWindow::event(pEvent);
+}
+
+void QtObjectWindow::keyReleaseEvent(QKeyEvent* pEvent)
+{
+ if (!QtWidget::handleKeyReleaseEvent(*m_rParent.frame(), *m_rParent.widget(), pEvent))
+ QWindow::keyReleaseEvent(pEvent);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */