- y = window.get_height()-y-1;
- mod = Input::mod_from_sys(mod);
-
- Point ground = map_pointer_to_ground(x, y);
-
- if(mode==CATALOGUE)
- {
- if(btn==1)
- {
- Track3D *ctrack = pick_track(x, y);
- if(ctrack)
- {
- Track *track = new Track(*layout, ctrack->get_track().get_type());
- track->set_position(ground);
-
- selection.clear();
- selection.add_track(track);
-
- mode = SELECT;
- }
- }
- else
- mode = SELECT;
- }
- else if(mode==SELECT)
- {
- if(btn==1)
- {
- Track3D *track = pick_track(x, y);
- if(track)
- {
- if(!(mod&Input::MOD_SHIFT))
- selection.clear();
- selection.toggle_track(&track->get_track());
- }
- }
- }
- else if(mode==MEASURE)
- measure.button_press(x, y, ground.x, ground.y, btn);
+ T *tool = new T(*this, keyboard, mouse, selection.get_objects());
+ use_tool(tool);
+ return tool;