SHA256
1
0
forked from pool/breeze
Hrvoje Senjan 2015-03-10 18:51:50 +00:00 committed by Git OBS Bridge
parent c4b7df2a66
commit 26f98c3944
8 changed files with 212 additions and 0 deletions

View File

@ -0,0 +1,84 @@
From a8d2104ab36c91053da1fee3ad31d68c979965a7 Mon Sep 17 00:00:00 2001
From: Hugo Pereira Da Costa <hugo.pereira@free.fr>
Date: Thu, 26 Feb 2015 00:17:18 +0100
Subject: [PATCH 1/4] Added an explicit flag as output from captionRect to tell
whether caption must be ellided or not. BUG: 344552
---
kdecoration/breezedecoration.cpp | 18 ++++++++++--------
kdecoration/breezedecoration.h | 8 +++++++-
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/kdecoration/breezedecoration.cpp b/kdecoration/breezedecoration.cpp
index 3b1479a82b19ca8427690ccc7b00b2f36f2289aa..f63306524e1301477904f284037c54ed09bbe276 100644
--- a/kdecoration/breezedecoration.cpp
+++ b/kdecoration/breezedecoration.cpp
@@ -440,10 +440,13 @@ namespace Breeze
// draw caption
painter->setFont(s->font());
- const QRect cR = captionRect();
- const QString caption = painter->fontMetrics().elidedText(c->caption(), Qt::ElideMiddle, cR.width());
+ const auto cR = captionRect();
+ const QString caption = cR.second ?
+ painter->fontMetrics().elidedText(c->caption(), Qt::ElideMiddle, cR.first.width()):
+ c->caption();
+
painter->setPen(m_colorSettings.font(c->isActive()));
- painter->drawText(cR, Qt::AlignVCenter| Qt::AlignLeft | Qt::TextSingleLine, caption);
+ painter->drawText(cR.first, Qt::AlignVCenter| Qt::AlignLeft | Qt::TextSingleLine, caption);
// draw all buttons
m_leftButtons->paint(painter, repaintRegion);
@@ -470,7 +473,7 @@ namespace Breeze
{ return borderTop() - settings()->smallSpacing()*(Metrics::TitleBar_BottomMargin + Metrics::TitleBar_TopMargin ) - 1; }
//________________________________________________________________
- QRect Decoration::captionRect() const
+ QPair<QRect,bool> Decoration::captionRect() const
{
const int leftOffset = m_leftButtons->geometry().x() + m_leftButtons->geometry().width() + Metrics::TitleBar_SideMargin*settings()->smallSpacing();
const int rightOffset = size().width() - m_rightButtons->geometry().x() + Metrics::TitleBar_SideMargin*settings()->smallSpacing();
@@ -480,9 +483,8 @@ namespace Breeze
boundingRect.setTop( yOffset );
boundingRect.setHeight( captionHeight() );
- /* need to increase the bounding rect because it is sometime (font dependent)
- too small, resulting in text being elided */
- boundingRect.setWidth( boundingRect.width()+4 );
+ // store original width to detect when text ellision is needed
+ const int boundingRectWidth( boundingRect.width() );
switch( m_internalSettings->titleAlignment() )
{
@@ -518,7 +520,7 @@ namespace Breeze
boundingRect.setLeft( qMax( boundingRect.left(), leftOffset ) );
}
- return boundingRect;
+ return qMakePair( boundingRect, boundingRect.width() < boundingRectWidth );
}
diff --git a/kdecoration/breezedecoration.h b/kdecoration/breezedecoration.h
index 9eb6c659fb657e66d2c4dc006b22beef7b22a02c..ccdc6a67c65aad4a17e083b3f3360fc3cb57ddbc 100644
--- a/kdecoration/breezedecoration.h
+++ b/kdecoration/breezedecoration.h
@@ -109,7 +109,13 @@ namespace Breeze
void updateAnimationState();
private:
- QRect captionRect() const;
+
+ /**
+ return the smallest rect in which caption will be drawn,
+ properly positionned inside the title bar. Second return parameter
+ is set to true when text ellision is required
+ */
+ QPair<QRect,bool> captionRect() const;
void createButtons();
void paintTitleBar(QPainter *painter, const QRect &repaintRegion);
--
2.3.0

View File

