X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcmenupopup.C;h=c47e699a4be00cb8fe89bb555231568271605bb7;hb=b55798fc64eee00c6fab3b4763e791befb7275f9;hp=0d418cb8c4f442b3657d55eea63fb4a87cb42b38;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bcmenupopup.C b/cinelerra-5.1/guicast/bcmenupopup.C index 0d418cb8..c47e699a 100644 --- a/cinelerra-5.1/guicast/bcmenupopup.C +++ b/cinelerra-5.1/guicast/bcmenupopup.C @@ -89,7 +89,7 @@ int BC_MenuPopup::initialize(BC_WindowBase *top_level, { window_bg = new BC_Pixmap(top_level, resources->menu_popup_bg); } - + if(resources->menu_item_bg) { item_bg[0] = new BC_Pixmap(top_level, resources->menu_item_bg[0], PIXMAP_ALPHA); @@ -112,7 +112,13 @@ int BC_MenuPopup::add_item(BC_MenuItem *item) return 0; } -int BC_MenuPopup::remove_item(BC_MenuItem *item, int recursive) +int BC_MenuPopup::remove_item(BC_MenuItem *item) +{ + menu_items.remove(item); + return 0; +} + +int BC_MenuPopup::del_item(BC_MenuItem *item) { if(!item && menu_items.size() > 0) { @@ -121,16 +127,21 @@ int BC_MenuPopup::remove_item(BC_MenuItem *item, int recursive) if(item) { - menu_items.remove(item); + remove_item(item); item->menu_popup = 0; - if(!recursive) delete item; + delete 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() @@ -138,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(); } @@ -152,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); } @@ -418,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; isubmenu ) continue; + if( menu_items[i]->submenu->cursor_inside() ) return 1; + } + return 0; } int BC_MenuPopup::get_w()