3 This file is part of libmspgltk
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
18 Dropdown::Dropdown(const Resources &r):
23 list->signal_item_selected.connect(sigc::mem_fun(this, &Dropdown::list_item_selected));
33 void Dropdown::append(const string &item)
38 void Dropdown::button_press(int x, int y, unsigned btn)
40 if(list->get_geometry().is_inside(x, y))
42 const Geometry &lgeom=list->get_geometry();
43 list->button_press(x-lgeom.x, y-lgeom.y, btn);
46 else if(state==ACTIVE)
49 parent->ungrab_pointer(*this);
58 parent->grab_pointer(*this);
63 void Dropdown::button_release(int x, int y, unsigned btn)
67 const Geometry &lgeom=list->get_geometry();
68 list->button_release(x-lgeom.x, y-lgeom.y, btn);
73 void Dropdown::pointer_motion(int x, int y)
77 const Geometry &lgeom=list->get_geometry();
78 list->pointer_motion(x-lgeom.x, y-lgeom.y);
82 void Dropdown::pointer_enter()
88 void Dropdown::pointer_leave()
94 void Dropdown::render_special(const Part &part) const
96 if(part.get_name()=="text")
97 render_text(part, text);
98 else if(part.get_name()=="list" && state==ACTIVE)
102 void Dropdown::on_geometry_change()
104 list->set_geometry(Geometry(0, -100, geom.w, 100));
107 void Dropdown::list_item_selected(unsigned index, const std::string &item)
114 parent->ungrab_pointer(*this);
116 signal_item_selected.emit(index, item);