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

List:       kde-commits
Subject:    branches/work/suse_kickoff_qstyle/kicker/kicker/buttons
From:       Dirk Mueller <mueller () kde ! org>
Date:       2006-11-13 16:40:34
Message-ID: 1163436034.574311.27215.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 604663 by mueller:

- sloppy region support for the activate-on-hover feature


 M  +42 -10    knewbutton.cpp  
 M  +2 -0      knewbutton.h  


--- branches/work/suse_kickoff_qstyle/kicker/kicker/buttons/knewbutton.cpp #604662:604663
@@ -254,15 +254,29 @@
 
 void KNewButton::enterEvent(QEvent* e)
 {
-     KButton::enterEvent(e);
+    KButton::enterEvent(e);
 
-     m_mouseInside = true;
-     if (KickerSettings::openOnHover())
-        m_hoverTimer = startTimer(kMax(200,QApplication::doubleClickInterval()/2));
+    QSize s(size());
+    s *= 0.25;
+    s = s.expandedTo(QSize(6,6));
 
-     m_active = true;
-     m_movie->unpause();
-     m_movie->restart();
+    switch (popupDirection()) {
+    case KPanelApplet::Left:
+        m_sloppyRegion = QRect(rect().topRight() - QPoint(s.width()-1, 0), s);
+        break;
+    case KPanelApplet::Right:
+        m_sloppyRegion = QRect(rect().topLeft(), s);
+        break;
+    case KPanelApplet::Up:
+        m_sloppyRegion = QRect(rect().bottomLeft() - QPoint(0, s.height()-1), s);
+        break;
+    case KPanelApplet::Down:
+        m_sloppyRegion = QRect(rect().topLeft(), s);
+    }
+
+    m_active = true;
+    m_movie->unpause();
+    m_movie->restart();
 }
 
 void KNewButton::rewindMovie()
@@ -276,7 +290,7 @@
     if (m_hoverTimer != -1)
         killTimer(m_hoverTimer);
 
-    m_hoverTimer = startTimer(500);
+    m_hoverTimer = startTimer(QApplication::startDragTime());
     m_mouseInside = true;
     m_drag = true;
 }
@@ -297,6 +311,24 @@
     KButton::leaveEvent(e);
 }
 
+void KNewButton::mouseMoveEvent(QMouseEvent* e)
+{
+    KButton::mouseMoveEvent(e);
+
+    m_mouseInside = m_sloppyRegion.contains(e->pos());
+
+    if ( m_sloppyRegion.contains(e->pos())) 
+    {
+        if (m_hoverTimer == -1 && KickerSettings::openOnHover())
+            m_hoverTimer = startTimer(kMax(200,QApplication::doubleClickInterval()/2));
+    }
+    else if (m_hoverTimer != -1) 
+    {
+        killTimer(m_hoverTimer);
+        m_hoverTimer = -1;
+    }
+}
+
 void KNewButton::slotStopAnimation()
 {
     m_active = false;
@@ -368,8 +400,8 @@
 
 void KNewButton::timerEvent(QTimerEvent* e)
 {
-    if (e->timerId() == m_hoverTimer) {
-
+    if (e->timerId() == m_hoverTimer)
+    {
         if (m_mouseInside && !isDown())
             showMenu();
 
--- branches/work/suse_kickoff_qstyle/kicker/kicker/buttons/knewbutton.h #604662:604663
@@ -70,6 +70,7 @@
 
     virtual void enterEvent(QEvent* e);
     virtual void leaveEvent(QEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
     virtual void dragEnterEvent(QDragEnterEvent*);
     virtual void dragLeaveEvent(QDragLeaveEvent*);
     virtual bool eventFilter(QObject *, QEvent *);
@@ -81,6 +82,7 @@
     QMovie* m_movie;
     QPixmap m_active_pixmap;
     QPoint m_oldPos;
+    QRect m_sloppyRegion;
     int m_hoverTimer;
     int m_openTimer;
     bool m_active;
[prev in list] [next in list] [prev in thread] [next in thread] 

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