segmented bar: Improve splash
This commit is contained in:
parent
824802a1dc
commit
bfa8df85d5
@ -525,7 +525,7 @@ void Editor::setupSegmentedBar()
|
||||
}
|
||||
|
||||
{
|
||||
// Segment
|
||||
// Segment / Splash
|
||||
|
||||
setStrutSize( Q::Segment | A::Horizontal, segmentStrutSize );
|
||||
setStrutSize( Q::Segment | A::Vertical, segmentStrutSize.transposed() );
|
||||
@ -561,21 +561,22 @@ void Editor::setupSegmentedBar()
|
||||
setPadding( Q::Segment | A::Horizontal, 12_dp, 0, 12_dp, 0 );
|
||||
setPadding( Q::Segment | A::Vertical, 0, 12_dp, 0, 12_dp );
|
||||
|
||||
setBoxShape( Q::Segment, 0 );
|
||||
for( const auto subcontrol : { Q::Segment, Q::Splash } )
|
||||
{
|
||||
setBoxShape( subcontrol | Q::Minimum | A::Horizontal,
|
||||
{ 100, 0, 100, 0, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
setBoxShape( subcontrol | Q::Maximum | A::Horizontal,
|
||||
{ 0, 100, 0, 100, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
|
||||
setBoxShape( Q::Segment | Q::Minimum | A::Horizontal,
|
||||
{ 100, 0, 100, 0, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
setBoxShape( Q::Segment | Q::Maximum | A::Horizontal,
|
||||
{ 0, 100, 0, 100, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
|
||||
setBoxShape( Q::Segment | Q::Minimum | A::Vertical,
|
||||
{ 100, 100, 0, 0, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
setBoxShape( Q::Segment | Q::Maximum | A::Vertical,
|
||||
{ 0, 0, 100, 100, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
setBoxShape( subcontrol | Q::Minimum | A::Vertical,
|
||||
{ 100, 100, 0, 0, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
setBoxShape( subcontrol | Q::Maximum | A::Vertical,
|
||||
{ 0, 0, 100, 100, Qt::RelativeSize },
|
||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
@ -590,7 +591,7 @@ void Editor::setupSegmentedBar()
|
||||
|
||||
{
|
||||
// Splash
|
||||
setBoxShape( Q::Splash, 20_dp );
|
||||
|
||||
setGradient( Q::Splash, stateLayerColor( m_pal.onSecondaryContainer, m_pal.pressedOpacity ) );
|
||||
setAnimation( Q::Splash | A::Color, qskDuration );
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include "QskFunctions.h"
|
||||
#include "QskSGNode.h"
|
||||
#include "QskSkin.h"
|
||||
#include "QskStandardSymbol.h"
|
||||
#include "QskSkinStateChanger.h"
|
||||
#include "QskSubcontrolLayoutEngine.h"
|
||||
|
||||
#include <qfontmetrics.h>
|
||||
@ -144,7 +144,20 @@ QRectF QskSegmentedBarSkinlet::splashRect(
|
||||
{
|
||||
const auto sr = segmentRect( bar, contentsRect, index );
|
||||
rect = sr;
|
||||
rect.setSize( { 2.0 * rect.width() * ratio, rect.height() * 2.0 } );
|
||||
qreal w, h;
|
||||
|
||||
if( bar->orientation() == Qt::Horizontal )
|
||||
{
|
||||
w = 2.0 * rect.width() * ratio;
|
||||
h = 2.0 * rect.height();
|
||||
}
|
||||
else
|
||||
{
|
||||
w = 2.0 * rect.width();
|
||||
h = 2.0 * rect.height() * ratio;
|
||||
}
|
||||
|
||||
rect.setSize( { w, h } );
|
||||
rect.moveCenter( pos );
|
||||
rect = rect.intersected( sr );
|
||||
}
|
||||
@ -487,6 +500,11 @@ QSGNode* QskSegmentedBarSkinlet::updateSplashNode(
|
||||
{
|
||||
using Q = QskSegmentedBar;
|
||||
|
||||
// get Minimum / Maximum right:
|
||||
QskSkinStateChanger stateChanger( bar );
|
||||
const auto states = sampleStates( bar, Q::Segment, bar->selectedIndex() );
|
||||
stateChanger.setStates( states );
|
||||
|
||||
const auto splashRect = bar->subControlRect( Q::Splash );
|
||||
if ( splashRect.isEmpty() )
|
||||
return nullptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user