When there is no entries in a menu, there is a crash. This delays the crash until...
authorRicardo Cruz <rick2@aeiou.pt>
Thu, 5 Aug 2004 14:09:12 +0000 (14:09 +0000)
committerRicardo Cruz <rick2@aeiou.pt>
Thu, 5 Aug 2004 14:09:12 +0000 (14:09 +0000)
I dunno what changes Tobias made to menu, but I don't think that ugly checking for horizontal lines was in there.

SVN-Revision: 1707

lib/gui/menu.cpp

index b23ff78..28e6eff 100644 (file)
@@ -457,17 +457,23 @@ Menu::action()
         }
     }
 
-  MenuItem& new_item = item[active_item];
-  if(new_item.kind == MN_DEACTIVE
-      || new_item.kind == MN_LABEL
-      || new_item.kind == MN_HL)
+  if(active_item > 0 && active_item < (int)item.size())
     {
+    // FIXME: wtf?! having a hack to avoid horizontal lines...
+    // Elegant solution would be to check for horizontal lines, right
+    // when it was asked to move menu up and down
+    MenuItem& new_item = item[active_item];
+    if(new_item.kind == MN_DEACTIVE ||
+       new_item.kind == MN_LABEL ||
+       new_item.kind == MN_HL)
+      {
       // Skip the horzontal line item
       if (menuaction != MENU_ACTION_UP && menuaction != MENU_ACTION_DOWN)
         menuaction = MENU_ACTION_DOWN;
 
       if (item.size() > 1)
         action();
+      }
     }
 
   menuaction = MENU_ACTION_NONE;