]> cloud.milkyroute.net Git - dolphin.git/commitdiff
* Install an event-filter for the view implementations. Whenever a view implementatio...
authorPeter Penz <peter.penz19@gmail.com>
Thu, 21 Feb 2008 14:01:40 +0000 (14:01 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Thu, 21 Feb 2008 14:01:40 +0000 (14:01 +0000)
* Let the metadata widget only get the focus by clicking.

* Tried to install a similar filter for the wheel-event code duplication in the view-implementations, but the event filter is invoked _after_ the view implementation gets the wheel event... -> added a note the the 3 implementations as hint.

svn path=/trunk/KDE/kdebase/apps/; revision=777757

src/dolphincolumnwidget.cpp
src/dolphindetailsview.cpp
src/dolphiniconsview.cpp
src/dolphinview.cpp
src/dolphinview.h
src/metadatawidget.cpp

index ca4db00c72a5e9d16aea95f8947dd81023141f64..b1050afdab19917390333330962da298c0706951 100644 (file)
@@ -346,7 +346,7 @@ void DolphinColumnWidget::mousePressEvent(QMouseEvent* event)
 void DolphinColumnWidget::keyPressEvent(QKeyEvent* event)
 {
     QListView::keyPressEvent(event);
-    Q_ASSERT(m_view->m_controller->itemView() == this);
+    requestActivation();
     m_view->m_controller->handleKeyPressEvent(event);
 }
 
@@ -373,7 +373,8 @@ void DolphinColumnWidget::contextMenuEvent(QContextMenuEvent* event)
 void DolphinColumnWidget::wheelEvent(QWheelEvent* event)
 {
     // let Ctrl+wheel events propagate to the DolphinView for icon zooming
-    if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) {
+    // (installing an event filter does not work, as the wheel event is handled first)
+    if (event->modifiers() & Qt::ControlModifier) {
         event->ignore();
         return;
     }
index b17164d8b60c1b211a8bef531dd9dfab0a36f4b2..c8c419f025451c736a04bd85cded9c2e9f0dd212 100644 (file)
@@ -386,9 +386,10 @@ void DolphinDetailsView::resizeEvent(QResizeEvent* event)
 void DolphinDetailsView::wheelEvent(QWheelEvent* event)
 {
     // let Ctrl+wheel events propagate to the DolphinView for icon zooming
-    if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) {
+    // (installing an event filter does not work, as the wheel event is handled first)
+    if (event->modifiers() & Qt::ControlModifier) {
         event->ignore();
-       return;
+        return;
     }
     QTreeView::wheelEvent(event);
 }
index bb3d242b98556efdc76bb49a51d1ab5b130565cd..9f31141825e31f2e5044c22f9f14d153bf5f9f9e 100644 (file)
@@ -297,7 +297,8 @@ void DolphinIconsView::keyPressEvent(QKeyEvent* event)
 void DolphinIconsView::wheelEvent(QWheelEvent* event)
 {
     // let Ctrl+wheel events propagate to the DolphinView for icon zooming
-    if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) {
+    // (installing an event filter does not work, as the wheel event is handled first)
+    if (event->modifiers() & Qt::ControlModifier) {
         event->ignore();
         return;
     }
index 6f351e63b97573955e20bf6d53826eeebcd453ce..d6c5f6c256b3e8b3a83ea7587427f22e0a6b14d7 100644 (file)
@@ -537,17 +537,26 @@ void DolphinView::mouseReleaseEvent(QMouseEvent* event)
 
 void DolphinView::wheelEvent(QWheelEvent* event)
 {
-    if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) {
-        int d = event->delta();
-        if (d > 0 && isZoomInPossible()) {
+    if (event->modifiers() & Qt::ControlModifier) {
+        const int delta = event->delta();
+        if ((delta > 0) && isZoomInPossible()) {
             zoomIn();
-        } else if (d < 0 && isZoomOutPossible()) {
+        } else if ((delta < 0) && isZoomOutPossible()) {
             zoomOut();
         }
-       event->accept();
+        event->accept();
     }
 }
 
+bool DolphinView::eventFilter(QObject* watched, QEvent* event)
+{
+    if ((watched == itemView()) && (event->type() == QEvent::FocusIn)) {
+        m_controller->requestActivation();
+    }
+
+    return QWidget::eventFilter(watched, event);
+}
+
 void DolphinView::activate()
 {
     setActive(true);
@@ -897,6 +906,8 @@ void DolphinView::createView()
     }
 
     Q_ASSERT(view != 0);
+    view->installEventFilter(this);
+
     m_controller->setItemView(view);
 
     m_fileItemDelegate = new KFileItemDelegate(view);
index af0dd62a2ac17d7c2be6a278a71f78be4d57f464..4f296476133d02c6bb49de884a4791723d681197 100644 (file)
@@ -75,11 +75,11 @@ class LIBDOLPHINPRIVATE_EXPORT DolphinView : public QWidget
 
 public:
     /**
-        * Defines the view mode for a directory. The view mode
-        * can be defined when constructing a DolphinView. The
-        * view mode is automatically updated if the directory itself
-        * defines a view mode (see class ViewProperties for details).
-        */
+     * Defines the view mode for a directory. The view mode
+     * can be defined when constructing a DolphinView. The
+     * view mode is automatically updated if the directory itself
+     * defines a view mode (see class ViewProperties for details).
+     */
     enum Mode
     {
         /**
@@ -489,6 +489,7 @@ protected:
     /** @see QWidget::mouseReleaseEvent */
     virtual void mouseReleaseEvent(QMouseEvent* event);
     virtual void wheelEvent(QWheelEvent* event);
+    virtual bool eventFilter(QObject* watched, QEvent* event);
 
 private slots:
     /**
index 8db305e93e5dadb94b3ed3c85c9fc634601443f6..4e3aa66dd9bad2ad4777d73fabeb4fba11b48e44 100644 (file)
@@ -85,6 +85,7 @@ MetaDataWidget::MetaDataWidget(QWidget* parent) :
 #ifdef HAVE_NEPOMUK
     d = new Private;
     d->editComment = new QTextEdit(this);
+    d->editComment->setFocusPolicy(Qt::ClickFocus);
     d->ratingWidget = new KRatingWidget(this);
     d->tagWidget = new Nepomuk::TagWidget(this);
     connect(d->ratingWidget, SIGNAL(ratingChanged(unsigned int)), this, SLOT(slotRatingChanged(unsigned int)));