From 83cf24737b6693daf67017bfdbe05a9fe682acbd Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Thu, 19 Oct 2017 16:24:43 +0200 Subject: [PATCH] using QskBoxNode for the subwindow title bar --- src/controls/QskSubWindow.cpp | 6 ------ src/controls/QskSubWindow.h | 2 -- src/controls/QskSubWindowArea.cpp | 3 +++ src/controls/QskSubWindowSkinlet.cpp | 28 +------------------------- src/controls/QskSubWindowSkinlet.h | 2 -- src/skins/material/QskMaterialSkin.cpp | 4 ++-- src/skins/squiek/QskSquiekSkin.cpp | 4 ++-- 7 files changed, 8 insertions(+), 41 deletions(-) diff --git a/src/controls/QskSubWindow.cpp b/src/controls/QskSubWindow.cpp index bf7b2ebc..fafaaeca 100644 --- a/src/controls/QskSubWindow.cpp +++ b/src/controls/QskSubWindow.cpp @@ -43,12 +43,6 @@ QskSubWindow::~QskSubWindow() { } -bool QskSubWindow::isActive() const -{ - // not implemented yet - return true; -} - void QskSubWindow::setDecorated( bool on ) { if ( on == isDecorated() ) diff --git a/src/controls/QskSubWindow.h b/src/controls/QskSubWindow.h index 7fe7fcf3..9d6e5264 100644 --- a/src/controls/QskSubWindow.h +++ b/src/controls/QskSubWindow.h @@ -55,8 +55,6 @@ public: virtual QSizeF contentsSizeHint() const override; virtual QRectF layoutRect() const override; - bool isActive() const; - Q_SIGNALS: void titleChanged(); void decoratedChanged(); diff --git a/src/controls/QskSubWindowArea.cpp b/src/controls/QskSubWindowArea.cpp index 0a06989e..c4c336ae 100644 --- a/src/controls/QskSubWindowArea.cpp +++ b/src/controls/QskSubWindowArea.cpp @@ -199,6 +199,9 @@ bool QskSubWindowArea::mouseEventFilter( QskSubWindow* window, const QMouseEvent return false; } + if ( event->button() == Qt::LeftButton ) + window->setFocus( true ); + #if 0 // how to handle not to be process visual // changes for double click events ??? diff --git a/src/controls/QskSubWindowSkinlet.cpp b/src/controls/QskSubWindowSkinlet.cpp index c7392878..eacff657 100644 --- a/src/controls/QskSubWindowSkinlet.cpp +++ b/src/controls/QskSubWindowSkinlet.cpp @@ -8,7 +8,6 @@ #include "QskAspect.h" #include "QskBoxBorderMetrics.h" -#include #include QskSubWindowSkinlet::QskSubWindowSkinlet( QskSkin* skin ): @@ -45,40 +44,15 @@ QSGNode* QskSubWindowSkinlet::updateSubNode( const QskSkinnable* skinnable, switch( nodeRole ) { case PanelRole: - { return updateBoxNode( subWindow, node, QskSubWindow::Panel ); - } case TitleBarRole: - { - return updateTitleBarNode( subWindow, node ); - } + return updateBoxNode( subWindow, node, QskSubWindow::TitleBar ); } return Inherited::updateSubNode( skinnable, nodeRole, node ); } -QSGNode* QskSubWindowSkinlet::updateTitleBarNode( - const QskSubWindow* subWindow, QSGNode* node ) const -{ - const QRectF rect = subControlRect( subWindow, QskSubWindow::TitleBar ); - if ( rect.isEmpty() ) - return nullptr; - - auto barNode = static_cast< QSGSimpleRectNode* >( node ); - if ( barNode == nullptr ) - barNode = new QSGSimpleRectNode(); - - QskAspect::Aspect aspect = QskSubWindow::TitleBar; - if ( subWindow->isActive() ) - aspect = aspect | QskControl::Focused; - - barNode->setColor( subWindow->color( aspect ) ); - barNode->setRect( rect ); - - return barNode; -} - QRectF QskSubWindowSkinlet::titleBarRect( const QskSubWindow* subWindow ) const { const auto border = subWindow->boxBorderMetricsHint( QskSubWindow::Panel ); diff --git a/src/controls/QskSubWindowSkinlet.h b/src/controls/QskSubWindowSkinlet.h index d475318c..5302d8af 100644 --- a/src/controls/QskSubWindowSkinlet.h +++ b/src/controls/QskSubWindowSkinlet.h @@ -35,8 +35,6 @@ protected: quint8 nodeRole, QSGNode* ) const override; private: - QSGNode* updateTitleBarNode( const QskSubWindow*, QSGNode* ) const; - qreal titleBarHeight( const QskSubWindow* ) const; QRectF titleBarRect( const QskSubWindow* ) const; diff --git a/src/skins/material/QskMaterialSkin.cpp b/src/skins/material/QskMaterialSkin.cpp index 5480f659..82304076 100644 --- a/src/skins/material/QskMaterialSkin.cpp +++ b/src/skins/material/QskMaterialSkin.cpp @@ -633,8 +633,8 @@ void QskMaterialSkin::initSubWindowHints() setBoxBorderColors( Q::Panel, colors ); // title bar - setColor( Q::TitleBar, pal.darker200 ); - setColor( Q::TitleBar | Q::Focused, pal.accentColor ); + setGradient( Q::TitleBar, pal.darker200 ); + setGradient( Q::TitleBar | Q::Focused, pal.accentColor ); setFontRole( Q::TitleBar, QskSkin::TinyFont ); } diff --git a/src/skins/squiek/QskSquiekSkin.cpp b/src/skins/squiek/QskSquiekSkin.cpp index 4d168745..edf0e847 100644 --- a/src/skins/squiek/QskSquiekSkin.cpp +++ b/src/skins/squiek/QskSquiekSkin.cpp @@ -676,8 +676,8 @@ void QskSquiekSkin::initSubWindowHints() // TitleBar setFontRole( Q::TitleBar, QskSkin::TinyFont ); - setColor( Q::TitleBar | Q::Focused, pal.highlighted ); - setColor( Q::TitleBar, pal.contrasted ); + setGradient( Q::TitleBar | Q::Focused, pal.highlighted ); + setGradient( Q::TitleBar, pal.contrasted ); } #include "moc_QskSquiekSkin.cpp"