// reset the search engine
//printf("BC_ListBox::BC_ListBox 4\n");
+ show_query = 0;
reset_query();
//printf("BC_ListBox::BC_ListBox 5\n");
}
int BC_ListBox::get_text_h(BC_ListBoxItem *item)
{
int h = item->get_text_h();
- if( h < 0 ) item->set_text_h(h = get_text_height(MEDIUMFONT));
+ if( h < 0 ) item->set_text_h(h = get_text_height(MEDIUMFONT, item->get_text()));
return h;
}
{
w = get_text_width(MEDIUMFONT, item->text) + LISTBOX_MARGIN * 2;
h = row_height;
+ int ih = get_icon_h(item);
+ if( h < ih ) h = ih;
}
return 0;
}
case NO_OPERATION:
// Show tooltip
- if(button_highlighted && is_popup && !tooltip_done &&
+ if(button_highlighted && is_popup &&
tooltip_text && tooltip_text[0] != 0 &&
duration == get_resources()->tooltip_delay)
{
show_tooltip();
- tooltip_done = 1;
return 1;
}
break;
int BC_ListBox::deactivate()
{
+ hide_tooltip();
// printf("BC_ListBox::deactivate %d this=%p gui=%p active=%d\n",
// __LINE__,
// this,
int BC_ListBox::activate(int take_focus)
{
if( active ) return 0;
+ active = 1;
if( take_focus )
set_active_subwindow(this);
button_releases = 0;
int BC_ListBox::activate(int x, int y, int w, int h)
{
- if( active || !is_popup || gui ) return 0;
+ if( !is_popup || gui ) return 0;
+ active = 1;
if(w != -1) popup_w = w;
if(h != -1) popup_h = h;
reset_query();
- active = 1;
if( y + popup_h > top_level->get_root_h(0) )
y -= get_h() + popup_h;
add_subwindow(gui = new BC_Popup(this,
{
case ESC:
case RETURN:
- case BACKSPACE:
top_level->deactivate();
// If user is manipulating popup with keyboard, don't pass on event.
if(query_len > 0) query[--query_len] = 0;
new_selection = query_list();
}
-
+ if( show_query ) {
+ if( query_len > 0 )
+ show_tooltip(query);
+ else
+ hide_tooltip();
+ }
redraw = 1;
result = 1;
}
gui->set_color(row_color);
gui->draw_box(x, y, column_width, h);
gui->set_color(BLACK);
- int yy = y, xx = x + column_width-1;
- gui->draw_line(x, yy, xx, yy);
- yy = y + row_height;
+ int xx = x + column_width-1;
+ gui->draw_line(x, y, xx, y);
+ int hh = row_height;
+ if( display_format == LISTBOX_ICON_LIST ) {
+ int ih = get_icon_h(item);
+ if( ih > hh ) hh = ih;
+ }
+ int yy = y + hh-1;
gui->draw_line(x, yy, xx, yy);
}