/* * Called on a mouse left button double click */ void FOOTPRINT_EDIT_FRAME::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) { BOARD_ITEM* item = GetCurItem(); switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { item = ModeditLocateAndDisplay(); } if( ( item == NULL ) || ( item->GetFlags() != 0 ) ) break; // Item found SetCurItem( item ); OnEditItemRequest( DC, item ); break; // end case 0 case ID_PCB_ADD_LINE_BUTT: { if( item && item->IsNew() ) { End_Edge_Module( (EDGE_MODULE*) item ); SetCurItem( NULL ); m_canvas->Refresh(); } break; } default: break; } }
/* handle the double click on the mouse left button */ void PCB_EDIT_FRAME::OnLeftDClick( wxDC* aDC, const wxPoint& aPosition ) { BOARD_ITEM* DrawStruct = GetCurItem(); switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: if( (DrawStruct == NULL) || (DrawStruct->GetFlags() == 0) ) { DrawStruct = PcbGeneralLocateAndDisplay(); } if( (DrawStruct == NULL) || (DrawStruct->GetFlags() != 0) ) break; SendMessageToEESCHEMA( DrawStruct ); // An item is found SetCurItem( DrawStruct ); switch( DrawStruct->Type() ) { case PCB_TRACE_T: case PCB_VIA_T: if( DrawStruct->IsNew() ) { if( End_Route( (TRACK*) DrawStruct, aDC ) ) m_canvas->SetAutoPanRequest( false ); } else if( DrawStruct->GetFlags() == 0 ) { Edit_TrackSegm_Width( aDC, (TRACK*) DrawStruct ); } break; case PCB_TEXT_T: case PCB_PAD_T: case PCB_MODULE_T: case PCB_TARGET_T: case PCB_DIMENSION_T: case PCB_MODULE_TEXT_T: OnEditItemRequest( aDC, DrawStruct ); m_canvas->MoveCursorToCrossHair(); break; case PCB_LINE_T: OnEditItemRequest( aDC, DrawStruct ); break; case PCB_ZONE_AREA_T: if( DrawStruct->GetFlags() ) break; OnEditItemRequest( aDC, DrawStruct ); break; default: break; } break; // end case 0 case ID_TRACK_BUTT: if( DrawStruct && DrawStruct->IsNew() ) { if( End_Route( (TRACK*) DrawStruct, aDC ) ) m_canvas->SetAutoPanRequest( false ); } break; case ID_PCB_ZONES_BUTT: case ID_PCB_KEEPOUT_AREA_BUTT: if( End_Zone( aDC ) ) { m_canvas->SetAutoPanRequest( false ); SetCurItem( NULL ); } break; case ID_PCB_ADD_LINE_BUTT: case ID_PCB_ARC_BUTT: case ID_PCB_CIRCLE_BUTT: if( DrawStruct == NULL ) break; if( DrawStruct->Type() != PCB_LINE_T ) { DisplayError( this, wxT( "DrawStruct Type error" ) ); m_canvas->SetAutoPanRequest( false ); break; } if( DrawStruct->IsNew() ) { End_Edge( (DRAWSEGMENT*) DrawStruct, aDC ); m_canvas->SetAutoPanRequest( false ); SetCurItem( NULL ); } break; } }