diff --git a/windec/kdecoration2/breeze.h b/windec/kdecoration2/breeze.h index c9fb7995..6f63141b 100644 --- a/windec/kdecoration2/breeze.h +++ b/windec/kdecoration2/breeze.h @@ -58,7 +58,7 @@ namespace Breeze { None = 0, TitleAlignment = 1<<0, - FrameBorder = 1<<4 + BorderSize = 1<<4 }; } diff --git a/windec/kdecoration2/breezedecoration.cpp b/windec/kdecoration2/breezedecoration.cpp index b59cc126..bdeafe73 100644 --- a/windec/kdecoration2/breezedecoration.cpp +++ b/windec/kdecoration2/breezedecoration.cpp @@ -23,6 +23,7 @@ #include "breeze.h" #include "breezehelper.h" +#include "breezesettingsprovider.h" #include "config-breeze.h" #include "config/breezeconfig.h" @@ -40,7 +41,6 @@ #include #include -#include K_PLUGIN_FACTORY_WITH_JSON( BreezeDecoFactory, @@ -61,7 +61,6 @@ namespace Breeze Decoration::Decoration(QObject *parent, const QVariantList &args) : KDecoration2::Decoration(parent, args) , m_colorSettings(client().data()->palette()) - , m_internalSettings(new InternalSettings()) , m_leftButtons(nullptr) , m_rightButtons(nullptr) , m_sizeGrip(nullptr) @@ -188,35 +187,52 @@ namespace Breeze } //________________________________________________________________ - static int borderSize(const QSharedPointer &settings, bool bottom) + int Decoration::borderSize(bool bottom) const { - const int baseSize = settings->smallSpacing(); - switch (settings->borderSize()) { - case KDecoration2::BorderSize::None: return 0; - case KDecoration2::BorderSize::NoSides: return bottom ? baseSize : 0; - default: - case KDecoration2::BorderSize::Tiny: return baseSize; - case KDecoration2::BorderSize::Normal: return baseSize*2; - case KDecoration2::BorderSize::Large: return baseSize * 3; - case KDecoration2::BorderSize::VeryLarge: return baseSize * 4; - case KDecoration2::BorderSize::Huge: return baseSize * 5; - case KDecoration2::BorderSize::VeryHuge: return baseSize * 6; - case KDecoration2::BorderSize::Oversized: return baseSize * 10; - } - } + const int baseSize = settings()->smallSpacing(); - //________________________________________________________________ - static int borderSize(const QSharedPointer &settings) - { - return borderSize(settings, false); + if( m_internalSettings && (m_internalSettings->mask() & BorderSize ) ) + { + switch (m_internalSettings->borderSize()) { + case InternalSettings::BorderNone: return 0; + case InternalSettings::BorderNoSides: return bottom ? baseSize : 0; + default: + case InternalSettings::BorderTiny: return baseSize; + case InternalSettings::BorderNormal: return baseSize*2; + case InternalSettings::BorderLarge: return baseSize * 3; + case InternalSettings::BorderVeryLarge: return baseSize * 4; + case InternalSettings::BorderHuge: return baseSize * 5; + case InternalSettings::BorderVeryHuge: return baseSize * 6; + case InternalSettings::BorderOversized: return baseSize * 10; + } + + } else { + + switch (settings()->borderSize()) { + case KDecoration2::BorderSize::None: return 0; + case KDecoration2::BorderSize::NoSides: return bottom ? baseSize : 0; + default: + case KDecoration2::BorderSize::Tiny: return baseSize; + case KDecoration2::BorderSize::Normal: return baseSize*2; + case KDecoration2::BorderSize::Large: return baseSize * 3; + case KDecoration2::BorderSize::VeryLarge: return baseSize * 4; + case KDecoration2::BorderSize::Huge: return baseSize * 5; + case KDecoration2::BorderSize::VeryHuge: return baseSize * 6; + case KDecoration2::BorderSize::Oversized: return baseSize * 10; + + } + + } } //________________________________________________________________ void Decoration::reconfigure() { + m_internalSettings = SettingsProvider::self()->internalSettings( this ); + // read internal settings - m_internalSettings->read(); + // m_internalSettings->read(); // animation m_animation->setDuration( m_internalSettings->animationsDuration() ); @@ -225,7 +241,7 @@ namespace Breeze recalculateBorders(); // size grip - if( settings()->borderSize() == KDecoration2::BorderSize::None && m_internalSettings->drawSizeGrip() ) createSizeGrip(); + if( hasNoBorders() && m_internalSettings->drawSizeGrip() ) createSizeGrip(); else deleteSizeGrip(); } @@ -236,8 +252,8 @@ 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(s); - int right = isMaximizedHorizontally() || edges.testFlag(Qt::RightEdge) ? 0 : borderSize(s); + int left = isMaximizedHorizontally() || edges.testFlag(Qt::LeftEdge) ? 0 : borderSize(); + int right = isMaximizedHorizontally() || edges.testFlag(Qt::RightEdge) ? 0 : borderSize(); QFontMetrics fm(s->font()); int top = qMax(fm.boundingRect(c->caption()).height(), buttonHeight() ); @@ -250,19 +266,19 @@ namespace Breeze // padding above if (!isMaximized()) top += baseSize*TitleBar_BottomMargin; - int bottom = isMaximizedVertically() || edges.testFlag(Qt::BottomEdge) ? 0 : borderSize(s, true); + int bottom = isMaximizedVertically() || edges.testFlag(Qt::BottomEdge) ? 0 : borderSize(true); setBorders(QMargins(left, top, right, bottom)); // extended sizes const int extSize = s->largeSpacing(); int extSides = 0; int extBottom = 0; - if (s->borderSize() == KDecoration2::BorderSize::None) + if( hasNoBorders() ) { extSides = extSize; extBottom = extSize; - } else if (s->borderSize() == KDecoration2::BorderSize::NoSides) { + } else if( hasNoSideBorders() ) { extSides = extSize; diff --git a/windec/kdecoration2/breezedecoration.h b/windec/kdecoration2/breezedecoration.h index 929f24ce..75184468 100644 --- a/windec/kdecoration2/breezedecoration.h +++ b/windec/kdecoration2/breezedecoration.h @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -113,19 +114,26 @@ namespace Breeze void paintTitleBar(QPainter *painter, const QRect &repaintRegion); void createShadow(); + //*@name border size + //@{ + int borderSize(bool bottom = false) const; + inline bool hasNoBorders( void ) const; + inline bool hasNoSideBorders( void ) const; + //@} + //*@name maximization modes + //@{ inline bool isMaximized( void ) const; inline bool isMaximizedHorizontally( void ) const; inline bool isMaximizedVertically( void ) const; + //@} //*@name size grip //@{ - void createSizeGrip( void ); void deleteSizeGrip( void ); SizeGrip* sizeGrip( void ) const { return m_sizeGrip; } - //@} ColorSettings m_colorSettings; @@ -146,6 +154,18 @@ namespace Breeze }; + bool Decoration::hasNoBorders( void ) const + { + if( m_internalSettings && m_internalSettings->mask() & BorderSize ) return m_internalSettings->borderSize() == InternalSettings::BorderNone; + else return settings()->borderSize() == KDecoration2::BorderSize::None; + } + + bool Decoration::hasNoSideBorders( void ) const + { + if( m_internalSettings && m_internalSettings->mask() & BorderSize ) return m_internalSettings->borderSize() == InternalSettings::BorderNoSides; + else return settings()->borderSize() == KDecoration2::BorderSize::NoSides; + } + 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(); } diff --git a/windec/kdecoration2/breezeexceptionlist.cpp b/windec/kdecoration2/breezeexceptionlist.cpp index 849e5af4..c732757e 100644 --- a/windec/kdecoration2/breezeexceptionlist.cpp +++ b/windec/kdecoration2/breezeexceptionlist.cpp @@ -57,7 +57,7 @@ namespace Breeze configuration->setMask( exception.mask() ); // propagate all features found in mask to the output configuration - if( exception.mask() & FrameBorder ) configuration->setFrameBorder( exception.frameBorder() ); + if( exception.mask() & BorderSize ) configuration->setBorderSize( exception.borderSize() ); configuration->setHideTitleBar( exception.hideTitleBar() ); // append to exceptions diff --git a/windec/kdecoration2/breezesettingsdata.kcfg b/windec/kdecoration2/breezesettingsdata.kcfg index c2cf7f38..538fcd7d 100644 --- a/windec/kdecoration2/breezesettingsdata.kcfg +++ b/windec/kdecoration2/breezesettingsdata.kcfg @@ -10,19 +10,19 @@ this one is used only for window specific settings, since the default is globally set by kwin the enumeration must be kept in sync with kwin's global settings --> - + - + - + - BorderNoSide + BorderNoSides diff --git a/windec/kdecoration2/config/breezeexceptiondialog.cpp b/windec/kdecoration2/config/breezeexceptiondialog.cpp index 9f95bf50..2358f429 100644 --- a/windec/kdecoration2/config/breezeexceptiondialog.cpp +++ b/windec/kdecoration2/config/breezeexceptiondialog.cpp @@ -39,7 +39,7 @@ namespace Breeze connect( buttonBox->button( QDialogButtonBox::Cancel ), SIGNAL(clicked()), this, SLOT(close()) ); // store checkboxes from ui into list - m_checkboxes.insert( FrameBorder, frameBorderCheckBox ); + m_checkboxes.insert( BorderSize, borderSizeCheckBox ); // detect window properties connect( detectDialogButton, SIGNAL(clicked()), SLOT(selectWindowProperties()) ); @@ -47,7 +47,7 @@ namespace Breeze // connections connect( exceptionType, SIGNAL(currentIndexChanged(int)), SLOT(updateChanged()) ); connect( exceptionEditor, SIGNAL(textChanged(QString)), SLOT(updateChanged()) ); - connect( frameBorderComboBox, SIGNAL(currentIndexChanged(int)), SLOT(updateChanged()) ); + connect( borderSizeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(updateChanged()) ); for( CheckBoxMap::iterator iter = m_checkboxes.begin(); iter != m_checkboxes.end(); ++iter ) { connect( iter.value(), SIGNAL(clicked()), SLOT(updateChanged()) ); } @@ -65,7 +65,7 @@ namespace Breeze // type exceptionType->setCurrentIndex(m_exception->exceptionType() ); exceptionEditor->setText( m_exception->exceptionPattern() ); - frameBorderComboBox->setCurrentIndex( m_exception->frameBorder() ); + borderSizeComboBox->setCurrentIndex( m_exception->borderSize() ); hideTitleBar->setChecked( m_exception->hideTitleBar() ); // mask @@ -81,7 +81,7 @@ namespace Breeze { m_exception->setExceptionType( exceptionType->currentIndex() ); m_exception->setExceptionPattern( exceptionEditor->text() ); - m_exception->setFrameBorder( frameBorderComboBox->currentIndex() ); + m_exception->setBorderSize( borderSizeComboBox->currentIndex() ); m_exception->setHideTitleBar( hideTitleBar->isChecked() ); // mask @@ -101,7 +101,7 @@ namespace Breeze bool modified( false ); if( m_exception->exceptionType() != exceptionType->currentIndex() ) modified = true; else if( m_exception->exceptionPattern() != exceptionEditor->text() ) modified = true; - else if( m_exception->frameBorder() != frameBorderComboBox->currentIndex() ) modified = true; + else if( m_exception->borderSize() != borderSizeComboBox->currentIndex() ) modified = true; else if( m_exception->hideTitleBar() != hideTitleBar->isChecked() ) modified = true; else { diff --git a/windec/kdecoration2/config/ui/breezeexceptiondialog.ui b/windec/kdecoration2/config/ui/breezeexceptiondialog.ui index 77ecd2da..3f78a44c 100644 --- a/windec/kdecoration2/config/ui/breezeexceptiondialog.ui +++ b/windec/kdecoration2/config/ui/breezeexceptiondialog.ui @@ -84,7 +84,7 @@ - + Border size: @@ -98,7 +98,7 @@ - + false @@ -212,9 +212,9 @@ - frameBorderCheckBox + borderSizeCheckBox toggled(bool) - frameBorderComboBox + borderSizeComboBox setEnabled(bool)