remove v4l/lml/buz, add symbolic folders, more xlat update, yuyv fixes, v4l2 upgrades
[goodguy/history.git] / cinelerra-5.1 / guicast / bcmenupopup.C
index 03068020e204ae572b6766e071f39d1b7623b537..9c679a3d002cb5ed71e9615690c97eb5a024644b 100644 (file)
@@ -134,9 +134,14 @@ int BC_MenuPopup::del_item(BC_MenuItem *item)
        return 0;
 }
 
-int BC_MenuPopup::total_menuitems()
+BC_MenuItem *BC_MenuPopup::get_item(int i)
 {
-       return menu_items.total;
+       return menu_items[i];
+}
+
+int BC_MenuPopup::total_items()
+{
+       return menu_items.size();
 }
 
 int BC_MenuPopup::dispatch_button_press()
@@ -144,7 +149,7 @@ int BC_MenuPopup::dispatch_button_press()
        int result = 0;
        if(popup)
        {
-               for(int i = 0; i < menu_items.total && !result; i++)
+               for(int i = 0; i < menu_items.total && !result && popup; i++)
                {
                        result = menu_items.values[i]->dispatch_button_press();
                }
@@ -158,7 +163,7 @@ int BC_MenuPopup::dispatch_button_release()
        int result = 0, redraw = 0;
        if(popup)
        {
-               for(int i = 0; i < menu_items.total && !result; i++)
+               for(int i = 0; i < menu_items.total && !result && popup; i++)
                {
                        result = menu_items.values[i]->dispatch_button_release(redraw);
                }
@@ -424,11 +429,12 @@ BC_Popup* BC_MenuPopup::get_popup()
 int BC_MenuPopup::cursor_inside()
 {
        if( !popup ) return 0;
-       int x = popup->get_relative_cursor_x();
-       if( x < 0 || x > popup->get_w() ) return 0;
-       int y = popup->get_relative_cursor_y();
-       if( y < 0 || y > popup->get_h() ) return 0;
-       return 1;
+       if( popup->cursor_above() ) return 1;
+       for( int i=0; i<menu_items.size(); ++i ) {
+               if( !menu_items[i]->submenu ) continue;
+               if( menu_items[i]->submenu->cursor_inside() ) return 1;
+       }
+       return 0;
 }
 
 int BC_MenuPopup::get_w()