Changeset View
Changeset View
Standalone View
Standalone View
libs/widgets/KoResourceItemChooser.cpp
Context not available. | |||||
136 | if (d->splitter->count() == 2) { | 136 | if (d->splitter->count() == 2) { | ||
---|---|---|---|---|---|
137 | d->splitter->setSizes(QList<int>() << 280 << 160); | 137 | d->splitter->setSizes(QList<int>() << 280 << 160); | ||
138 | } | 138 | } | ||
139 | | ||||
140 | QScroller* scroller = KisKineticScroller::createPreconfiguredScroller(d->previewScroller); | ||||
141 | if (scroller) { | ||||
142 | | ||||
143 | } | ||||
139 | } | 144 | } | ||
140 | 145 | | |||
141 | d->splitter->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); | 146 | d->splitter->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); | ||
Context not available. | |||||
546 | return QObject::eventFilter(object, event); | 551 | return QObject::eventFilter(object, event); | ||
547 | } | 552 | } | ||
548 | 553 | | |||
549 | void KoResourceItemChooser::configureKineticScrolling(int gesture, int sensitivity, bool scrollbar) | | |||
550 | { | | |||
551 | QScroller::ScrollerGestureType gestureType; | | |||
552 | | ||||
553 | switch (gesture) { | | |||
554 | case 1: { | | |||
555 | gestureType = QScroller::TouchGesture; | | |||
556 | break; | | |||
557 | } | | |||
558 | case 2: { | | |||
559 | gestureType = QScroller::LeftMouseButtonGesture; | | |||
560 | break; | | |||
561 | } | | |||
562 | default: | | |||
563 | return; | | |||
564 | } | | |||
565 | | ||||
566 | KoResourceItemView *view = itemView(); | | |||
567 | | ||||
568 | view->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); | | |||
569 | if (!scrollbar) { | | |||
570 | view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); | | |||
571 | } | | |||
572 | | ||||
573 | QScroller *scroller = QScroller::scroller(view); | | |||
574 | scroller->grabGesture(view, gestureType); | | |||
575 | | ||||
576 | QScrollerProperties sp; | | |||
577 | | ||||
578 | // DragStartDistance seems to be based on meter per second; though it's | | |||
579 | // not explicitly documented, other QScroller values are in that metric. | | |||
580 | | ||||
581 | // To start kinetic scrolling, with minimal sensitity, we expect a drag | | |||
582 | // of 10 mm, with minimum sensitity any > 0 mm. | | |||
583 | | ||||
584 | const float mm = 0.001f; // 1 millimeter | | |||
585 | const float resistance = 1.0f - (sensitivity / 100.0f); | | |||
586 | | ||||
587 | sp.setScrollMetric(QScrollerProperties::DragStartDistance, resistance * 10.0f * mm); | | |||
588 | sp.setScrollMetric(QScrollerProperties::DragVelocitySmoothingFactor, 1.0f); | | |||
589 | sp.setScrollMetric(QScrollerProperties::MinimumVelocity, 0.0f); | | |||
590 | sp.setScrollMetric(QScrollerProperties::AxisLockThreshold, 1.0f); | | |||
591 | sp.setScrollMetric(QScrollerProperties::MaximumClickThroughVelocity, 0.0f); | | |||
592 | sp.setScrollMetric(QScrollerProperties::MousePressEventDelay, 1.0f - 0.75f * resistance); | | |||
593 | sp.setScrollMetric(QScrollerProperties::AcceleratingFlickSpeedupFactor, 1.5f); | | |||
594 | | ||||
595 | sp.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, QScrollerProperties::OvershootAlwaysOn); | | |||
596 | sp.setScrollMetric(QScrollerProperties::OvershootDragResistanceFactor, 0.1); | | |||
597 | sp.setScrollMetric(QScrollerProperties::OvershootDragDistanceFactor, 0.3); | | |||
598 | sp.setScrollMetric(QScrollerProperties::OvershootScrollDistanceFactor, 0.1); | | |||
599 | sp.setScrollMetric(QScrollerProperties::OvershootScrollTime, 0.4); | | |||
600 | | ||||
601 | scroller->setScrollerProperties(sp); | | |||
602 | } | | |||
603 | | ||||
604 | void KoResourceItemChooser::resizeEvent(QResizeEvent *event) | 554 | void KoResourceItemChooser::resizeEvent(QResizeEvent *event) | ||
605 | { | 555 | { | ||
606 | QWidget::resizeEvent(event); | 556 | QWidget::resizeEvent(event); | ||
Context not available. |