diff options
Diffstat (limited to 'qt-ui/simplewidgets.cpp')
-rw-r--r-- | qt-ui/simplewidgets.cpp | 16 |
1 files changed, 14 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) |