Skip to content

Crash when you use mouse & keyboard arrow keys together. #92

@CorrieMeyer

Description

@CorrieMeyer

I found a bug you use your mouse and keyboard up/down/left/right arrow keys together.

To Reproduce:

  1. Start Sample application on Windows.
  2. Maximize Main Window.
  3. Drop a Button on Design Service in Center of Screen.
  4. Move to Center of button with mouse pointer.
  5. Press primary mouse button to start moving/dragging button.
  6. While still holding primary mouse button move left or right with your mouse so that the button moves to a new location (do not release primary mouse button).
  7. Then Either Press and hold Left, Right, Up or Down Arrow key on Keyboard, while still holding the primary mouse button down
  8. Depress/Release primary mouse button.
  9. App Crashes. See below stack trace.

StackTrace:

`PlacementOperation is committed.
at ICSharpCode.WpfDesign.PlacementOperation.Abort()
at ICSharpCode.WpfDesign.Designer.Services.MoveLogic.Cancel()
at ICSharpCode.WpfDesign.Designer.Services.DragMoveMouseGesture.OnStopped()
at ICSharpCode.WpfDesign.Designer.Services.MouseGestureBase.Stop()
at ICSharpCode.WpfDesign.Designer.Services.MouseGestureBase.OnLostMouseCapture(Object sender, MouseEventArgs e)
at System.Windows.Input.MouseEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.MouseDevice.ChangeMouseCapture(IInputElement mouseCapture, IMouseInputProvider providerCapture, CaptureMode captureMode, Int32 timestamp)
at System.Windows.Input.MouseDevice.PreNotifyInput(Object sender, NotifyInputEventArgs e)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

[ICSharpCode.WpfDesign.PlacementOperation+PlacementOperationException] - PlacementOperation is committed.
`

I have also done my own fix: here: CorrieMeyer@469f6a3

Not sure if it is the correct way, but if your happy with it I will do a pull request for the fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions