[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdebase/kfind
From: Waldo Bastian <bastian () kde ! org>
Date: 2004-05-24 14:58:15
Message-ID: 20040524145815.553E7233A () office ! kde ! org
[Download RAW message or body]
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 <qtimer.h>
+
#include <kglobal.h>
#include <klocale.h>
@@ -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());
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic