#include "bcpopupmenu.h"
#include "bcresources.h"
#include "bcsignals.h"
-#include "colors.h"
+#include "bccolors.h"
#include "fonts.h"
#include <string.h>
#include "vframe.h"
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];
{
if( !get_button_down() || !BC_WindowBase::get_resources()->popupmenu_btnup )
return menu_activate();
+ top_level->active_popup_menu = this;
pending = 1;
return 0;
}
popup_down = 1;
if(use_title) draw_title(1);
}
- return 0;
+ return 1;
}
int BC_PopupMenu::deactivate_menu()
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;
int BC_PopupMenu::button_press_event()
{
+ int result = 0;
if(get_buttonpress() == 1 &&
is_event_win() &&
use_title)
BC_MenuItem *tmp = menu_popup->menu_items.values[theval];
set_text(tmp->get_text());
- if (!tmp->handle_event())
- this->handle_event();
+ result = tmp->handle_event();
+ if( !result )
+ result = this->handle_event();
}
if(popup_down)
{
// Menu is down so dispatch to popup.
menu_popup->dispatch_button_press();
- return 1;
+ result = 1;
}
- return 0;
+ return result;
}
int BC_PopupMenu::button_release_event()
if( popup_down ) {
if( !get_button_down() && !menu_popup->cursor_inside() ) {
status = BUTTON_UP;
- deactivate_menu();
+// deactivate_menu();
}
menu_popup->dispatch_cursor_leave();
}
{
if(is_event_win() && use_title)
{
- tooltip_done = 0;
if(top_level->button_down)
{
status = BUTTON_DN;
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;