-----------------------------------------------------------------
| 249 | |
| 250 | //----------------------------------------------------------------- |
| 251 | void vtkCompassWidget::EndSelectAction(vtkAbstractWidget* widget) |
| 252 | { |
| 253 | vtkCompassWidget* self = reinterpret_cast<vtkCompassWidget*>(widget); |
| 254 | vtkCompassRepresentation* representation = |
| 255 | vtkCompassRepresentation::SafeDownCast(self->WidgetRep); |
| 256 | |
| 257 | // stop the timer |
| 258 | if (self->TimerId >= 0) |
| 259 | { |
| 260 | self->Interactor->DestroyTimer(self->TimerId); |
| 261 | self->TimerId = -1; |
| 262 | } |
| 263 | |
| 264 | switch (self->WidgetState) |
| 265 | { |
| 266 | case vtkCompassWidget::TiltAdjusting: |
| 267 | case vtkCompassWidget::TiltTimerAdjustingDown: |
| 268 | case vtkCompassWidget::TiltTimerAdjustingUp: |
| 269 | representation->EndTilt(); |
| 270 | break; |
| 271 | case vtkCompassWidget::DistanceAdjusting: |
| 272 | case vtkCompassWidget::DistanceTimerAdjustingIn: |
| 273 | case vtkCompassWidget::DistanceTimerAdjustingOut: |
| 274 | representation->EndDistance(); |
| 275 | break; |
| 276 | case vtkCompassWidget::Adjusting: |
| 277 | break; |
| 278 | default: |
| 279 | return; |
| 280 | } |
| 281 | |
| 282 | int interactionState = self->WidgetRep->ComputeInteractionState( |
| 283 | self->Interactor->GetEventPosition()[0], self->Interactor->GetEventPosition()[1]); |
| 284 | |
| 285 | if (interactionState == vtkCompassRepresentation::Outside) |
| 286 | { |
| 287 | self->WidgetRep->Highlight(0); |
| 288 | self->WidgetState = vtkCompassWidget::Start; |
| 289 | } |
| 290 | else |
| 291 | { |
| 292 | self->WidgetState = vtkCompassWidget::Highlighting; |
| 293 | } |
| 294 | |
| 295 | // the state returns to unselected |
| 296 | self->ReleaseFocus(); |
| 297 | |
| 298 | // complete interaction |
| 299 | self->EventCallbackCommand->SetAbortFlag(1); |
| 300 | self->EndInteraction(); |
| 301 | |
| 302 | self->InvokeEvent(vtkCommand::WidgetValueChangedEvent, nullptr); |
| 303 | self->InvokeEvent(vtkCommand::EndInteractionEvent, nullptr); |
| 304 | |
| 305 | self->Render(); |
| 306 | } |
| 307 | |
| 308 | void vtkCompassWidget::TimerAction(vtkAbstractWidget* widget) |
nothing calls this directly
no test coverage detected