[PATCH] MainTab: tweak the scrolling while inside the notes
Lubomir I. Ivanov
neolit123 at gmail.com
Fri Dec 13 04:00:46 UTC 2013
From: "Lubomir I. Ivanov" <neolit123 at gmail.com>
Patch makes a couple of changes:
- if the notes receive focus set the 'inNotes' flag and scroll to the bottom
of the tab widget
- if 'inNotes' is set disable the mouse wheel for the entire widget except
the notes
This makes scrolling to the top of the notes not engage scrolling the
entire tab widget.
Fixes #176
Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
qt-ui/maintab.cpp | 17 ++++++++++++++++-
qt-ui/maintab.h | 1 +
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index edc425b..654ce98 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -28,7 +28,8 @@
MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
weightModel(new WeightModel()),
cylindersModel(CylindersModel::instance()),
- editMode(NONE)
+ editMode(NONE),
+ inNotes(false)
{
ui.setupUi(this);
ui.cylinders->setModel(cylindersModel);
@@ -57,6 +58,8 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
ui.divemaster->installEventFilter(this);
ui.buddy->installEventFilter(this);
ui.suit->installEventFilter(this);
+ ui.scrollArea->installEventFilter(this);
+ ui.notes->installEventFilter(this);
ui.notes->viewport()->installEventFilter(this);
ui.rating->installEventFilter(this);
ui.visibility->installEventFilter(this);
@@ -281,6 +284,18 @@ void MainTab::enableEdition(EditMode newEditMode)
bool MainTab::eventFilter(QObject* object, QEvent* event)
{
+ // if the notes receive focus set the inNotes flag and scroll to the bottom
+ if (isEnabled() && object == ui.notes) {
+ if (event->type() == QEvent::FocusIn) {
+ inNotes = true;
+ ui.scrollArea->verticalScrollBar()->setSliderPosition(ui.scrollArea->verticalScrollBar()->maximum());
+ }
+ if (event->type() == QEvent::FocusOut)
+ inNotes = false;
+ }
+ // if in notes disable the mouse wheel
+ if (isEnabled() && event->type() == QEvent::Wheel && object != ui.notes->viewport() && inNotes)
+ return true;
if (isEnabled() && event->type() == QEvent::KeyPress && object == ui.dateTimeEdit) {
tabBar()->setTabIcon(currentIndex(), QIcon(":warning"));
enableEdition();
diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h
index aed8f9e..40b55a4 100644
--- a/qt-ui/maintab.h
+++ b/qt-ui/maintab.h
@@ -94,6 +94,7 @@ private:
CylindersModel *cylindersModel;
QMap<dive*, NotesBackup> notesBackup;
EditMode editMode;
+ bool inNotes;
/* since the multi-edition of the equipment is fairly more
* complex than a single item, because it involves a Qt
--
1.7.11.msysgit.0
More information about the subsurface
mailing list