virtual void render_special(const Part &, GL::Renderer &) const;
};
+ class MultiColumnItem: public Item
+ {
+ protected:
+ virtual void check_widths(std::vector<unsigned> &) const;
+ virtual void set_widths(const std::vector<unsigned> &);
+
+ private:
+ virtual void on_style_change();
+ };
+
private:
class BasicItem: public Item
{
public:
sigc::signal<void, unsigned> signal_item_selected;
+ sigc::signal<void> signal_selection_cleared;
private:
ListData *data;
DataObserver *observer;
ItemFactory *item_factory;
int sel_index;
+ int focus_index;
unsigned first;
unsigned max_scroll;
unsigned view_size;
+ bool ignore_slider_change;
VSlider slider;
std::vector<Item *> items;
int get_selected_index() const { return sel_index; }
private:
+ virtual void rebuild_special(const Part &);
virtual void render_special(const Part &, GL::Renderer &) const;
public:
virtual void button_press(int, int, unsigned);
+ virtual void focus_in();
+ virtual bool navigate(Navigation);
private:
- virtual void on_geometry_change();
- virtual void on_style_change();
+ void set_focus_index(int);
- void reposition_slider();
void item_autosize_changed(Item *);
- void reposition_items();
+ unsigned last_to_first(unsigned) const;
void check_view_range();
+ void scroll_to_focus();
void slider_value_changed(double);
+ static void adjust_index(int &, int, int);
};
} // namespace GLtk