From d97f17c8592f7ab43ad842ee36128262f7090fb9 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Tue, 5 Jul 2022 12:59:41 +0200 Subject: [PATCH] style active tab button --- skins/material3/QskMaterial3Skin.cpp | 40 +++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/skins/material3/QskMaterial3Skin.cpp b/skins/material3/QskMaterial3Skin.cpp index 3eca297d..7eee0977 100644 --- a/skins/material3/QskMaterial3Skin.cpp +++ b/skins/material3/QskMaterial3Skin.cpp @@ -649,6 +649,7 @@ void Editor::setupTabButton() using Q = QskTabButton; setStrutSize( Q::Panel, 64, 64 ); + setGradient( Q::Panel, m_pal.surface ); setColor( Q::Text, m_pal.onSurfaceVariant ); setColor( Q::Text | Q::Disabled, m_pal.onSurface38 ); @@ -656,7 +657,44 @@ void Editor::setupTabButton() setColor( Q::Text | Q::Checked, m_pal.primary ); setColor( Q::Text | Q::Hovered, m_pal.primary ); - setGradient( Q::Panel, m_pal.surface ); + for ( const auto placement : { A::Left, A::Right, A::Top, A::Bottom } ) + { + const auto aspect = Q::Panel | placement; + + Qt::Edge edge; + + switch( placement ) + { + case A::Left: + edge = Qt::RightEdge; + break; + + case A::Right: + edge = Qt::LeftEdge; + break; + + case A::Top: + edge = Qt::BottomEdge; + break; + + case A::Bottom: + edge = Qt::TopEdge; + break; + + default: + edge = Qt::Edge( 0 ); // making gcc4 happy + } + + QskBoxBorderMetrics border; + border.setWidthAt( edge, 3 ); + setBoxBorderMetrics( aspect, border ); + + QskBoxBorderColors borderColors( m_pal.surface ); + setBoxBorderColors( aspect, borderColors ); + + borderColors.setGradientAt( edge, m_pal.primary ); + setBoxBorderColors( aspect | Q::Checked, borderColors ); + } QColor c( m_pal.surface ); c.setAlphaF( m_pal.hoverOpacity );