From kde-commits Mon May 24 14:58:15 2004 From: Waldo Bastian Date: Mon, 24 May 2004 14:58:15 +0000 To: kde-commits Subject: kdebase/kfind Message-Id: <20040524145815.553E7233A () office ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=108541070113786 CVS commit by waba: * Relevantive recommendation: Click the date button a second time after changing the date closes the popup and sets the new date. * ESC closes the popup without setting a new date. M +27 -5 kdatecombo.cpp 1.8 M +1 -1 kdatecombo.h 1.4 --- kdebase/kfind/kdatecombo.cpp #1.7:1.8 @@ -5,4 +5,6 @@ ***********************************************************************/ +#include + #include #include @@ -26,8 +28,9 @@ KDateCombo::KDateCombo(const QDate & dat } -void KDateCombo::initObject(const QDate & date, QWidget *parent, const char *name) +void KDateCombo::initObject(const QDate & date, QWidget *, const char *) { clearValidator(); popupFrame = new KPopupFrame(this, "popupFrame"); + popupFrame->installEventFilter(this); datePicker = new KDatePicker(popupFrame, date, "datePicker"); datePicker->setMinimumSize(datePicker->sizeHint()); @@ -74,4 +77,6 @@ bool KDateCombo::setDate(const QDate & n void KDateCombo::dateEnteredEvent(QDate newDate) { + if (!newDate.isValid()) + newDate = datePicker->date(); popupFrame->hide(); setDate(newDate); @@ -81,4 +86,5 @@ void KDateCombo::mousePressEvent (QMouse { if (e->button() & QMouseEvent::LeftButton) + { if (rect().contains( e->pos())) { @@ -89,9 +95,20 @@ void KDateCombo::mousePressEvent (QMouse //datePicker->setFocus(); } + } } -bool KDateCombo::eventFilter (QObject* o, QEvent* e) +bool KDateCombo::eventFilter (QObject*, QEvent* e) { - if ( e->type() == QEvent::KeyRelease ) + if ( e->type() == QEvent::MouseButtonPress ) + { + QMouseEvent *me = (QMouseEvent *)e; + QPoint p = mapFromGlobal( me->globalPos() ); + if (rect().contains( p ) ) + { + QTimer::singleShot(10, this, SLOT(dateEnteredEvent())); + return true; + } + } + else if ( e->type() == QEvent::KeyRelease ) { QKeyEvent *k = (QKeyEvent *)e; @@ -102,8 +119,13 @@ bool KDateCombo::eventFilter (QObject* o return true; } + else if (k->key()==Qt::Key_Escape) + { + popupFrame->hide(); + return true; + } else return false; } - else + return false; } --- kdebase/kfind/kdatecombo.h #1.3:1.4 @@ -44,5 +44,5 @@ protected: protected slots: - void dateEnteredEvent(QDate); + void dateEnteredEvent(QDate d=QDate()); };