This prevents tags widgets (dive tags and buddy) from grabbing
focus on mouse wheel events but allows entering dive edit mode
on mouse click.

It was attempted earlier by Dirk (commit d117beca), but edit mode
did not work properly.

Signed-off-by: Sergey Starosek <sergey.staro...@gmail.com>
---
 qt-ui/maintab.cpp   | 3 +--
 qt-ui/tagwidget.cpp | 6 ++++++
 qt-ui/tagwidget.h   | 1 +
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 4258d09..f3f85b0 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -305,8 +305,7 @@ bool MainTab::eventFilter(QObject* object, QEvent* event)
        // FocusIn for the starWidgets or RequestSoftwareInputPanel for 
tagWidget start the editing
        if ((event->type() == QEvent::MouseButtonPress) ||
            (event->type() == QEvent::KeyPress && object == ui.dateTimeEdit) ||
-           (event->type() == QEvent::FocusIn && (object == ui.rating || object 
== ui.visibility || object == ui.buddy)) ||
-           (event->type() == QEvent::RequestSoftwareInputPanel && object == 
ui.tagWidget)) {
+           (event->type() == QEvent::FocusIn && (object == ui.rating || object 
== ui.visibility || object == ui.buddy || object == ui.tagWidget))) {
                tabBar()->setTabIcon(currentIndex(), QIcon(":warning"));
                enableEdition();
        }
diff --git a/qt-ui/tagwidget.cpp b/qt-ui/tagwidget.cpp
index dc78c89..e7585df 100644
--- a/qt-ui/tagwidget.cpp
+++ b/qt-ui/tagwidget.cpp
@@ -27,6 +27,7 @@ TagWidget::TagWidget(QWidget *parent) : 
GroupedLineEdit(parent), m_completer(NUL
                addColor( QColor(Qt::green).darker(120) );
                addColor( QColor(Qt::blue).darker(120) );
        } // light text. get a dark background.
+       setFocusPolicy(Qt::StrongFocus);
 }
 
 void TagWidget::setCompleter(QCompleter *completer)
@@ -187,3 +188,8 @@ void TagWidget::keyPressEvent(QKeyEvent *e) {
        }
 }
 
+void TagWidget::wheelEvent(QWheelEvent *event) {
+       if (hasFocus()) {
+               GroupedLineEdit::wheelEvent(event);
+       }
+}
diff --git a/qt-ui/tagwidget.h b/qt-ui/tagwidget.h
index b9c1619..1f5cc2d 100644
--- a/qt-ui/tagwidget.h
+++ b/qt-ui/tagwidget.h
@@ -16,6 +16,7 @@ public:
        void setText(QString text);
        void clear();
        void setCursorPosition(int position);
+       void wheelEvent(QWheelEvent *event);
 public slots:
         void reparse();
        void completionSelected(QString);
-- 
1.8.3.2

_______________________________________________
subsurface mailing list
subsurface@hohndel.org
http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to