Dropdown::Dropdown(const Resources &r):
Widget(r),
list(new List(res)),
+ dropped(false),
list_active(false)
{
list->signal_item_selected.connect(sigc::mem_fun(this, &Dropdown::list_item_selected));
list->button_press(x-lgeom.x, y-lgeom.y, btn);
list_active=true;
}
- else if(state==ACTIVE)
+ else if(dropped)
{
- state=HOVER;
+ dropped=false;
+ state&=~ACTIVE;
parent->ungrab_pointer(*this);
}
else if(btn==1)
{
- state=ACTIVE;
+ dropped=true;
+ state|=ACTIVE;
if(parent)
{
}
}
-void Dropdown::pointer_enter()
-{
- if(state==NORMAL)
- state=HOVER;
-}
-
-void Dropdown::pointer_leave()
-{
- if(state==HOVER)
- state=NORMAL;
-}
-
void Dropdown::render_special(const Part &part) const
{
if(part.get_name()=="text")
render_text(part, text);
- else if(part.get_name()=="list" && state==ACTIVE)
+ else if(part.get_name()=="list" && dropped)
list->render();
}
text=item;
list_active=false;
- state=NORMAL;
+ dropped=false;
+ state&=~ACTIVE;
if(parent)
parent->ungrab_pointer(*this);