diff --git a/0001-Cleanup-code-to-align-with-master.patch b/0001-Cleanup-code-to-align-with-master.patch new file mode 100644 index 0000000..1052092 --- /dev/null +++ b/0001-Cleanup-code-to-align-with-master.patch @@ -0,0 +1,42 @@ +From 6b0d93d316f14cf00e7b7a5f6f13c4d16ee0ce68 Mon Sep 17 00:00:00 2001 +From: Hugo Pereira Da Costa +Date: Sun, 22 Mar 2015 19:52:14 +0100 +Subject: [PATCH 1/5] Cleanup code to align with master Check for + drawBordersOnMaximizedWindows when testing edges flags. BUG: 345424 + +--- + kdecoration/breezedecoration.cpp | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp +index 1c042861e1207c812032eb772849c88b503a3792..dc4219c161f7a2467906083cf62039d5a0645303 100644 +--- a/kdecoration/breezedecoration.cpp ++++ b/kdecoration/breezedecoration.cpp +@@ -278,9 +278,14 @@ namespace Breeze + auto s = settings(); + const auto c = client().data(); + const Qt::Edges edges = c->adjacentScreenEdges(); +- int left = isMaximizedHorizontally() || edges.testFlag(Qt::LeftEdge) ? 0 : borderSize(); +- int right = isMaximizedHorizontally() || edges.testFlag(Qt::RightEdge) ? 0 : borderSize(); + ++ // left, right and bottom borders ++ auto testFlag = [&]( Qt::Edge edge ) { return edges.testFlag(edge) && !m_internalSettings->drawBorderOnMaximizedWindows(); }; ++ const int left = isMaximizedHorizontally() || testFlag(Qt::LeftEdge) ? 0 : borderSize(); ++ const int right = isMaximizedHorizontally() || testFlag(Qt::RightEdge) ? 0 : borderSize(); ++ const int bottom = isMaximizedVertically() || c->isShaded() || testFlag(Qt::BottomEdge) ? 0 : borderSize(true); ++ ++ // top border + QFontMetrics fm(s->font()); + int top = qMax(fm.boundingRect(c->caption()).height(), buttonHeight() ); + +@@ -292,7 +297,6 @@ namespace Breeze + // padding above + top += baseSize*TitleBar_TopMargin; + +- int bottom = isMaximizedVertically() || c->isShaded() || edges.testFlag(Qt::BottomEdge) ? 0 : borderSize(true); + setBorders(QMargins(left, top, right, bottom)); + + // extended sizes +-- +2.3.3 + diff --git a/0002-set-button-s-visibility-depending-on-the-availabilit.patch b/0002-set-button-s-visibility-depending-on-the-availabilit.patch new file mode 100644 index 0000000..8ff17ea --- /dev/null +++ b/0002-set-button-s-visibility-depending-on-the-availabilit.patch @@ -0,0 +1,66 @@ +From 46b78432e25a124e9b85b007723435700aec047a Mon Sep 17 00:00:00 2001 +From: Hugo Pereira Da Costa +Date: Sun, 22 Mar 2015 20:22:18 +0100 +Subject: [PATCH 2/5] set button's visibility depending on the availability of + the corresponding feature CCBUG: 343641 + +--- + kdecoration/breezebutton.cpp | 36 +++++++++++++++++++++++++++++++++++- + 1 file changed, 35 insertions(+), 1 deletion(-) + +diff --git a/kdecoration/breezebutton.cpp b/kdecoration/breezebutton.cpp +index 5ac0cfe420c6de50db30491e90dc0244666add33..1a3c0c2b0f66a2c8582798b82dee97dcc7785b12 100644 +--- a/kdecoration/breezebutton.cpp ++++ b/kdecoration/breezebutton.cpp +@@ -63,13 +63,47 @@ namespace Breeze + if (auto d = qobject_cast(decoration)) + { + Button *b = new Button(type, d, parent); +- if (type == KDecoration2::DecorationButtonType::Menu) ++ switch( type ) + { ++ ++ case KDecoration2::DecorationButtonType::Close: ++ b->setVisible( d->client().data()->isCloseable() ); ++ QObject::connect(d->client().data(), &KDecoration2::DecoratedClient::closeableChanged, b, &Breeze::Button::setVisible ); ++ break; ++ ++ case KDecoration2::DecorationButtonType::Maximize: ++ b->setVisible( d->client().data()->isMaximizeable() ); ++ QObject::connect(d->client().data(), &KDecoration2::DecoratedClient::maximizeableChanged, b, &Breeze::Button::setVisible ); ++ break; ++ ++ case KDecoration2::DecorationButtonType::Minimize: ++ b->setVisible( d->client().data()->isMinimizeable() ); ++ QObject::connect(d->client().data(), &KDecoration2::DecoratedClient::minimizeableChanged, b, &Breeze::Button::setVisible ); ++ break; ++ ++ case KDecoration2::DecorationButtonType::ContextHelp: ++ b->setVisible( d->client().data()->providesContextHelp() ); ++ QObject::connect(d->client().data(), &KDecoration2::DecoratedClient::providesContextHelpChanged, b, &Breeze::Button::setVisible ); ++ break; ++ ++ case KDecoration2::DecorationButtonType::Shade: ++ b->setVisible( d->client().data()->isShadeable() ); ++ QObject::connect(d->client().data(), &KDecoration2::DecoratedClient::shadeableChanged, b, &Breeze::Button::setVisible ); ++ break; ++ ++ case KDecoration2::DecorationButtonType::Menu: + QObject::connect(d->client().data(), &KDecoration2::DecoratedClient::iconChanged, b, [b]() { b->update(); }); ++ break; ++ ++ default: break; ++ + } ++ + return b; + } ++ + return nullptr; ++ + } + + //__________________________________________________________________ +-- +2.3.3 + diff --git a/0003-Properly-update-size-grip-visibility-on-maximizedCha.patch b/0003-Properly-update-size-grip-visibility-on-maximizedCha.patch new file mode 100644 index 0000000..5591992 --- /dev/null +++ b/0003-Properly-update-size-grip-visibility-on-maximizedCha.patch @@ -0,0 +1,87 @@ +From 695e4aa231fccbe77a6b0a4e21ff6a84f87a5c44 Mon Sep 17 00:00:00 2001 +From: Hugo Pereira Da Costa +Date: Sun, 22 Mar 2015 20:39:47 +0100 +Subject: [PATCH 3/5] Properly update size grip visibility on maximizedChanged, + shadedChanged and resizeableChanged + +--- + kdecoration/breezedecoration.cpp | 24 +++++++++++++++++------- + kdecoration/breezedecoration.h | 1 + + 2 files changed, 18 insertions(+), 7 deletions(-) + +diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp +index dc4219c161f7a2467906083cf62039d5a0645303..08f6f7b17c4b0b7790d82630b168cedd832b6328 100644 +--- a/kdecoration/breezedecoration.cpp ++++ b/kdecoration/breezedecoration.cpp +@@ -165,21 +165,21 @@ namespace Breeze + ); + + connect(client().data(), &KDecoration2::DecoratedClient::activeChanged, this, &Decoration::updateAnimationState); +- connect(client().data(), &KDecoration2::DecoratedClient::paletteChanged, this, ++ connect(client().data(), &KDecoration2::DecoratedClient::paletteChanged, this, + [this]() { + m_colorSettings.update(client().data()->palette()); + m_useSeparator = (m_colorSettings.palette().color( QPalette::Window ) != m_colorSettings.activeTitleBar() ); + update(); + } + ); +- connect(client().data(), &KDecoration2::DecoratedClient::widthChanged, this, &Decoration::updateTitleBar); ++ connect(client().data(), &KDecoration2::DecoratedClient::widthChanged, this, &Decoration::updateTitleBar); + connect(client().data(), &KDecoration2::DecoratedClient::maximizedChanged, this, &Decoration::updateTitleBar); + connect(client().data(), &KDecoration2::DecoratedClient::maximizedChanged, this, &Decoration::setOpaque); + +- connect(client().data(), &KDecoration2::DecoratedClient::widthChanged, this, &Decoration::updateButtonsGeometry); ++ connect(client().data(), &KDecoration2::DecoratedClient::widthChanged, this, &Decoration::updateButtonsGeometry); + connect(client().data(), &KDecoration2::DecoratedClient::maximizedChanged, this, &Decoration::updateButtonsGeometry); +- connect(client().data(), &KDecoration2::DecoratedClient::shadedChanged, this, &Decoration::recalculateBorders); +- connect(client().data(), &KDecoration2::DecoratedClient::shadedChanged, this, &Decoration::updateButtonsGeometry); ++ connect(client().data(), &KDecoration2::DecoratedClient::shadedChanged, this, &Decoration::recalculateBorders); ++ connect(client().data(), &KDecoration2::DecoratedClient::shadedChanged, this, &Decoration::updateButtonsGeometry); + + createButtons(); + createShadow(); +@@ -208,6 +208,14 @@ namespace Breeze + } + + //________________________________________________________________ ++ void Decoration::updateSizeGripVisibility() ++ { ++ auto c = client().data(); ++ if( m_sizeGrip ) ++ { m_sizeGrip->setVisible( c->isResizeable() && !isMaximized() && !c->isShaded() ); } ++ } ++ ++ //________________________________________________________________ + int Decoration::borderSize(bool bottom) const + { + const int baseSize = settings()->smallSpacing(); +@@ -582,10 +590,12 @@ namespace Breeze + KDecoration2::DecoratedClient *c( client().data() ); + if( !c ) return; + +- if( ( c->isResizeable() && c->windowId() != 0 ) ) ++ if( c->windowId() != 0 ) + { + m_sizeGrip = new SizeGrip( this ); +- m_sizeGrip->setVisible( !( isMaximized() || c->isShaded() ) ); ++ connect( client().data(), &KDecoration2::DecoratedClient::maximizedChanged, this, &Breeze::Decoration::updateSizeGripVisibility ); ++ connect( client().data(), &KDecoration2::DecoratedClient::shadedChanged, this, &Breeze::Decoration::updateSizeGripVisibility ); ++ connect( client().data(), &KDecoration2::DecoratedClient::resizeableChanged, this, &Breeze::Decoration::updateSizeGripVisibility ); + } + #endif + +diff --git a/kdecoration/breezedecoration.h b/kdecoration/breezedecoration.h +index ac1ab3bdc136fd3e4a1e970e86abd0fb92cb6c56..16ff8ff84636f435c7c59d0a0f4835fb509b9b57 100644 +--- a/kdecoration/breezedecoration.h ++++ b/kdecoration/breezedecoration.h +@@ -107,6 +107,7 @@ namespace Breeze + void updateButtonsGeometry(); + void updateTitleBar(); + void updateAnimationState(); ++ void updateSizeGripVisibility(); + + private: + +-- +2.3.3 + diff --git a/0004-Fixed-foreground-color-for-pressed-buttons.patch b/0004-Fixed-foreground-color-for-pressed-buttons.patch new file mode 100644 index 0000000..eedeed5 --- /dev/null +++ b/0004-Fixed-foreground-color-for-pressed-buttons.patch @@ -0,0 +1,29 @@ +From 8c2940fb798150af56ee36af694a92ceb710ebf1 Mon Sep 17 00:00:00 2001 +From: Hugo Pereira Da Costa +Date: Mon, 23 Mar 2015 09:12:58 +0100 +Subject: [PATCH 4/5] Fixed foreground color for pressed buttons + +--- + kdecoration/breezebutton.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/kdecoration/breezebutton.cpp b/kdecoration/breezebutton.cpp +index 1a3c0c2b0f66a2c8582798b82dee97dcc7785b12..591824838152532c5868c137d9268163161ac83c 100644 +--- a/kdecoration/breezebutton.cpp ++++ b/kdecoration/breezebutton.cpp +@@ -348,7 +348,11 @@ namespace Breeze + + auto d = qobject_cast( decoration() ); + if( !d ) return QColor(); +- if( type() == KDecoration2::DecorationButtonType::Close ) { ++ if( isPressed() ) { ++ ++ return d->titleBarColor(); ++ ++ } else if( type() == KDecoration2::DecorationButtonType::Close ) { + + return d->titleBarColor(); + +-- +2.3.3 + diff --git a/breeze.changes b/breeze.changes index 46ae59c..835765e 100644 --- a/breeze.changes +++ b/breeze.changes @@ -10,6 +10,12 @@ Thu Mar 19 17:42:27 UTC 2015 - hrvoje.senjan@gmail.com 0002-Check-scrollbar-policy-before-forwarding-events.patch, 0004-check-widget-validity-before-calling-deleteLater.patch and 0001-Added-an-explicit-flag-as-output-from-captionRect-to.patch +- Added patches from upstream: + 0001-Cleanup-code-to-align-with-master.patch (kde#345424), + 0002-set-button-s-visibility-depending-on-the-availabilit.patch + (kde#343641), + 0003-Properly-update-size-grip-visibility-on-maximizedCha.patch + and 0004-Fixed-foreground-color-for-pressed-buttons.patch ------------------------------------------------------------------- Mon Mar 16 11:53:48 UTC 2015 - hrvoje.senjan@gmail.com diff --git a/breeze.spec b/breeze.spec index 1548a49..8eaeaa6 100644 --- a/breeze.spec +++ b/breeze.spec @@ -48,6 +48,14 @@ Url: http://www.kde.org #Source: http://download.kde.org/stable/plasma/%{version}/%{name}-%{version}.tar.xz Source: %{name}-%{version}.tar.xz Source99: %{name}-rpmlintrc +# PATCH-FIX-UPSTREAM 0001-Cleanup-code-to-align-with-master.patch +Patch0: 0001-Cleanup-code-to-align-with-master.patch +# PATCH-FIX-UPSTREAM 0002-set-button-s-visibility-depending-on-the-availabilit.patch +Patch1: 0002-set-button-s-visibility-depending-on-the-availabilit.patch +# PATCH-FIX-UPSTREAM 0003-Properly-update-size-grip-visibility-on-maximizedCha.patch +Patch2: 0003-Properly-update-size-grip-visibility-on-maximizedCha.patch +# PATCH-FIX-UPSTREAM 0004-Fixed-foreground-color-for-pressed-buttons.patch +Patch3: 0004-Fixed-foreground-color-for-pressed-buttons.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -104,6 +112,10 @@ This package provides Breeze KWin decoration. %lang_package -n breeze5-style %prep %setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %cmake_kf5 -d build -- -DBUILD_po=OFF -DCMAKE_INSTALL_LOCALEDIR=share/locale/kf5 diff --git a/breeze4-style.changes b/breeze4-style.changes index 5d1d54b..d43ddd4 100644 --- a/breeze4-style.changes +++ b/breeze4-style.changes @@ -10,6 +10,12 @@ Thu Mar 19 17:42:27 UTC 2015 - hrvoje.senjan@gmail.com 0002-Check-scrollbar-policy-before-forwarding-events.patch, 0004-check-widget-validity-before-calling-deleteLater.patch and 0001-Added-an-explicit-flag-as-output-from-captionRect-to.patch +- Added patches from upstream: + 0001-Cleanup-code-to-align-with-master.patch (kde#345424), + 0002-set-button-s-visibility-depending-on-the-availabilit.patch + (kde#343641), + 0003-Properly-update-size-grip-visibility-on-maximizedCha.patch + and 0004-Fixed-foreground-color-for-pressed-buttons.patch ------------------------------------------------------------------- Tue Mar 10 18:49:07 UTC 2015 - hrvoje.senjan@gmail.com diff --git a/breeze4-style.spec b/breeze4-style.spec index 797fbfc..5c8ea57 100644 --- a/breeze4-style.spec +++ b/breeze4-style.spec @@ -31,6 +31,14 @@ Group: System/GUI/KDE Url: http://www.kde.org #Source: http://download.kde.org/stable/plasma/%{version}/breeze-%{version}.tar.xz Source: breeze-%{version}.tar.xz +# PATCH-FIX-UPSTREAM 0001-Cleanup-code-to-align-with-master.patch +Patch0: 0001-Cleanup-code-to-align-with-master.patch +# PATCH-FIX-UPSTREAM 0002-set-button-s-visibility-depending-on-the-availabilit.patch +Patch1: 0002-set-button-s-visibility-depending-on-the-availabilit.patch +# PATCH-FIX-UPSTREAM 0003-Properly-update-size-grip-visibility-on-maximizedCha.patch +Patch2: 0003-Properly-update-size-grip-visibility-on-maximizedCha.patch +# PATCH-FIX-UPSTREAM 0004-Fixed-foreground-color-for-pressed-buttons.patch +Patch3: 0004-Fixed-foreground-color-for-pressed-buttons.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -39,6 +47,10 @@ This package contains kde4 backport of new default Plasma 5 style. %prep %setup -q -n breeze-%{version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %cmake_kde4 -d build -- -DBUILD_po=OFF -DUSE_KDE4=ON