mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 03:23:24 +00:00
Improve MainTab behavior when using the scroll wheel
This gets the behavior close to what we really want. - scroll wheel no longer enters edit mode when over the tabWidget - scroll wheel doesn't modify dateTimeEdit, nor does it enter edit mode - scroll wheel still scrolls both the notes and the full widget The only oddity is that when clicking on either the dateTimeEdit or the tabWidget we don't immediately turn on the 'being edited' warning (as we do for all the other widgets). For those two widgets the user has to press a key before edit mode starts. I think this Fixes #176 Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Ideas-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
cd0a90014d
commit
d117becad8
1 changed files with 17 additions and 13 deletions
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue