X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcpopupmenu.C;h=be17a0a311403824ec130180a18e2cf7f7b767bd;hb=ccd23c15fae578be22d48b1a1e8b09cb43d593ae;hp=0c8281469610f702cd44029b841630e3fad1960f;hpb=6fd57106820e676e368399d16b925bdc78d34621;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bcpopupmenu.C b/cinelerra-5.1/guicast/bcpopupmenu.C index 0c828146..be17a0a3 100644 --- a/cinelerra-5.1/guicast/bcpopupmenu.C +++ b/cinelerra-5.1/guicast/bcpopupmenu.C @@ -26,7 +26,7 @@ #include "bcpopupmenu.h" #include "bcresources.h" #include "bcsignals.h" -#include "colors.h" +#include "bccolors.h" #include "fonts.h" #include #include "vframe.h" @@ -94,7 +94,9 @@ BC_PopupMenu::BC_PopupMenu(int x, BC_PopupMenu::~BC_PopupMenu() { - if(menu_popup) delete menu_popup; + use_title = 0; + deactivate(); + delete menu_popup; for(int i = 0; i < TOTAL_IMAGES; i++) { if(images[i]) delete images[i]; @@ -289,6 +291,7 @@ int BC_PopupMenu::activate_menu() { if( !get_button_down() || !BC_WindowBase::get_resources()->popupmenu_btnup ) return menu_activate(); + top_level->active_popup_menu = this; pending = 1; return 0; } @@ -326,7 +329,7 @@ int BC_PopupMenu::menu_activate() popup_down = 1; if(use_title) draw_title(1); } - return 0; + return 1; } int BC_PopupMenu::deactivate_menu() @@ -354,12 +357,11 @@ int BC_PopupMenu::focus_out_event() int BC_PopupMenu::repeat_event(int64_t duration) { - if( status == BUTTON_HI && !tooltip_done && + if( status == BUTTON_HI && tooltip_text && tooltip_text[0] != 0 && duration == top_level->get_resources()->tooltip_delay ) { show_tooltip(); - tooltip_done = 1; return 1; } return 0; @@ -419,8 +421,6 @@ int BC_PopupMenu::button_release_event() { // try the title int result = 0; - if( pending ) - return menu_activate(); if(is_event_win() && use_title) { @@ -432,6 +432,9 @@ int BC_PopupMenu::button_release_event() } } + if( pending ) + return menu_activate(); + if( !use_title && status == BUTTON_DN ) { result = 1; } @@ -470,7 +473,7 @@ int BC_PopupMenu::cursor_leave_event() if( popup_down ) { if( !get_button_down() && !menu_popup->cursor_inside() ) { status = BUTTON_UP; - deactivate_menu(); +// deactivate_menu(); } menu_popup->dispatch_cursor_leave(); } @@ -483,7 +486,6 @@ int BC_PopupMenu::cursor_enter_event() { if(is_event_win() && use_title) { - tooltip_done = 0; if(top_level->button_down) { status = BUTTON_DN; @@ -502,25 +504,19 @@ int BC_PopupMenu::cursor_motion_event() int result = 0; // This menu is down. - if(popup_down) - { + if(popup_down) { result = menu_popup->dispatch_motion_event(); } - if(!result && use_title && top_level->event_win == win) - { - if(highlighted) - { - if(!cursor_inside()) - { + if(!result && use_title && is_event_win()) { + if(highlighted) { + if(!cursor_inside()) { highlighted = 0; draw_title(1); } } - else - { - if(cursor_inside()) - { + else { + if(cursor_inside()) { highlighted = 1; draw_title(1); result = 1;