diff -r adfdc2f70548 -r 628c0b383d2f mw-mapselector.cc --- a/mw-mapselector.cc Tue Nov 29 19:31:58 2005 +0000 +++ b/mw-mapselector.cc Wed Nov 30 13:24:23 2005 +0000 @@ -1,10 +1,19 @@ #include "map_win.h" -MapWin::MapSelector::MapSelector(std::vector ml, int identifier, bool edge):id(identifier),itisedge(edge),default_state(true),set_new_map(false) +MapWin::MapSelector::MapSelector(std::vector ml, std::string act, int identifier, bool edge):id(identifier),itisedge(edge),set_new_map(false) { update_list(ml); - cbt.set_active(0); + if(act=="") + { + cbt.set_active(0); + default_state=true; + } + else + { + cbt.set_active_text((Glib::ustring)act); + default_state=false; + } //binding signal to the actual entry cbt.signal_changed().connect @@ -55,6 +64,7 @@ void MapWin::MapSelector::update_list( std::vector< std::string > ml ) { + int prev_act=cbt.get_active_row_number(); cbt.clear(); std::vector< std::string >::iterator emsi=ml.begin(); for(;emsi!=ml.end();emsi++) @@ -62,6 +72,10 @@ cbt.append_text(*emsi); } cbt.prepend_text("Default values"); + if(prev_act!=-1) + { + cbt.set_active(prev_act); + } } void MapWin::MapSelector::comboChanged() @@ -77,7 +91,6 @@ } else if((!default_state)&&(cbt.get_active_row_number()==0)) { - signal_cbt.emit(""); reset(); } } @@ -85,6 +98,7 @@ void MapWin::MapSelector::reset() { default_state=true; + cbt.set_active(0); signal_cbt.emit("");