summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2014-06-30 18:20:17 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-06-30 16:05:43 -0700
commitfacf6e4b595354f916edabd215b327196c111868 (patch)
treee719f5b52e06e31870c162602ca2938717488389
parent927bc5d60135f97f7241fbe9f77d745c6fceb517 (diff)
downloadsubsurface-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.cpp16
-rw-r--r--qt-ui/simplewidgets.h1
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: