[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