From cc295bc9d25e4a484d53f93311a29ff14c2f1e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Schummer?= <ext-jorg.2.schummer@nokia.com> Date: Mon, 31 May 2010 15:27:52 +0300 Subject: [PATCH] QuickDesigner.itemLibrary: enable mouse wheel interaction in items view Task-number: BAUHAUS-657 --- .../components/itemlibrary/itemlibrary.cpp | 11 +++++++++++ .../qmldesigner/components/itemlibrary/itemlibrary.h | 4 ++++ .../components/itemlibrary/qml/ItemsView.qml | 4 ++++ .../components/itemlibrary/qml/ItemsViewStyle.qml | 1 + .../components/itemlibrary/qml/Scrollbar.qml | 8 ++++++-- 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp index a812f298680..48164c5f9ee 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp @@ -153,6 +153,7 @@ ItemLibrary::ItemLibrary(QWidget *parent) : QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(m_d->m_itemsView->rootObject()); connect(rootItem, SIGNAL(itemSelected(int)), this, SLOT(showItemInfo(int))); connect(rootItem, SIGNAL(itemDragged(int)), this, SLOT(startDragAndDrop(int))); + connect(this, SIGNAL(scrollItemsView(QVariant)), rootItem, SLOT(scrollView(QVariant))); connect(this, SIGNAL(resetItemsView()), rootItem, SLOT(resetView())); /* create Resources view and its model */ @@ -318,4 +319,14 @@ void ItemLibrary::showItemInfo(int /*itemLibId*/) // qDebug() << "showing item info about id" << itemLibId; } +void ItemLibrary::wheelEvent(QWheelEvent *event) +{ + if (m_d->m_stackedWidget->currentIndex() == 0 && + m_d->m_itemsView->rect().contains(event->pos())) { + emit scrollItemsView(event->delta()); + event->accept(); + } else + QFrame::wheelEvent(event); +} + } diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h index 26637e5a400..0eff37dee91 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.h @@ -61,8 +61,12 @@ public Q_SLOTS: void startDragAndDrop(int itemLibId); void showItemInfo(int itemLibId); +protected: + void wheelEvent(QWheelEvent *event); + signals: void itemActivated(const QString& itemName); + void scrollItemsView(QVariant delta); void resetItemsView(); private: diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsView.qml b/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsView.qml index 002a003d694..6b47b38c778 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsView.qml +++ b/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsView.qml @@ -60,6 +60,10 @@ Rectangle { // public + function scrollView(delta) { + scrollbar.scroll(-delta / style.scrollbarWheelDeltaFactor) + } + function resetView() { expandAllEntries() scrollbar.reset() diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsViewStyle.qml b/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsViewStyle.qml index 13242e3ae37..1cdae226dcb 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsViewStyle.qml +++ b/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsViewStyle.qml @@ -41,6 +41,7 @@ Item { property string scrollbarGradientMiddleColor: "#656565" property string scrollbarGradientEndColor: "#888888" property int scrollbarClickScrollAmount: 40 + property int scrollbarWheelDeltaFactor: 4 property string itemNameTextColor: "#FFFFFF" diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/Scrollbar.qml b/src/plugins/qmldesigner/components/itemlibrary/qml/Scrollbar.qml index a882c2fa140..34dca1c30aa 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/qml/Scrollbar.qml +++ b/src/plugins/qmldesigner/components/itemlibrary/qml/Scrollbar.qml @@ -38,6 +38,10 @@ Item { property variant flickable + function scroll(delta) { + handle.y = Math.max(0, Math.min(scrollHeight, handle.y + delta)) + } + function reset() { handle.y = 0 } @@ -100,7 +104,7 @@ Item { anchors.right: parent.right anchors.top: parent.top anchors.bottom: handle.top - onClicked: handle.y = Math.max(0, handle.y - style.scrollbarClickScrollAmount) + onClicked: scroll(-style.scrollbarClickScrollAmount) } Item { @@ -151,6 +155,6 @@ Item { anchors.right: parent.right anchors.top: handle.bottom anchors.bottom: parent.bottom - onClicked: handle.y = Math.min(scrollHeight, handle.y + style.scrollbarClickScrollAmount) + onClicked: scroll(style.scrollbarClickScrollAmount) } } -- GitLab