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::Horizontal, segmentStrutSize );
|
||||||
setStrutSize( Q::Segment | A::Vertical, segmentStrutSize.transposed() );
|
setStrutSize( Q::Segment | A::Vertical, segmentStrutSize.transposed() );
|
||||||
|
@ -561,22 +561,23 @@ void Editor::setupSegmentedBar()
|
||||||
setPadding( Q::Segment | A::Horizontal, 12_dp, 0, 12_dp, 0 );
|
setPadding( Q::Segment | A::Horizontal, 12_dp, 0, 12_dp, 0 );
|
||||||
setPadding( Q::Segment | A::Vertical, 0, 12_dp, 0, 12_dp );
|
setPadding( Q::Segment | A::Vertical, 0, 12_dp, 0, 12_dp );
|
||||||
|
|
||||||
setBoxShape( Q::Segment, 0 );
|
for( const auto subcontrol : { Q::Segment, Q::Splash } )
|
||||||
|
{
|
||||||
setBoxShape( Q::Segment | Q::Minimum | A::Horizontal,
|
setBoxShape( subcontrol | Q::Minimum | A::Horizontal,
|
||||||
{ 100, 0, 100, 0, Qt::RelativeSize },
|
{ 100, 0, 100, 0, Qt::RelativeSize },
|
||||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||||
setBoxShape( Q::Segment | Q::Maximum | A::Horizontal,
|
setBoxShape( subcontrol | Q::Maximum | A::Horizontal,
|
||||||
{ 0, 100, 0, 100, Qt::RelativeSize },
|
{ 0, 100, 0, 100, Qt::RelativeSize },
|
||||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||||
|
|
||||||
setBoxShape( Q::Segment | Q::Minimum | A::Vertical,
|
setBoxShape( subcontrol | Q::Minimum | A::Vertical,
|
||||||
{ 100, 100, 0, 0, Qt::RelativeSize },
|
{ 100, 100, 0, 0, Qt::RelativeSize },
|
||||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||||
setBoxShape( Q::Segment | Q::Maximum | A::Vertical,
|
setBoxShape( subcontrol | Q::Maximum | A::Vertical,
|
||||||
{ 0, 0, 100, 100, Qt::RelativeSize },
|
{ 0, 0, 100, 100, Qt::RelativeSize },
|
||||||
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
{ QskStateCombination::CombinationNoState, Q::Disabled } );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// Separator
|
// Separator
|
||||||
|
@ -590,7 +591,7 @@ void Editor::setupSegmentedBar()
|
||||||
|
|
||||||
{
|
{
|
||||||
// Splash
|
// Splash
|
||||||
setBoxShape( Q::Splash, 20_dp );
|
|
||||||
setGradient( Q::Splash, stateLayerColor( m_pal.onSecondaryContainer, m_pal.pressedOpacity ) );
|
setGradient( Q::Splash, stateLayerColor( m_pal.onSecondaryContainer, m_pal.pressedOpacity ) );
|
||||||
setAnimation( Q::Splash | A::Color, qskDuration );
|
setAnimation( Q::Splash | A::Color, qskDuration );
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include "QskFunctions.h"
|
#include "QskFunctions.h"
|
||||||
#include "QskSGNode.h"
|
#include "QskSGNode.h"
|
||||||
#include "QskSkin.h"
|
#include "QskSkin.h"
|
||||||
#include "QskStandardSymbol.h"
|
#include "QskSkinStateChanger.h"
|
||||||
#include "QskSubcontrolLayoutEngine.h"
|
#include "QskSubcontrolLayoutEngine.h"
|
||||||
|
|
||||||
#include <qfontmetrics.h>
|
#include <qfontmetrics.h>
|
||||||
|
@ -144,7 +144,20 @@ QRectF QskSegmentedBarSkinlet::splashRect(
|
||||||
{
|
{
|
||||||
const auto sr = segmentRect( bar, contentsRect, index );
|
const auto sr = segmentRect( bar, contentsRect, index );
|
||||||
rect = sr;
|
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.moveCenter( pos );
|
||||||
rect = rect.intersected( sr );
|
rect = rect.intersected( sr );
|
||||||
}
|
}
|
||||||
|
@ -487,6 +500,11 @@ QSGNode* QskSegmentedBarSkinlet::updateSplashNode(
|
||||||
{
|
{
|
||||||
using Q = QskSegmentedBar;
|
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 );
|
const auto splashRect = bar->subControlRect( Q::Splash );
|
||||||
if ( splashRect.isEmpty() )
|
if ( splashRect.isEmpty() )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Reference in New Issue