diff options
Diffstat (limited to 'qt-ui/maintab.cpp')
-rw-r--r-- | qt-ui/maintab.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index edc425bfb..81187dcf8 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -281,19 +281,23 @@ void MainTab::enableEdition(EditMode newEditMode) bool MainTab::eventFilter(QObject* object, QEvent* event) { - if (isEnabled() && event->type() == QEvent::KeyPress && object == ui.dateTimeEdit) { - tabBar()->setTabIcon(currentIndex(), QIcon(":warning")); - enableEdition(); - } - - if (isEnabled() && event->type() == QEvent::FocusIn && (object == ui.rating || - object == ui.visibility || - object == ui.tagWidget)) { - tabBar()->setTabIcon(currentIndex(), QIcon(":warning")); - enableEdition(); - } - - if (isEnabled() && event->type() == QEvent::MouseButtonPress ) { + // we want to prevent the user from accidentally enabling editMode: + // for the tagWidget we ignore FocusIn - that's both a click and starting the scroll wheel + // this means a click by itself won't start edit mode - but typing something will + if (isEnabled() && editMode == NONE && object->objectName() == "tagWidget" && + event->type() == QEvent::FocusIn) + return true; + // for the dateTimeEdit widget we need to ignore Wheel events as well (as long as we aren't editing) + if (isEnabled() && editMode == NONE && object->objectName() == "dateTimeEdit" && + (event->type() == QEvent::FocusIn || event->type() == QEvent::Wheel)) + return true; + // MouseButtonPress in any widget (not all will ever get this), KeyPress in the dateTimeEdit, + // FocusIn for the starWidgets or RequestSoftwareInputPanel for tagWidget start the editing + if (isEnabled() && editMode == NONE && + (event->type() == QEvent::MouseButtonPress) || + (event->type() == QEvent::KeyPress && object == ui.dateTimeEdit) || + (event->type() == QEvent::FocusIn && (object == ui.rating || object == ui.visibility)) || + (event->type() == QEvent::RequestSoftwareInputPanel && object == ui.tagWidget)) { tabBar()->setTabIcon(currentIndex(), QIcon(":warning")); enableEdition(); } |