@ -0,0 +1,37 @@
From 759ff9bf1ba38a47214849bc0a80cfbc7333c3a9 Mon Sep 17 00:00:00 2001
From: Hugo Pereira Da Costa <hugo.pereira@free.fr>
Date: Sun, 1 Mar 2015 18:19:10 +0100
Subject: [PATCH 2/4] Check scrollbar policy before forwarding events BUG:
343659
---
kstyle/breezestyle.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kstyle/breezestyle.cpp b/kstyle/breezestyle.cpp
index 818eaec5e9a0143aa8bec778c620735aabbeb71c..6caa00b7259b44ac38f8db206df1317d2edafbc9 100644
--- a/kstyle/breezestyle.cpp
+++ b/kstyle/breezestyle.cpp
@@ -1002,8 +1002,9 @@ namespace Breeze
QList<QScrollBar*> scrollBars;
if( QAbstractScrollArea* scrollArea = qobject_cast<QAbstractScrollArea*>( widget ) )
{
- scrollBars.append( scrollArea->horizontalScrollBar() );
- scrollBars.append( scrollArea->verticalScrollBar() );
+
+ if( scrollArea->horizontalScrollBarPolicy() != Qt::ScrollBarAlwaysOff ) scrollBars.append( scrollArea->horizontalScrollBar() );
+ if( scrollArea->verticalScrollBarPolicy() != Qt::ScrollBarAlwaysOff )scrollBars.append( scrollArea->verticalScrollBar() );
} else if( widget->inherits( "KTextEditor::View" ) ) {
@@ -5440,7 +5441,6 @@ namespace Breeze
const bool hasPopupMenu( toolButtonOption->subControls & SC_ToolButtonMenu );
const bool hasInlineIndicator( toolButtonOption->features & QStyleOptionToolButton::HasMenu && !hasPopupMenu );
-
const QRect buttonRect( subControlRect( CC_ToolButton, option, SC_ToolButton, widget ) );
const QRect menuRect( subControlRect( CC_ToolButton, option, SC_ToolButtonMenu, widget ) );
--
2.3.0

View File

@ -0,0 +1,31 @@
From ac6e765800cf6e78a2cae8692f6c49b75df49bda Mon Sep 17 00:00:00 2001
From: Hugo Pereira Da Costa <hugo.pereira@free.fr>
Date: Tue, 3 Mar 2015 16:37:55 +0100
Subject: [PATCH 3/4] return parent style method when option passed to tabBar
rect is invalid, instead of full option rect removed check on invalid tabbar
size BUG: 344779
---
kstyle/breezestyle.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/kstyle/breezestyle.cpp b/kstyle/breezestyle.cpp
index 6caa00b7259b44ac38f8db206df1317d2edafbc9..e91b5da2a1622e8816a77e5cc509f9f4dd236bb2 100644
--- a/kstyle/breezestyle.cpp
+++ b/kstyle/breezestyle.cpp
@@ -1548,11 +1548,10 @@ namespace Breeze
// cast option and check
const QStyleOptionTabWidgetFrame* tabOption = qstyleoption_cast<const QStyleOptionTabWidgetFrame*>( option );
- if( !tabOption ) return option->rect;
+ if( !tabOption ) return ParentStyleClass::subElementRect( SE_TabWidgetTabBar, option, widget );
// do nothing if tabbar is hidden
const QSize tabBarSize( tabOption->tabBarSize );
- if( tabBarSize.isEmpty() ) return option->rect;
QRect rect( option->rect );
QRect tabBarRect( QPoint(0, 0), tabBarSize );
--
2.3.0

View File

@ -0,0 +1,26 @@
From 72d18b7f5245d265fb0eb974854989aebc357724 Mon Sep 17 00:00:00 2001
From: Hugo Pereira Da Costa <hugo.pereira@free.fr>
Date: Mon, 9 Mar 2015 20:52:13 +0100
Subject: [PATCH 4/4] check widget validity before calling deleteLater BUG:
344980
---
kstyle/breezepalettehelper.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kstyle/breezepalettehelper.cpp b/kstyle/breezepalettehelper.cpp
index e134a6557722237858850aa854bb6a485a3bb99d..1fcb3e65225002f5eef193028e656ae499961960 100644
--- a/kstyle/breezepalettehelper.cpp
+++ b/kstyle/breezepalettehelper.cpp
@@ -44,7 +44,7 @@ namespace Breeze
//_____________________________________________________
PaletteHelper::~PaletteHelper()
- { _widget->deleteLater(); }
+ { if( _widget ) _widget->deleteLater(); }
//_____________________________________________________
--
2.3.0

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Tue Mar 10 18:49:07 UTC 2015 - hrvoje.senjan@gmail.com
- Added patches from upstream:
0001-Added-an-explicit-flag-as-output-from-captionRect-to.patch,
0002-Check-scrollbar-policy-before-forwarding-events.patch,
0003-return-parent-style-method-when-option-passed-to-tab.patch
and 0004-check-widget-validity-before-calling-deleteLater.patch
-------------------------------------------------------------------
Fri Feb 20 02:43:47 UTC 2015 - hrvoje.senjan@gmail.com

View File

@ -47,6 +47,10 @@ 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
Patch0: 0001-Added-an-explicit-flag-as-output-from-captionRect-to.patch
Patch1: 0002-Check-scrollbar-policy-before-forwarding-events.patch
Patch2: 0003-return-parent-style-method-when-option-passed-to-tab.patch
Patch3: 0004-check-widget-validity-before-calling-deleteLater.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -103,6 +107,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

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Tue Mar 10 18:49:07 UTC 2015 - hrvoje.senjan@gmail.com
- Added patches from upstream:
0001-Added-an-explicit-flag-as-output-from-captionRect-to.patch,
0002-Check-scrollbar-policy-before-forwarding-events.patch,
0003-return-parent-style-method-when-option-passed-to-tab.patch
and 0004-check-widget-validity-before-calling-deleteLater.patch
-------------------------------------------------------------------
Fri Feb 20 02:43:47 UTC 2015 - hrvoje.senjan@gmail.com

View File

@ -31,6 +31,10 @@ 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
Patch0: 0001-Added-an-explicit-flag-as-output-from-captionRect-to.patch
Patch1: 0002-Check-scrollbar-policy-before-forwarding-events.patch
Patch2: 0003-return-parent-style-method-when-option-passed-to-tab.patch
Patch3: 0004-check-widget-validity-before-calling-deleteLater.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -39,6 +43,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