7#ifndef KO_TOOLBOX_SCROLL_AREA_H
8#define KO_TOOLBOX_SCROLL_AREA_H
16#include <QStyleOption>
31 setFrameShape(QFrame::NoFrame);
32 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
33 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
52 QScroller::grabGesture(viewport(), QScroller::MiddleMouseButtonGesture);
53 scroller = QScroller::scroller(viewport());
54 QScrollerProperties sp = scroller->scrollerProperties();
56 sp.setScrollMetric(QScrollerProperties::MaximumVelocity, 0.0);
57 sp.setScrollMetric(QScrollerProperties::OvershootDragResistanceFactor, 0.1);
58 sp.setScrollMetric(QScrollerProperties::OvershootDragDistanceFactor, 0.1);
59 sp.setScrollMetric(QScrollerProperties::OvershootScrollDistanceFactor, 0.0);
60 sp.setScrollMetric(QScrollerProperties::OvershootScrollTime, 0.4);
62 scroller->setScrollerProperties(sp);
64 connect(scroller, SIGNAL(stateChanged(QScroller::State)),
this, SLOT(
slotScrollerStateChange(QScroller::State)));
100 if (
event->type() == QEvent::LayoutRequest) {
106 return QScrollArea::event(
event);
116 return QScrollArea::eventFilter(watched,
event);
122 QScrollArea::resizeEvent(
event);
129 QApplication::sendEvent(verticalScrollBar(),
event);
131 QApplication::sendEvent(horizontalScrollBar(),
event);
137 QScrollArea::scrollContentsBy(dx, dy);
145 verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepSub);
147 horizontalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepSub);
154 verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepAdd);
156 horizontalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepAdd);
165 return style()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, &opt,
this);
171 QSize newSize = viewport()->size();
191 const QScrollBar *scrollbar =
m_orientation == Qt::Vertical ? verticalScrollBar() : horizontalScrollBar();
192 const bool canPrev = scrollbar->value() != scrollbar->minimum();
193 const bool canNext = scrollbar->value() != scrollbar->maximum();
201 }
else if (isLeftToRight()) {