From a0df8141211147541f6d9f71c5d26ea4763757c5 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Mon, 15 May 2023 12:38:50 +0200 Subject: [PATCH] wip --- src/controls/QskMenuSkinlet.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/controls/QskMenuSkinlet.cpp b/src/controls/QskMenuSkinlet.cpp index 0325c5d2..7547fe02 100644 --- a/src/controls/QskMenuSkinlet.cpp +++ b/src/controls/QskMenuSkinlet.cpp @@ -207,17 +207,27 @@ QskMenuSkinlet::~QskMenuSkinlet() = default; QRectF QskMenuSkinlet::cursorRect( const QskSkinnable* skinnable, const QRectF& contentsRect, int index ) const { - // TODO - const auto count = sampleCount( skinnable, QskMenu::Segment ); + using Q = QskMenu; - auto rect = sampleRect( skinnable, contentsRect, - QskMenu::Segment, qBound( 0, index, count - 1 ) ); + const auto menu = static_cast< const QskMenu* >( skinnable ); + const auto actions = menu->actions(); + + QRectF rect; if ( index < 0 ) + { + rect = sampleRect( skinnable, contentsRect, Q::Segment, 0 ); rect.setBottom( rect.top() ); - - if ( index >= count ) + } + else if ( index >= actions.count() ) + { + rect = sampleRect( skinnable, contentsRect, Q::Segment, actions.count() - 1 ); rect.setTop( rect.bottom() ); + } + else + { + rect = sampleRect( skinnable, contentsRect, Q::Segment, actions[index] ); + } return rect; }