There are a few benefits to using smart pointers from the standard library: - std::unique_ptr has move semantics. With move semantics, transfer of ownership can be properly expressed - std::shared_ptr is more efficient than QSharedPointer - more developers are used to them, making contributions for newcomers easier We're also already using a mix of both; because Qt shared pointers provide no benefits, porting to standard smart pointers improves consistency in the code base. Because of that, this commit ports most of the uses of QSharedPointer to std::shared_ptr, and some uses of QScopedPointer to std::unique_ptr
98 lines
3.2 KiB
C++
98 lines
3.2 KiB
C++
/*
|
|
KWin - the KDE window manager
|
|
This file is part of the KDE project.
|
|
|
|
SPDX-FileCopyrightText: 2019 Martin Flöser <mgraesslin@kde.org>
|
|
SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
#pragma once
|
|
|
|
#include "window.h"
|
|
|
|
namespace KWin
|
|
{
|
|
|
|
class KWIN_EXPORT InternalWindow : public Window
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit InternalWindow(QWindow *handle);
|
|
~InternalWindow() override;
|
|
|
|
bool eventFilter(QObject *watched, QEvent *event) override;
|
|
|
|
QString captionNormal() const override;
|
|
QString captionSuffix() const override;
|
|
QSize minSize() const override;
|
|
QSize maxSize() const override;
|
|
NET::WindowType windowType(bool direct = false, int supported_types = 0) const override;
|
|
void killWindow() override;
|
|
bool isClient() const override;
|
|
bool isPopupWindow() const override;
|
|
QByteArray windowRole() const override;
|
|
void closeWindow() override;
|
|
bool isCloseable() const override;
|
|
bool isMovable() const override;
|
|
bool isMovableAcrossScreens() const override;
|
|
bool isResizable() const override;
|
|
bool isPlaceable() const override;
|
|
bool noBorder() const override;
|
|
bool userCanSetNoBorder() const override;
|
|
bool wantsInput() const override;
|
|
bool isInternal() const override;
|
|
bool isLockScreen() const override;
|
|
bool isOutline() const override;
|
|
bool isShown() const override;
|
|
bool isHiddenInternal() const override;
|
|
void hideClient() override;
|
|
void showClient() override;
|
|
void resizeWithChecks(const QSize &size) override;
|
|
Window *findModal(bool allow_itself = false) override;
|
|
bool takeFocus() override;
|
|
void setNoBorder(bool set) override;
|
|
void invalidateDecoration() override;
|
|
void destroyWindow() override;
|
|
bool hasPopupGrab() const override;
|
|
void popupDone() override;
|
|
bool hitTest(const QPoint &point) const override;
|
|
void pointerEnterEvent(const QPoint &globalPos) override;
|
|
void pointerLeaveEvent() override;
|
|
|
|
void present(const std::shared_ptr<QOpenGLFramebufferObject> fbo);
|
|
void present(const QImage &image, const QRegion &damage);
|
|
qreal bufferScale() const;
|
|
QWindow *handle() const;
|
|
|
|
protected:
|
|
bool acceptsFocus() const override;
|
|
bool belongsToSameApplication(const Window *other, SameApplicationChecks checks) const override;
|
|
void doInteractiveResizeSync() override;
|
|
void updateCaption() override;
|
|
void moveResizeInternal(const QRect &rect, MoveResizeMode mode) override;
|
|
WindowItem *createItem() override;
|
|
|
|
private:
|
|
void requestGeometry(const QRect &rect);
|
|
void commitGeometry(const QRect &rect);
|
|
void setCaption(const QString &caption);
|
|
void markAsMapped();
|
|
void syncGeometryToInternalWindow();
|
|
void updateInternalWindowGeometry();
|
|
void updateDecoration(bool check_workspace_pos, bool force = false);
|
|
void createDecoration(const QRect &oldGeometry);
|
|
void destroyDecoration();
|
|
|
|
QWindow *m_handle = nullptr;
|
|
QString m_captionNormal;
|
|
QString m_captionSuffix;
|
|
NET::WindowType m_windowType = NET::Normal;
|
|
Qt::WindowFlags m_internalWindowFlags = Qt::WindowFlags();
|
|
bool m_userNoBorder = false;
|
|
|
|
Q_DISABLE_COPY(InternalWindow)
|
|
};
|
|
|
|
}
|