diff --git a/windec/kdecoration2/breezedecoration.cpp b/windec/kdecoration2/breezedecoration.cpp index bea53f38..f4833b7d 100644 --- a/windec/kdecoration2/breezedecoration.cpp +++ b/windec/kdecoration2/breezedecoration.cpp @@ -168,7 +168,7 @@ namespace Breeze void Decoration::updateTitleBar() { auto s = settings(); - const bool maximized = client().data()->isMaximized(); + const bool maximized = isMaximized(); const int width = client().data()->width(); const int height = maximized ? borderTop() : borderTop() - s->smallSpacing()*Metrics::TitleBar_TopMargin; const int x = maximized ? 0 : s->largeSpacing()*Metrics::TitleBar_SideMargin; @@ -223,6 +223,8 @@ namespace Breeze //________________________________________________________________ void Decoration::reconfigure() { + + // read internal settings m_internalSettings.read(); // animation @@ -232,7 +234,7 @@ namespace Breeze recalculateBorders(); // size grip - if( settings()->borderSize() == KDecoration2::BorderSize::None ) createSizeGrip(); + if( settings()->borderSize() == KDecoration2::BorderSize::None && m_internalSettings.drawSizeGrip() ) createSizeGrip(); else deleteSizeGrip(); } @@ -243,8 +245,8 @@ namespace Breeze auto s = settings(); const auto c = client().data(); const Qt::Edges edges = c->adjacentScreenEdges(); - int left = c->isMaximizedHorizontally() || edges.testFlag(Qt::LeftEdge) ? 0 : borderSize(s); - int right = c->isMaximizedHorizontally() || edges.testFlag(Qt::RightEdge) ? 0 : borderSize(s); + int left = isMaximizedHorizontally() || edges.testFlag(Qt::LeftEdge) ? 0 : borderSize(s); + int right = isMaximizedHorizontally() || edges.testFlag(Qt::RightEdge) ? 0 : borderSize(s); QFontMetrics fm(s->font()); int top = qMax(fm.boundingRect(c->caption()).height(), buttonHeight() ); @@ -255,9 +257,9 @@ namespace Breeze top += baseSize*Metrics::TitleBar_TopMargin + 1; // padding above - if (!c->isMaximized()) top += baseSize*TitleBar_BottomMargin; + if (!isMaximized()) top += baseSize*TitleBar_BottomMargin; - int bottom = c->isMaximizedVertically() || edges.testFlag(Qt::BottomEdge) ? 0 : borderSize(s, true); + int bottom = isMaximizedVertically() || edges.testFlag(Qt::BottomEdge) ? 0 : borderSize(s, true); setBorders(QMargins(left, top, right, bottom)); // extended sizes @@ -290,8 +292,8 @@ namespace Breeze void Decoration::updateButtonPositions() { auto s = settings(); - const int vPadding = (client().data()->isMaximized() ? 0 : s->smallSpacing()*Metrics::TitleBar_TopMargin) + (captionHeight()-buttonHeight())/2; - const int hPadding = client().data()->isMaximized() ? 0 : s->smallSpacing()*Metrics::TitleBar_SideMargin; + const int vPadding = (isMaximized() ? 0 : s->smallSpacing()*Metrics::TitleBar_TopMargin) + (captionHeight()-buttonHeight())/2; + const int hPadding = isMaximized() ? 0 : s->smallSpacing()*Metrics::TitleBar_SideMargin; m_rightButtons->setSpacing(s->smallSpacing()*Metrics::TitleBar_ButtonSpacing); m_leftButtons->setSpacing(s->smallSpacing()*Metrics::TitleBar_ButtonSpacing); @@ -338,7 +340,7 @@ namespace Breeze painter->setBrush(gradient); painter->setPen(Qt::NoPen); - if (c->isMaximized()) + if (isMaximized()) { painter->drawRect(titleRect); @@ -402,7 +404,7 @@ namespace Breeze int Decoration::captionHeight() const { - return client().data()->isMaximized() ? + return isMaximized() ? borderTop() - settings()->smallSpacing()*Metrics::TitleBar_BottomMargin - 1: borderTop() - settings()->smallSpacing()*(Metrics::TitleBar_BottomMargin + Metrics::TitleBar_TopMargin ) - 1; } @@ -412,7 +414,7 @@ namespace Breeze { 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(); - const int yOffset = client().data()->isMaximized() ? 0 : settings()->smallSpacing()*Metrics::TitleBar_TopMargin; + const int yOffset = isMaximized() ? 0 : settings()->smallSpacing()*Metrics::TitleBar_TopMargin; QRect boundingRect( settings()->fontMetrics().boundingRect( client().data()->caption()).toRect() ); boundingRect.setTop( yOffset ); @@ -531,7 +533,7 @@ namespace Breeze if( ( c->isResizeable() && c->windowId() != 0 ) ) { m_sizeGrip = new SizeGrip( this ); - m_sizeGrip->setVisible( !( c->isMaximized() || c->isShaded() ) ); + m_sizeGrip->setVisible( !( isMaximized() || c->isShaded() ) ); } #endif diff --git a/windec/kdecoration2/breezedecoration.h b/windec/kdecoration2/breezedecoration.h index 2ef76689..4052f70b 100644 --- a/windec/kdecoration2/breezedecoration.h +++ b/windec/kdecoration2/breezedecoration.h @@ -27,6 +27,7 @@ #include "breezesettings.h" #include +#include #include #include @@ -112,6 +113,11 @@ namespace Breeze void paintTitleBar(QPainter *painter, const QRect &repaintRegion); void createShadow(); + //*@name maximization modes + inline bool isMaximized( void ) const; + inline bool isMaximizedHorizontally( void ) const; + inline bool isMaximizedVertically( void ) const; + //*@name size grip //@{ @@ -140,6 +146,10 @@ namespace Breeze }; + bool Decoration::isMaximized( void ) const { return client().data()->isMaximized() && !m_internalSettings.drawBorderOnMaximizedWindows(); } + bool Decoration::isMaximizedHorizontally( void ) const { return client().data()->isMaximizedHorizontally() && !m_internalSettings.drawBorderOnMaximizedWindows(); } + bool Decoration::isMaximizedVertically( void ) const { return client().data()->isMaximizedVertically() && !m_internalSettings.drawBorderOnMaximizedWindows(); } + } #endif diff --git a/windec/kdecoration2/config/breezeconfigwidget.cpp b/windec/kdecoration2/config/breezeconfigwidget.cpp index 2b960f66..29ea06d3 100644 --- a/windec/kdecoration2/config/breezeconfigwidget.cpp +++ b/windec/kdecoration2/config/breezeconfigwidget.cpp @@ -46,6 +46,8 @@ namespace Breeze // track ui changes connect( m_ui.titleAlignment, SIGNAL(currentIndexChanged(int)), SLOT(updateChanged()) ); connect( m_ui.buttonSize, SIGNAL(currentIndexChanged(int)), SLOT(updateChanged()) ); + connect( m_ui.drawBorderOnMaximizedWindows, SIGNAL(clicked()), SLOT(updateChanged()) ); + connect( m_ui.drawSizeGrip, SIGNAL(clicked()), SLOT(updateChanged()) ); // track animations changes connect( m_ui.animationsEnabled, SIGNAL(clicked()), SLOT(updateChanged()) ); @@ -63,6 +65,8 @@ namespace Breeze if( !m_internalSettings ) return; m_ui.titleAlignment->setCurrentIndex( m_internalSettings->titleAlignment() ); m_ui.buttonSize->setCurrentIndex( m_internalSettings->buttonSize() ); + m_ui.drawBorderOnMaximizedWindows->setChecked( m_internalSettings->drawBorderOnMaximizedWindows() ); + m_ui.drawSizeGrip->setChecked( m_internalSettings->drawSizeGrip() ); m_ui.animationsEnabled->setChecked( m_internalSettings->animationsEnabled() ); m_ui.animationsDuration->setValue( m_internalSettings->animationsDuration() ); setChanged( false ); @@ -78,12 +82,12 @@ namespace Breeze // apply modifications from ui m_internalSettings->setTitleAlignment( m_ui.titleAlignment->currentIndex() ); m_internalSettings->setButtonSize( m_ui.buttonSize->currentIndex() ); + m_internalSettings->setDrawBorderOnMaximizedWindows( m_ui.drawBorderOnMaximizedWindows->isChecked() ); + m_internalSettings->setDrawSizeGrip( m_ui.drawSizeGrip->isChecked() ); m_internalSettings->setAnimationsEnabled( m_ui.animationsEnabled->isChecked() ); m_internalSettings->setAnimationsDuration( m_ui.animationsDuration->value() ); setChanged( false ); - - } //_______________________________________________ @@ -98,6 +102,8 @@ namespace Breeze if( m_ui.titleAlignment->currentIndex() != m_internalSettings->titleAlignment() ) modified = true; else if( m_ui.buttonSize->currentIndex() != m_internalSettings->buttonSize() ) modified = true; + else if( m_ui.drawBorderOnMaximizedWindows->isChecked() != m_internalSettings->drawBorderOnMaximizedWindows() ) modified = true; + else if( m_ui.drawSizeGrip->isChecked() != m_internalSettings->drawSizeGrip() ) modified = true; // animations else if( m_ui.animationsEnabled->isChecked() != m_internalSettings->animationsEnabled() ) modified = true;