예제 #1
0
        // マウスボタン離した時
        private void MainWindow_MouseUp(object sender, MouseButtonEventArgs e)
        {
            // メニューが開いているなら無効
            if (MainWindow.Current.IsAnyToolbarMenuOpened)
            {
                return;
            }

            // マウスジェスチャ入力中
            if (mouseGesture != null && mouseGesture.IsActive)
            {
                return;
            }

            Debug.WriteLine("mouse up : " + e.ChangedButton.ToString());

            // 長押しクリック判定解除
            StopLongClick();

            // マウスクリックの状態取得
            MouseButtonState mouseButtonState = mouseButtonStateSet.GetState(e.ChangedButton);

            // マウスインプット生成
            MouseInputButton mouseInputButton = MouseInput.MouseButtonToMouseInputButton(e.ChangedButton);

            // 取得失敗
            if (mouseButtonState == null)
            {
                return;
            }
            if (mouseInputButton == MouseInputButton.None)
            {
                return;
            }

            // 既に他の入力でコマンド実行済み
            if (mouseButtonState.CommandExecuted)
            {
                //e.Handled = true;
            }

            // マウスクリックコマンド実行
            else if (mouseButtonState.IsPressed)
            {
                MouseInput mouseInput = new MouseInput(mouseInputButton, Keyboard.Modifiers);
                if (DispatchMouseInput(mouseInput))
                {
                    e.Handled = true;
                }
            }

            // 押下状態更新
            mouseButtonState.IsPressed = false;
        }
예제 #2
0
        // 長押しクリックの判定開始
        private void StartLongClick(MouseButton mouseButton)
        {
            if (this.longClickTimer == null)
            {
                longClickTimer       = new DispatcherTimer();
                longClickTimer.Tick += (s, e) =>
                {
                    StopLongClick();
                    DispatchMouseInput(new MouseInput(longClickButton, Keyboard.Modifiers));
                };
            }

            StopLongClick();
            longClickButton         = MouseInput.MouseButtonToMouseInputLongClickButton(mouseButton);
            longClickStartPos       = Win32.GetCursorPos();
            longClickTimer.Interval = TimeSpan.FromMilliseconds(MainWindow.Current.Setting.LongClickDecisionTime);
            longClickTimer.Start();
        }
예제 #3
0
 public MouseInput(MouseInputButton btn, ModifierKeys modifierKeys)
 {
     MouseInputButton = btn;
     ModifierKeys     = modifierKeys;
 }
예제 #4
0
 public MouseInput()
 {
     MouseInputButton = MouseInputButton.None;
     ModifierKeys     = ModifierKeys.None;
 }
예제 #5
0
        // ダブルクリック
        private void MainWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            Debug.WriteLine("------------------------------------------------------------------");
            Debug.WriteLine("MainWindow_MouseDoubleClick   original source:" + e.OriginalSource.ToString());
            //Debug.WriteLine("Keybord focus:" + Keyboard.FocusedElement.ToString() );
            Debug.WriteLine("------------------------------------------------------------------");

            // Menu上、Slider上、Button上では無効
            DependencyObject source = e.OriginalSource as DependencyObject;

            if (source == null)
            {
                return;
            }
            Menu menu = source.FindAncestor <Menu>();

            if (menu != null)
            {
                return;
            }
            Slider slider = source.FindAncestor <Slider>();

            if (slider != null)
            {
                return;
            }
            Button button = source.FindAncestor <Button>();

            if (button != null)
            {
                return;
            }

            // メニューが開いているなら無効
            if (MainWindow.Current.IsAnyToolbarMenuOpened)
            {
                return;
            }

            // マウスジェスチャ入力中
            if (mouseGesture != null && mouseGesture.IsActive)
            {
                return;
            }

            //
            MouseInputButton mouseInputButton = MouseInputButton.None;

            if (e.ChangedButton == MouseButton.Left)
            {
                mouseInputButton = MouseInputButton.L_DoubleClick;
            }
            else if (e.ChangedButton == MouseButton.Right)
            {
                mouseInputButton = MouseInputButton.R_DoubleClick;
            }

            MouseInput mouseInput = new MouseInput(mouseInputButton, Keyboard.Modifiers);

            if (DispatchMouseInput(mouseInput))
            {
                e.Handled = true;
            }
        }