#include <msp/core/maputils.h>
#include <msp/core/raii.h>
+#include <msp/gltk/part.h>
+#include <msp/gltk/root.h>
#include <msp/gltk/stack.h>
#include <msp/strings/format.h>
#include "libr2c2/aicontrol.h"
train.signal_ai_event.connect(sigc::mem_fun(this, &TrainDialog::ai_event));
}
+void TrainDialog::autosize_special(const GLtk::Part &part, GLtk::Geometry &ageom) const
+{
+ GLtk::Dialog::autosize_special(part, ageom);
+
+ if(part.get_name()=="children")
+ {
+ GLtk::Geometry egeom;
+ pnl_expander->autosize(egeom);
+ const GLtk::Sides &margin = layout->get_margin();
+ ageom.w = max(ageom.w, margin.left+margin.right+egeom.w);
+ }
+}
+
void TrainDialog::ai_event(TrainAI &, const TrainAI::Message &msg)
{
if(msg.type=="status-changed")
{
pnl_expander->set_visible(!pnl_expander->is_visible());
btn_expand->set_style(pnl_expander->is_visible() ? "arrow_up" : "arrow_down");
- GLtk::Geometry ageom = geom;
- ageom.h = 0;
- layout->autosize(ageom);
- ageom.y = geom.y+geom.h-ageom.h;
- set_geometry(ageom);
+ signal_autosize_changed.emit();
+ find_ancestor<GLtk::Root>()->get_layout()->update();
}
void TrainDialog::toggle_panel(bool show, GLtk::Panel *panel)