16#ifndef QGSDECORATEDSCROLLBAR_H
17#define QGSDECORATEDSCROLLBAR_H
29class QAbstractScrollArea;
30class QgsScrollBarHighlightOverlay;
93 QScrollBar *scrollBar()
const;
100 QAbstractScrollArea *scrollArea()
const;
107 void setScrollArea( QAbstractScrollArea *scrollArea );
114 double lineHeight()
const;
121 void setLineHeight(
double height );
128 double visibleRange()
const;
135 void setVisibleRange(
double visibleRange );
142 double margin()
const;
149 void setMargin(
double margin );
156 QHash<int, QVector<QgsScrollBarHighlight>> highlights() const
SIP_SKIP;
166 void removeHighlights(
int category );
171 void removeAllHighlights();
176 double mLineHeight = 0.0;
177 double mVisibleRange = 0.0;
178 double mMargin = 0.0;
179 QAbstractScrollArea *mScrollArea =
nullptr;
180 QPointer<QgsScrollBarHighlightOverlay> mOverlay;
185class QgsScrollBarHighlightOverlay :
public QWidget
194 void scheduleUpdate();
197 void paintEvent( QPaintEvent *paintEvent )
override;
198 bool eventFilter( QObject *
object, QEvent *event )
override;
201 void drawHighlights( QPainter *painter,
204 double docSizeToHandleSizeRatio,
206 const QRect &viewport );
208 QRect overlayRect()
const;
209 QRect handleRect()
const;
212 QMap<QgsScrollBarHighlight::Priority, QMap<QRgb, QMap<int, int>>> mHighlightCache;
214 inline QScrollBar *scrollBar()
const {
return mHighlightController->scrollBar(); }
216 bool mIsCacheUpdateScheduled =
true;