Cut the dragging if event fires during button press.

Prevent unwanted clicks after dialog with the normal use, but not
ideal for the drag use.
This commit is contained in:
Ali El Gariani 2007-03-31 20:15:58 +00:00
parent cc60bce9c9
commit d9b2c4cb44

View File

@ -922,15 +922,17 @@ void mouse_handler::mouse_press(const SDL_MouseButtonEvent& event, const bool br
if(is_left_click(event) && event.state == SDL_RELEASED) { if(is_left_click(event) && event.state == SDL_RELEASED) {
minimap_scrolling_ = false; minimap_scrolling_ = false;
dragging_ = false; dragging_ = false;
if (dragging_started_) { if (dragging_started_ && !browse && !commands_disabled) {
left_click(event, browse); left_click(event, browse);
} }
} else if(is_middle_click(event) && event.state == SDL_RELEASED) { } else if(is_middle_click(event) && event.state == SDL_RELEASED) {
minimap_scrolling_ = false; minimap_scrolling_ = false;
} else if(is_left_click(event) && event.state == SDL_PRESSED) { } else if(is_left_click(event) && event.state == SDL_PRESSED) {
dragging_ = true; if (!browse && !commands_disabled) {
drag_from_x_ = event.x; dragging_ = true;
drag_from_y_ = event.y; drag_from_x_ = event.x;
drag_from_y_ = event.y;
}
left_click(event, browse); left_click(event, browse);
} else if(is_right_click(event) && event.state == SDL_PRESSED) { } else if(is_right_click(event) && event.state == SDL_PRESSED) {
// FIXME: when it's not our turn, movement gets highlighted // FIXME: when it's not our turn, movement gets highlighted
@ -1094,7 +1096,10 @@ void mouse_handler::left_click(const SDL_MouseButtonEvent& event, const bool bro
} }
} }
} }
game_events::pump(); if (game_events::pump()) {
dragging_ = false;
update_cursor_ = true;
}
return; return;
} }
} }
@ -1157,7 +1162,10 @@ void mouse_handler::left_click(const SDL_MouseButtonEvent& event, const bool bro
paths::route route = get_route(it, go_to, current_team()); paths::route route = get_route(it, go_to, current_team());
gui_->set_route(&route); gui_->set_route(&route);
} }
game_events::fire("select",hex); if (game_events::fire("select",hex)) {
dragging_ = false;
update_cursor_ = true;
}
} }
} }
} }
@ -1454,7 +1462,10 @@ inline void mouse_handler::select_unit(const unit_map::const_iterator &it,
SDL_GetMouseState(&mousex, &mousey); SDL_GetMouseState(&mousex, &mousey);
mouse_motion(mousex, mousey, true); mouse_motion(mousex, mousey, true);
show_attack_options(it); show_attack_options(it);
game_events::fire("select",selected_hex_); if (game_events::fire("select",selected_hex_)) {
dragging_ = false;
update_cursor_ = true;
}
} }
} }