Index: src/action.c =================================================================== --- src/action.c (revision 402) +++ src/action.c (revision 403) @@ -4937,7 +4937,7 @@ ptr3 = NULL; type = SearchScreen (x, y, CHANGESQUARE_TYPES, &ptr1, &ptr2, &ptr3); - /* TODO: ptr3 is NULL when a VIA is found */ + if (ptr3 != NULL) { int qstyle = GET_SQUARE ((PinTypePtr) ptr3); qstyle++; Index: src/change.c =================================================================== --- src/change.c (revision 402) +++ src/change.c (revision 403) @@ -101,6 +101,7 @@ static void *ChangeElementOctagon (ElementTypePtr); static void *SetElementOctagon (ElementTypePtr); static void *ClrElementOctagon (ElementTypePtr); +static void *ChangeViaSquare (PinTypePtr); static void *ChangePinSquare (ElementTypePtr, PinTypePtr); static void *SetPinSquare (ElementTypePtr, PinTypePtr); static void *ClrPinSquare (ElementTypePtr, PinTypePtr); @@ -206,7 +207,7 @@ NULL, NULL, NULL, - NULL, + ChangeViaSquare, ChangeElementSquare, NULL, ChangePinSquare, @@ -1461,6 +1462,29 @@ /* --------------------------------------------------------------------------- + * changes the square flag of a via + */ +static void * +ChangeViaSquare (PinTypePtr Via) +{ + if (TEST_FLAG (LOCKFLAG, Via)) + return (NULL); + EraseVia (Via); + AddObjectToClearPolyUndoList (VIA_TYPE, NULL, Via, Via, false); + RestoreToPolygon (PCB->Data, VIA_TYPE, NULL, Via); + AddObjectToFlagUndoList (VIA_TYPE, NULL, Via, Via); + ASSIGN_SQUARE(Absolute, Via); + if (Absolute == 0) + CLEAR_FLAG (SQUAREFLAG, Via); + else + SET_FLAG (SQUAREFLAG, Via); + SetPinBoundingBox (Via); + AddObjectToClearPolyUndoList (VIA_TYPE, NULL, Via, Via, true); + ClearFromPolygon (PCB->Data, VIA_TYPE, NULL, Via); + DrawVia (Via); + return (Via); +} +/* --------------------------------------------------------------------------- * changes the square flag of a pin */ static void * Index: src/change.h =================================================================== --- src/change.h (revision 402) +++ src/change.h (revision 403) @@ -54,7 +54,7 @@ (ELEMENT_TYPE) #define CHANGESQUARE_TYPES \ - (ELEMENT_TYPE | PIN_TYPE | PAD_TYPE) + (ELEMENT_TYPE | PIN_TYPE | PAD_TYPE | VIA_TYPE) #define CHANGEOCTAGON_TYPES \ (ELEMENT_TYPE | PIN_TYPE | VIA_TYPE)