diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2014-06-30 18:20:17 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-06-30 16:05:43 -0700 |
commit | facf6e4b595354f916edabd215b327196c111868 (patch) | |
tree | e719f5b52e06e31870c162602ca2938717488389 | |
parent | 927bc5d60135f97f7241fbe9f77d745c6fceb517 (diff) | |
download | subsurface-facf6e4b595354f916edabd215b327196c111868.tar.gz |
Calendar widget should hide when clicking somewhere else
This patch adds a event filter to hide the calendar
widget when it loses focus
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/simplewidgets.cpp | 16 | ||||
-rw-r--r-- | qt-ui/simplewidgets.h | 1 |
2 files changed, 15 insertions, 2 deletions
diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp index 94670b04b..7da691d1b 100644 --- a/qt-ui/simplewidgets.cpp +++ b/qt-ui/simplewidgets.cpp @@ -297,8 +297,7 @@ DateWidget::DateWidget(QWidget *parent) : QWidget(parent), setDate(QDate::currentDate()); setMinimumSize(QSize(80,64)); setFocusPolicy(Qt::StrongFocus); - calendarWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); - calendarWidget->setWindowModality(Qt::ApplicationModal); + calendarWidget->setWindowFlags(Qt::FramelessWindowHint); calendarWidget->setFirstDayOfWeek(getLocale().firstDayOfWeek()); calendarWidget->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader); @@ -306,8 +305,19 @@ DateWidget::DateWidget(QWidget *parent) : QWidget(parent), connect(calendarWidget, SIGNAL(clicked(QDate)), calendarWidget, SLOT(hide())); connect(calendarWidget, SIGNAL(activated(QDate)), this, SLOT(setDate(QDate))); connect(calendarWidget, SIGNAL(clicked(QDate)), this, SLOT(setDate(QDate))); + calendarWidget->installEventFilter(this); } +bool DateWidget::eventFilter(QObject *object, QEvent *event) +{ + if(event->type() == QEvent::FocusOut){ + calendarWidget->hide(); + return true; + } + return QObject::eventFilter(object, event); +} + + void DateWidget::setDate(const QDate& date) { mDate = date; @@ -367,6 +377,8 @@ void DateWidget::mousePressEvent(QMouseEvent *event) { calendarWidget->move(event->globalPos()); calendarWidget->show(); + calendarWidget->raise(); + calendarWidget->setFocus(); } void DateWidget::focusInEvent(QFocusEvent *event) diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h index f57046ea3..58c9199a5 100644 --- a/qt-ui/simplewidgets.h +++ b/qt-ui/simplewidgets.h @@ -104,6 +104,7 @@ protected: void focusOutEvent(QFocusEvent *); void keyPressEvent(QKeyEvent *); void changeEvent(QEvent *); + bool eventFilter(QObject *, QEvent *); signals: void dateChanged(const QDate& date); private: |