virtual const char *get_class() const { return "listitem"; }
protected:
- virtual void autosize_special(const Part &, Geometry &);
+ virtual void autosize_special(const Part &, Geometry &) const;
public:
void set_active(bool);
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;
+ bool dragging;
+ int drag_start_x;
+ int drag_start_y;
VSlider slider;
std::vector<Item *> items;
virtual const char *get_class() const { return "list"; }
private:
- virtual void autosize_special(const Part &, Geometry &);
+ virtual void autosize_special(const Part &, Geometry &) const;
public:
void set_data(ListData &);
void set_selected_index(int);
int get_selected_index() const { return sel_index; }
-
private:
+ void set_selected_item(Widget *);
+
+ virtual void rebuild_special(const Part &);
virtual void render_special(const Part &, GL::Renderer &) const;
public:
+ virtual bool key_press(unsigned, unsigned);
virtual void button_press(int, int, unsigned);
+ virtual void touch_press(int, int, unsigned);
+ virtual void touch_release(int, int, unsigned);
+ virtual void touch_motion(int, int, unsigned);
+ virtual void focus_in();
+ virtual bool navigate(Navigation);
private:
- virtual void on_geometry_change();
- virtual void on_style_change();
+ void move_focus(Navigation, bool);
+ 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