- if(main_panel->get_geometry().is_inside(x, y))
- {
- main_panel->button_release(x, y-main_panel->get_geometry().y, btn);
- return;
- }
- for(TrainPanelSeq::iterator i=train_panels.begin(); i!=train_panels.end(); ++i)
- if((*i)->get_geometry().is_inside(x, y))
- {
- (*i)->button_release(x, y, btn);
- return;
- }
- if(train_prop && train_prop->get_geometry().is_inside(x, y))
- {
- train_prop->button_release(x, y, btn);
- return;
- }
-}
-
-void Engineer::pointer_motion(int x, int y)
-{
- if(main_panel->get_geometry().is_inside(x, y))
- {
- main_panel->pointer_motion(x, y);
- return;
- }
- for(TrainPanelSeq::iterator i=train_panels.begin(); i!=train_panels.end(); ++i)
- if((*i)->get_geometry().is_inside(x, y))
- {
- (*i)->pointer_motion(x, y);
- return;
- }
- if(train_prop && train_prop->get_geometry().is_inside(x, y))
- {
- train_prop->pointer_motion(x, y);
- return;
- }
-
- Track3D *track=pick_track(x, y);
- if(track && placing_train)
- {
- Block *block=trfc_mgr->get_block_by_track(&track->get_track());
- if(block!=placing_block)
- {
- if(placing_block)
- set_block_color(*placing_block, Color(1, 1, 1));
- placing_block=block;
- placing_entry=0;
- set_block_color(*placing_block, Color(0.5, 1, 0.7));
- }
- }
- else if(track && track->get_track().get_turnout_id())
- {
- ostringstream ss;
- ss<<"Turnout "<<track->get_track().get_turnout_id();
- status_text=ss.str();
- }
- else if(!placing_train)
- status_text="";