/// <summary>
        /// Called when the user clicks on the screen
        /// </summary>
        /// <param name="sender">Sening object</param>
        /// <param name="e">Event arguments</param>
        private void OnMouseClickOnScreen(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            var formLocation = new System.Drawing.Point((int)screenResolution.ConvertXDpi(e.Location.X), (int)screenResolution.ConvertYDpi(e.Location.Y));

            // Only interessting for Touch Friendly)
            if (PinStyle != PinStyle.TouchFriendly && PinStyle != PinStyle.AlwaysOff && PinStyle != PinStyle.Manual)
            {
                return;
            }

            // if the screen is not hidden, than everything is ok
            if (Hidden || IsAnimating)
            {
                return;
            }

            // Check if the user clicks outside the current window
            bool mustHide = !(new Rectangle((int)Left, (int)Top, (int)Width, (int)Height).Contains(formLocation));

            if (!mustHide)
            {
                return;
            }

            // Check if the user pressed the magic key
            Storyboard sliding;

            latencyTimer.Stop();
            if (IsMagicKeyPressed && PinStyle == PinStyle.AlwaysOn)
            {
                return;
            }

            // Stop the current animation and hide the window
            if ((sliding = slideIn) != null)
            {
                sliding.Stop();
            }

            BeginAnimation(slideOut);
        }
        private void PostionLeft()
        {
            Screen activeScreen  = ActiveScreen;
            Screen taskBarScreen = Screen.FromHandle(TaskBar.GetHandle());;
            Size   taskBarSize   = TaskBar.GetTaskBarSize();

            var left   = activeScreen.Bounds.Left;
            var top    = activeScreen.Bounds.Top;
            var height = activeScreen.Bounds.Height;

            var taskbarHeight = (activeScreen.DeviceEquals(taskBarScreen) ? taskBarSize.Height : 0);
            var taskbarWidth  = (activeScreen.DeviceEquals(taskBarScreen) ? taskBarSize.Width : 0);

            switch (TaskBar.GetTaskBarEdge())
            {
            case TaskBar.TaskBarEdge.Left:
                form.Left   = screenResolution.ConvertXDpi(left + taskbarWidth);
                form.Top    = screenResolution.ConvertYDpi(top);
                form.Height = screenResolution.ConvertYDpi(height);
                break;

            case TaskBar.TaskBarEdge.Top:
                form.Left   = screenResolution.ConvertXDpi(left);
                form.Top    = screenResolution.ConvertYDpi(top + taskbarHeight);
                form.Height = screenResolution.ConvertYDpi(height - taskbarHeight);
                break;

            case TaskBar.TaskBarEdge.Right:
                form.Left   = screenResolution.ConvertXDpi(left);
                form.Top    = screenResolution.ConvertYDpi(top);
                form.Height = screenResolution.ConvertYDpi(height);
                break;

            case TaskBar.TaskBarEdge.Bottom:
                form.Left   = screenResolution.ConvertXDpi(left);
                form.Top    = screenResolution.ConvertYDpi(top);
                form.Height = screenResolution.ConvertYDpi(height - taskbarHeight);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }