summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/maintab.cpp30
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();
}