X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdropdown.cpp;h=7dc0d3550bcaf7d8953ec2a8b5d1013355ad69fd;hb=1d6cebd9f1795a22d6be47a7a049496b89de46f7;hp=013e1d9168721d794bcd4069f7d596fe2fb7ee36;hpb=707b59d45ae50b69c94918f8f74313283b304597;p=libs%2Fgltk.git diff --git a/source/dropdown.cpp b/source/dropdown.cpp index 013e1d9..7dc0d35 100644 --- a/source/dropdown.cpp +++ b/source/dropdown.cpp @@ -97,6 +97,7 @@ void Dropdown::button_press(int x, int y, unsigned btn) else if(btn==1) { dropped = true; + resize_list(); set_state(ACTIVE); signal_grab_pointer.emit(); } @@ -121,8 +122,8 @@ void Dropdown::list_autosize_changed() void Dropdown::resize_list() { - list.autosize(); - Geometry lgeom = list.get_geometry(); + Geometry lgeom; + list.autosize(lgeom); lgeom.x = 0; lgeom.y = -lgeom.h; lgeom.w = max(geom.w, lgeom.w); @@ -136,7 +137,10 @@ void Dropdown::resize_list() { const Geometry &rgeom = root->get_geometry(); if(lgeom.h*2>rgeom.h) + { lgeom.h = rgeom.h/2; + lgeom.y = -lgeom.h; + } if(root_y+lgeom.y<0) lgeom.y = -root_y; if(root_y+lgeom.y+lgeom.h>rgeom.h)