我如何为 KDE 编译这个 window 装饰?
How can I compile this window decoration for KDE?
我正在尝试为我的 Manjaro 启动(Arch 发行版)编译 window 装饰,但我收到此错误:
/home/ldoney/material-decoration-bt/src/CloseButton.cc: In constructor ‘Material::CloseButton::CloseButton(Material::Decoration*, QObject*)’:
/home/ldoney/material-decoration-bt/src/CloseButton.cc:34:55: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
34 | auto *decoratedClient = decoration->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/CloseButton.h:21,
from /home/ldoney/material-decoration-bt/src/CloseButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/CloseButton.cc: In member function ‘QColor Material::CloseButton::backgroundColor() const’:
/home/ldoney/material-decoration-bt/src/CloseButton.cc:87:53: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
87 | auto *decoratedClient = deco->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/CloseButton.h:21,
from /home/ldoney/material-decoration-bt/src/CloseButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/CloseButton.cc:95:53: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
95 | auto *decoratedClient = deco->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/CloseButton.h:21,
from /home/ldoney/material-decoration-bt/src/CloseButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/MinimizeButton.cc: In constructor ‘Material::MinimizeButton::MinimizeButton(Material::Decoration*, QObject*)’:
/home/ldoney/material-decoration-bt/src/MinimizeButton.cc:37:55: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
37 | auto *decoratedClient = decoration->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/MinimizeButton.h:21,
from /home/ldoney/material-decoration-bt/src/MinimizeButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/MaximizeButton.cc: In constructor ‘Material::MaximizeButton::MaximizeButton(Material::Decoration*, QObject*)’:
/home/ldoney/material-decoration-bt/src/MaximizeButton.cc:37:55: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
37 | auto *decoratedClient = decoration->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/MaximizeButton.h:21,
from /home/ldoney/material-decoration-bt/src/MaximizeButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘virtual void Material::Decoration::paint(QPainter*, const QRect&)’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:109:43: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
109 | auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘virtual void Material::Decoration::init()’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:122:43: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
122 | auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::updateTitleBar()’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:202:43: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
202 | auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::paintFrameBackground(QPainter*, const QRect&) const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:297:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
297 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘QColor Material::Decoration::titleBarBackgroundColor() const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:317:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
317 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘QColor Material::Decoration::titleBarForegroundColor() const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:331:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
331 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::paintTitleBarBackground(QPainter*, const QRect&) const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:342:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
342 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::paintCaption(QPainter*, const QRect&) const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:355:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
355 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
cc1plus: all warnings being treated as errors
cc1plus: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:109: src/CMakeFiles/materialdecoration.dir/CloseButton.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:148: src/CMakeFiles/materialdecoration.dir/MinimizeButton.cc.o] Error 1
cc1plus: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:135: src/CMakeFiles/materialdecoration.dir/MaximizeButton.cc.o] Error 1
cc1plus: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:122: src/CMakeFiles/materialdecoration.dir/Decoration.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:175: src/CMakeFiles/materialdecoration.dir/all] Error 2
make: *** [Makefile:161: all] Error 2
我认为问题与我的 qt 版本有关,我安装了这些软件包:cmake extra-cmake-modules kdecoration qt5-declarative qt5-x11extras
This is the window decoration's github
我是不是少了一个包裹?是否有过时的包裹或 window 装饰本身已过时?和往常一样,如果我遗漏了您需要帮助我的任何关键信息,请告诉我。谢谢!
客户端方法returns一个QWeakPointer
that had a data()
访问指针的方法但是现在已经弃用了,解决办法是改成:
foo->client().data()
到
foo->client().toStrongRef().data()
我已经创建了应用该更改的项目的 fork,因此您可以使用它:
git clone https://github.com/eyllanesc/material-decoration-bt.git
cd material-decoration-bt; bash setup.sh
或将以下补丁应用于原始存储库:
From 00b3b491c754152ff96b9656fff998bacd7ec670 Mon Sep 17 00:00:00 2001
From: eyllanesc <e.yllanescucho@gmail.com>
Date: Wed, 3 Jun 2020 11:28:44 -0500
Subject: [PATCH] fix deprecated
---
src/CloseButton.cc | 6 +++---
src/Decoration.cc | 16 ++++++++--------
src/MaximizeButton.cc | 2 +-
src/MinimizeButton.cc | 2 +-
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/CloseButton.cc b/src/CloseButton.cc
index f61d7f5..99148ed 100644
--- a/src/CloseButton.cc
+++ b/src/CloseButton.cc
@@ -31,7 +31,7 @@ namespace Material
CloseButton::CloseButton(Decoration *decoration, QObject *parent)
: DecorationButton(KDecoration2::DecorationButtonType::Close, decoration, parent)
{
- auto *decoratedClient = decoration->client().data();
+ auto *decoratedClient = decoration->client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::closeableChanged,
this, &CloseButton::setVisible);
@@ -84,7 +84,7 @@ QColor CloseButton::backgroundColor() const
}
if (isPressed()) {
- auto *decoratedClient = deco->client().data();
+ auto *decoratedClient = deco->client().toStrongRef().data();
return decoratedClient->color(
KDecoration2::ColorGroup::Warning,
KDecoration2::ColorRole::Foreground
@@ -92,7 +92,7 @@ QColor CloseButton::backgroundColor() const
}
if (isHovered()) {
- auto *decoratedClient = deco->client().data();
+ auto *decoratedClient = deco->client().toStrongRef().data();
return decoratedClient->color(
KDecoration2::ColorGroup::Warning,
KDecoration2::ColorRole::Foreground
diff --git a/src/Decoration.cc b/src/Decoration.cc
index f388216..997f69f 100644
--- a/src/Decoration.cc
+++ b/src/Decoration.cc
@@ -106,7 +106,7 @@ Decoration::~Decoration()
void Decoration::paint(QPainter *painter, const QRect &repaintRegion)
{
- auto *decoratedClient = client().data();
+ auto *decoratedClient = client().toStrongRef().data();
if (!decoratedClient->isShaded()) {
paintFrameBackground(painter, repaintRegion);
@@ -119,7 +119,7 @@ void Decoration::paint(QPainter *painter, const QRect &repaintRegion)
void Decoration::init()
{
- auto *decoratedClient = client().data();
+ auto *decoratedClient = client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::widthChanged,
this, &Decoration::updateTitleBar);
@@ -199,7 +199,7 @@ void Decoration::updateResizeBorders()
void Decoration::updateTitleBar()
{
- auto *decoratedClient = client().data();
+ auto *decoratedClient = client().toStrongRef().data();
setTitleBar(QRect(0, 0, decoratedClient->width(), titleBarHeight()));
}
@@ -294,7 +294,7 @@ void Decoration::paintFrameBackground(QPainter *painter, const QRect &repaintReg
{
Q_UNUSED(repaintRegion)
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
painter->save();
@@ -314,7 +314,7 @@ void Decoration::paintFrameBackground(QPainter *painter, const QRect &repaintReg
QColor Decoration::titleBarBackgroundColor() const
{
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
const auto group = decoratedClient->isActive()
? KDecoration2::ColorGroup::Active
: KDecoration2::ColorGroup::Inactive;
@@ -328,7 +328,7 @@ QColor Decoration::titleBarBackgroundColor() const
QColor Decoration::titleBarForegroundColor() const
{
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
const auto group = decoratedClient->isActive()
? KDecoration2::ColorGroup::Active
: KDecoration2::ColorGroup::Inactive;
@@ -339,7 +339,7 @@ void Decoration::paintTitleBarBackground(QPainter *painter, const QRect &repaint
{
Q_UNUSED(repaintRegion)
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
painter->save();
painter->setPen(Qt::NoPen);
@@ -352,7 +352,7 @@ void Decoration::paintCaption(QPainter *painter, const QRect &repaintRegion) con
{
Q_UNUSED(repaintRegion)
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
const int textWidth = settings()->fontMetrics().boundingRect(decoratedClient->caption()).width();
const QRect textRect((size().width() - textWidth) / 2, 0, textWidth, titleBarHeight());
diff --git a/src/MaximizeButton.cc b/src/MaximizeButton.cc
index ea608ce..495071c 100644
--- a/src/MaximizeButton.cc
+++ b/src/MaximizeButton.cc
@@ -34,7 +34,7 @@ namespace Material
MaximizeButton::MaximizeButton(Decoration *decoration, QObject *parent)
: DecorationButton(KDecoration2::DecorationButtonType::Maximize, decoration, parent)
{
- auto *decoratedClient = decoration->client().data();
+ auto *decoratedClient = decoration->client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::maximizeableChanged,
this, &MaximizeButton::setVisible);
diff --git a/src/MinimizeButton.cc b/src/MinimizeButton.cc
index 03c1dd4..3760669 100644
--- a/src/MinimizeButton.cc
+++ b/src/MinimizeButton.cc
@@ -34,7 +34,7 @@ namespace Material
MinimizeButton::MinimizeButton(Decoration *decoration, QObject *parent)
: DecorationButton(KDecoration2::DecorationButtonType::Minimize, decoration, parent)
{
- auto *decoratedClient = decoration->client().data();
+ auto *decoratedClient = decoration->client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::minimizeableChanged,
this, &MinimizeButton::setVisible);
--
2.27.0
我正在尝试为我的 Manjaro 启动(Arch 发行版)编译 window 装饰,但我收到此错误:
/home/ldoney/material-decoration-bt/src/CloseButton.cc: In constructor ‘Material::CloseButton::CloseButton(Material::Decoration*, QObject*)’:
/home/ldoney/material-decoration-bt/src/CloseButton.cc:34:55: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
34 | auto *decoratedClient = decoration->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/CloseButton.h:21,
from /home/ldoney/material-decoration-bt/src/CloseButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/CloseButton.cc: In member function ‘QColor Material::CloseButton::backgroundColor() const’:
/home/ldoney/material-decoration-bt/src/CloseButton.cc:87:53: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
87 | auto *decoratedClient = deco->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/CloseButton.h:21,
from /home/ldoney/material-decoration-bt/src/CloseButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/CloseButton.cc:95:53: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
95 | auto *decoratedClient = deco->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/CloseButton.h:21,
from /home/ldoney/material-decoration-bt/src/CloseButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/MinimizeButton.cc: In constructor ‘Material::MinimizeButton::MinimizeButton(Material::Decoration*, QObject*)’:
/home/ldoney/material-decoration-bt/src/MinimizeButton.cc:37:55: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
37 | auto *decoratedClient = decoration->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/MinimizeButton.h:21,
from /home/ldoney/material-decoration-bt/src/MinimizeButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/MaximizeButton.cc: In constructor ‘Material::MaximizeButton::MaximizeButton(Material::Decoration*, QObject*)’:
/home/ldoney/material-decoration-bt/src/MaximizeButton.cc:37:55: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
37 | auto *decoratedClient = decoration->client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decorationbutton.h:27,
from /usr/include/KDecoration2/KDecoration2/DecorationButton:1,
from /home/ldoney/material-decoration-bt/src/MaximizeButton.h:21,
from /home/ldoney/material-decoration-bt/src/MaximizeButton.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘virtual void Material::Decoration::paint(QPainter*, const QRect&)’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:109:43: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
109 | auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘virtual void Material::Decoration::init()’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:122:43: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
122 | auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::updateTitleBar()’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:202:43: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
202 | auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::paintFrameBackground(QPainter*, const QRect&) const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:297:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
297 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘QColor Material::Decoration::titleBarBackgroundColor() const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:317:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
317 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘QColor Material::Decoration::titleBarForegroundColor() const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:331:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
331 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::paintTitleBarBackground(QPainter*, const QRect&) const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:342:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
342 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
/home/ldoney/material-decoration-bt/src/Decoration.cc: In member function ‘void Material::Decoration::paintCaption(QPainter*, const QRect&) const’:
/home/ldoney/material-decoration-bt/src/Decoration.cc:355:49: error: ‘T* QWeakPointer<T>::data() const [with T = KDecoration2::DecoratedClient]’ is deprecated: Use toStrongRef() instead, and data() on the returned QSharedPointer [-Werror=deprecated-declarations]
355 | const auto *decoratedClient = client().data();
| ^
In file included from /usr/include/qt/QtCore/qsharedpointer.h:48,
from /usr/include/qt/QtCore/qpointer.h:43,
from /usr/include/qt/QtCore/QPointer:1,
from /usr/include/KDecoration2/kdecoration2/decoration.h:28,
from /usr/include/KDecoration2/KDecoration2/Decoration:1,
from /home/ldoney/material-decoration-bt/src/Decoration.h:21,
from /home/ldoney/material-decoration-bt/src/Decoration.cc:19:
/usr/include/qt/QtCore/qsharedpointer_impl.h:565:8: note: declared here
565 | T *data() const noexcept { return internalData(); }
| ^~~~
cc1plus: all warnings being treated as errors
cc1plus: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:109: src/CMakeFiles/materialdecoration.dir/CloseButton.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:148: src/CMakeFiles/materialdecoration.dir/MinimizeButton.cc.o] Error 1
cc1plus: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:135: src/CMakeFiles/materialdecoration.dir/MaximizeButton.cc.o] Error 1
cc1plus: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/materialdecoration.dir/build.make:122: src/CMakeFiles/materialdecoration.dir/Decoration.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:175: src/CMakeFiles/materialdecoration.dir/all] Error 2
make: *** [Makefile:161: all] Error 2
我认为问题与我的 qt 版本有关,我安装了这些软件包:cmake extra-cmake-modules kdecoration qt5-declarative qt5-x11extras
This is the window decoration's github
我是不是少了一个包裹?是否有过时的包裹或 window 装饰本身已过时?和往常一样,如果我遗漏了您需要帮助我的任何关键信息,请告诉我。谢谢!
客户端方法returns一个QWeakPointer
that had a data()
访问指针的方法但是现在已经弃用了,解决办法是改成:
foo->client().data()
到
foo->client().toStrongRef().data()
我已经创建了应用该更改的项目的 fork,因此您可以使用它:
git clone https://github.com/eyllanesc/material-decoration-bt.git
cd material-decoration-bt; bash setup.sh
或将以下补丁应用于原始存储库:
From 00b3b491c754152ff96b9656fff998bacd7ec670 Mon Sep 17 00:00:00 2001
From: eyllanesc <e.yllanescucho@gmail.com>
Date: Wed, 3 Jun 2020 11:28:44 -0500
Subject: [PATCH] fix deprecated
---
src/CloseButton.cc | 6 +++---
src/Decoration.cc | 16 ++++++++--------
src/MaximizeButton.cc | 2 +-
src/MinimizeButton.cc | 2 +-
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/CloseButton.cc b/src/CloseButton.cc
index f61d7f5..99148ed 100644
--- a/src/CloseButton.cc
+++ b/src/CloseButton.cc
@@ -31,7 +31,7 @@ namespace Material
CloseButton::CloseButton(Decoration *decoration, QObject *parent)
: DecorationButton(KDecoration2::DecorationButtonType::Close, decoration, parent)
{
- auto *decoratedClient = decoration->client().data();
+ auto *decoratedClient = decoration->client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::closeableChanged,
this, &CloseButton::setVisible);
@@ -84,7 +84,7 @@ QColor CloseButton::backgroundColor() const
}
if (isPressed()) {
- auto *decoratedClient = deco->client().data();
+ auto *decoratedClient = deco->client().toStrongRef().data();
return decoratedClient->color(
KDecoration2::ColorGroup::Warning,
KDecoration2::ColorRole::Foreground
@@ -92,7 +92,7 @@ QColor CloseButton::backgroundColor() const
}
if (isHovered()) {
- auto *decoratedClient = deco->client().data();
+ auto *decoratedClient = deco->client().toStrongRef().data();
return decoratedClient->color(
KDecoration2::ColorGroup::Warning,
KDecoration2::ColorRole::Foreground
diff --git a/src/Decoration.cc b/src/Decoration.cc
index f388216..997f69f 100644
--- a/src/Decoration.cc
+++ b/src/Decoration.cc
@@ -106,7 +106,7 @@ Decoration::~Decoration()
void Decoration::paint(QPainter *painter, const QRect &repaintRegion)
{
- auto *decoratedClient = client().data();
+ auto *decoratedClient = client().toStrongRef().data();
if (!decoratedClient->isShaded()) {
paintFrameBackground(painter, repaintRegion);
@@ -119,7 +119,7 @@ void Decoration::paint(QPainter *painter, const QRect &repaintRegion)
void Decoration::init()
{
- auto *decoratedClient = client().data();
+ auto *decoratedClient = client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::widthChanged,
this, &Decoration::updateTitleBar);
@@ -199,7 +199,7 @@ void Decoration::updateResizeBorders()
void Decoration::updateTitleBar()
{
- auto *decoratedClient = client().data();
+ auto *decoratedClient = client().toStrongRef().data();
setTitleBar(QRect(0, 0, decoratedClient->width(), titleBarHeight()));
}
@@ -294,7 +294,7 @@ void Decoration::paintFrameBackground(QPainter *painter, const QRect &repaintReg
{
Q_UNUSED(repaintRegion)
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
painter->save();
@@ -314,7 +314,7 @@ void Decoration::paintFrameBackground(QPainter *painter, const QRect &repaintReg
QColor Decoration::titleBarBackgroundColor() const
{
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
const auto group = decoratedClient->isActive()
? KDecoration2::ColorGroup::Active
: KDecoration2::ColorGroup::Inactive;
@@ -328,7 +328,7 @@ QColor Decoration::titleBarBackgroundColor() const
QColor Decoration::titleBarForegroundColor() const
{
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
const auto group = decoratedClient->isActive()
? KDecoration2::ColorGroup::Active
: KDecoration2::ColorGroup::Inactive;
@@ -339,7 +339,7 @@ void Decoration::paintTitleBarBackground(QPainter *painter, const QRect &repaint
{
Q_UNUSED(repaintRegion)
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
painter->save();
painter->setPen(Qt::NoPen);
@@ -352,7 +352,7 @@ void Decoration::paintCaption(QPainter *painter, const QRect &repaintRegion) con
{
Q_UNUSED(repaintRegion)
- const auto *decoratedClient = client().data();
+ const auto *decoratedClient = client().toStrongRef().data();
const int textWidth = settings()->fontMetrics().boundingRect(decoratedClient->caption()).width();
const QRect textRect((size().width() - textWidth) / 2, 0, textWidth, titleBarHeight());
diff --git a/src/MaximizeButton.cc b/src/MaximizeButton.cc
index ea608ce..495071c 100644
--- a/src/MaximizeButton.cc
+++ b/src/MaximizeButton.cc
@@ -34,7 +34,7 @@ namespace Material
MaximizeButton::MaximizeButton(Decoration *decoration, QObject *parent)
: DecorationButton(KDecoration2::DecorationButtonType::Maximize, decoration, parent)
{
- auto *decoratedClient = decoration->client().data();
+ auto *decoratedClient = decoration->client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::maximizeableChanged,
this, &MaximizeButton::setVisible);
diff --git a/src/MinimizeButton.cc b/src/MinimizeButton.cc
index 03c1dd4..3760669 100644
--- a/src/MinimizeButton.cc
+++ b/src/MinimizeButton.cc
@@ -34,7 +34,7 @@ namespace Material
MinimizeButton::MinimizeButton(Decoration *decoration, QObject *parent)
: DecorationButton(KDecoration2::DecorationButtonType::Minimize, decoration, parent)
{
- auto *decoratedClient = decoration->client().data();
+ auto *decoratedClient = decoration->client().toStrongRef().data();
connect(decoratedClient, &KDecoration2::DecoratedClient::minimizeableChanged,
this, &MinimizeButton::setVisible);
--
2.27.0