diff options
-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: |