[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdeutils/kdf
From:       Stanislav Karchebny <berk () upnet ! ru>
Date:       2004-07-18 3:42:07
Message-ID: 20040718034207.76EC016AF4 () office ! kde ! org
[Download RAW message or body]

CVS commit by karchebny: 

* Make popup behaviour saner. enterEvent() is still somewhat unreliable, but works for 99% of cases.


  M +23 -1     kwikdisk.cpp   1.58
  M +4 -0      kwikdisk.h   1.16


--- kdeutils/kdf/kwikdisk.cpp  #1.57:1.58
@@ -62,4 +62,5 @@ KwikDisk::KwikDisk()
    , m_dirty(TRUE)
    , m_menuVisible(FALSE)
+   , m_inside(FALSE)
    , m_optionDialog(0)
 {
@@ -73,8 +74,29 @@ KwikDisk::KwikDisk()
             this, SLOT(criticallyFull(DiskEntry*)) );
 
+   connect( contextMenu(), SIGNAL(aboutToHide()), this, SLOT(aboutToHide()) );
+
    loadSettings();
    updateDF();
 }
 
+void KwikDisk::aboutToHide()
+{
+   kdDebug() << k_funcinfo << endl;
+   if( !m_inside )
+      m_menuVisible = FALSE;
+}
+
+void KwikDisk::enterEvent(QEvent *)
+{
+   kdDebug() << k_funcinfo << endl;
+   m_inside = TRUE;
+}
+
+void KwikDisk::leaveEvent(QEvent *)
+{
+   kdDebug() << k_funcinfo << endl;
+   m_inside = FALSE;
+}
+
 void KwikDisk::mousePressEvent(QMouseEvent *me)
 {
@@ -87,6 +109,6 @@ void KwikDisk::mousePressEvent(QMouseEve
    {
       contextMenu()->hide();
-      me->ignore();
       m_menuVisible = FALSE;
+      me->ignore();
       return;
    }

--- kdeutils/kdf/kwikdisk.h  #1.15:1.16
@@ -54,8 +54,11 @@ class KwikDisk : public KSystemTray
       void startKDF();
       void invokeHelp();
+      void aboutToHide();
 
    private:
       void mousePressEvent(QMouseEvent *);
       void timerEvent(QTimerEvent *);
+      void enterEvent(QEvent *);
+      void leaveEvent(QEvent *);
 
       void setUpdateFrequency(int frequency);
@@ -69,4 +72,5 @@ class KwikDisk : public KSystemTray
       bool           m_dirty;
       bool           m_menuVisible;
+      bool           m_inside;
       COptionDialog *m_optionDialog;
 };


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic