From e0411a94f74b3644bb6ad0784d9ad3d0c4b51a36 Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Fri, 12 Dec 2003 19:45:46 +0000
Subject: fixed menu timer bug

---
 src/FbTk/Menu.cc | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc
index 77ddd5d..84345c9 100644
--- a/src/FbTk/Menu.cc
+++ b/src/FbTk/Menu.cc
@@ -22,7 +22,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: Menu.cc,v 1.46 2003/12/12 18:18:49 fluxgen Exp $
+// $Id: Menu.cc,v 1.47 2003/12/12 19:45:46 fluxgen Exp $
 
 //use GNU extensions
 #ifndef	 _GNU_SOURCE
@@ -1121,8 +1121,9 @@ void Menu::buttonReleaseEvent(XButtonEvent &re) {
 
 
 void Menu::motionNotifyEvent(XMotionEvent &me) {
-    m_hide_timer.stop();
+
     if (me.window == menu.title && (me.state & Button1Mask)) {
+        stopHide();
         if (movable) {
             if (! moving) {
                 if (m_parent && (! torn)) {
@@ -1147,6 +1148,7 @@ void Menu::motionNotifyEvent(XMotionEvent &me) {
     } else if ((! (me.state & Button1Mask)) && me.window == menu.frame &&
                me.x >= 0 && me.x < (signed) width() &&
                me.y >= 0 && me.y < (signed) menu.frame_h) {
+        stopHide();
         int sbl = (me.x / menu.item_w), i = (me.y / menu.item_h),
             w = (sbl * menu.persub) + i;
 
@@ -1186,10 +1188,7 @@ void Menu::motionNotifyEvent(XMotionEvent &me) {
                 drawItem(w, true);
 
                 if (theme().menuMode() == MenuTheme::DELAY_OPEN) {
-                    cerr<<"menuMode DELAY_OPEN"<<endl;
                     // setup show menu timer
-                    stopHide();
-
                     timeval timeout;
                     timeout.tv_sec = 0;
                     timeout.tv_usec = theme().delayOpen();
@@ -1392,18 +1391,15 @@ void Menu::openSubmenu() {
     if (item < 0 || item >= menuitems.size())
         return;
 
-    stopHide(); 
-
+    drawItem(item, true);
     if (menuitems[item]->submenu() != 0 && !menuitems[item]->submenu()->isVisible())
         drawSubmenu(item);
 
 }
 
 void Menu::closeMenu() {
-    if (isVisible() &&
-        !isTorn()) {
+    if (isVisible() && !isTorn())
         internal_hide();
-    }    
 }
 
 void Menu::startHide() {
-- 
cgit v0.11.2