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;
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 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 set_focus_index(int);
- void reposition_slider();
- void item_autosize_changed();
- void reposition_items();
+ void item_autosize_changed(Item *);
+ 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