// ====================================================== scrollbars
-
-BC_ListBoxYScroll::BC_ListBoxYScroll(BC_ListBox *listbox,
- int total_height,
- int view_height,
- int position)
- : BC_ScrollBar(listbox->get_yscroll_x(),
- listbox->get_yscroll_y(),
- SCROLL_VERT,
- listbox->get_yscroll_height(),
- total_height,
- position,
- view_height)
+BC_ListBoxYScroll::BC_ListBoxYScroll(BC_ListBox *listbox)
+ : BC_ScrollBar(listbox->get_yscroll_x(), listbox->get_yscroll_y(),
+ listbox->yscroll_orientation, listbox->get_yscroll_height(),
+ listbox->items_h, listbox->yposition, listbox->view_h)
{
this->listbox = listbox;
}
return 1;
}
-
-
-
-
-
-
-BC_ListBoxXScroll::BC_ListBoxXScroll(BC_ListBox *listbox,
- int total_width,
- int view_width,
- int position)
- : BC_ScrollBar(listbox->get_xscroll_x(),
- listbox->get_xscroll_y(),
- SCROLL_HORIZ,
- listbox->get_xscroll_width(),
- total_width,
- position,
- view_width)
+BC_ListBoxXScroll::BC_ListBoxXScroll(BC_ListBox *listbox)
+ : BC_ScrollBar(listbox->get_xscroll_x(), listbox->get_xscroll_y(),
+ listbox->xscroll_orientation, listbox->get_xscroll_width(),
+ listbox->items_w, listbox->xposition, listbox->view_w)
{
this->listbox = listbox;
}
}
-
-
-
-
-
-
BC_ListBoxToggle::BC_ListBoxToggle(BC_ListBox *listbox,
BC_ListBoxItem *item,
int x,
new_value = 0;
need_xscroll = 0;
need_yscroll = 0;
+ xscroll_orientation = SCROLL_HORIZ;
+ yscroll_orientation = SCROLL_VERT;
bg_tile = 0;
bg_draw = 1;
drag_popup = 0;
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;
}
}
+void BC_ListBox::set_scroll_stretch(int xv, int yv)
+{
+ if( xv >= 0 ) xscroll_orientation =
+ !xv ? SCROLL_HORIZ : SCROLL_HORIZ + SCROLL_STRETCH;
+ if( yv >= 0 ) yscroll_orientation =
+ !yv ? SCROLL_VERT : SCROLL_VERT + SCROLL_STRETCH;
+}
int BC_ListBox::get_yscroll_x()
{
{
if(!xscrollbar)
{
- destination->add_subwindow(xscrollbar =
- new BC_ListBoxXScroll(this,
- w_needed,
- view_w,
- xposition));
+ xscrollbar = new BC_ListBoxXScroll(this);
+ destination->add_subwindow(xscrollbar);
xscrollbar->show_window(0);
xscrollbar->bound_to = this;
}
{
if(!yscrollbar)
{
- destination->add_subwindow(yscrollbar =
- new BC_ListBoxYScroll(this,
- h_needed,
- view_h,
- yposition));
+ yscrollbar = new BC_ListBoxYScroll(this);
+ destination->add_subwindow(yscrollbar);
yscrollbar->show_window(0);
yscrollbar->bound_to = this;
}
void BC_ListBox::update_format(int display_format, int redraw)
{
this->display_format = display_format;
+ xposition = 0; yposition = 0;
if( redraw && gui ) draw_items(1, 1);
}