Example #1
0
        /* ----------------------------------------------------------------- */
        ///
        /// MouseMoveHandler
        ///
        /// <summary>
        /// マウス押下中は手のひらツールとして機能する.
        /// それ以外の場合は,URL に重なった時にツールチップを表示する.
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        private static void MouseMoveHandler(object sender, MouseEventArgs e)
        {
            var canvas = sender as Canvas;

            if (canvas == null)
            {
                return;
            }

            if (is_mouse_down_ && e.Button == MouseButtons.Left)
            {
                var control = (ScrollableControl)canvas.Parent;
                var current = canvas.PointToScreen(e.Location);
                int x       = current.X - origin_.X;
                int y       = current.Y - origin_.Y;
                control.AutoScrollPosition = new Point(-x, -y);
                var cursor = CanvasPolicy.GetHandCursor();
                if (cursor != null)
                {
                    canvas.Cursor = cursor;
                }
            }
            else
            {
                var engine = canvas.Tag as CanvasEngine;
                if (engine == null)
                {
                    return;
                }
                var core = engine.Core;
                if (core == null)
                {
                    return;
                }

                lock (core) {
                    var pos    = new Point((int)(e.Location.X * 72.0 / core.RenderDPI), (int)(e.Location.Y * 72.0 / core.RenderDPI));
                    var result = engine.GetURL(pos);
                    if (result != null)
                    {
                        if (canvas.Cursor == Cursors.Default)
                        {
                            canvas.Cursor = Cursors.Hand;
                            tooltip_.Show(result, canvas, 3000);
                        }
                    }
                    else
                    {
                        canvas.Cursor = Cursors.Default;
                        tooltip_.Hide(canvas);
                    }
                }
            }
        }
Example #2
0
        /* ----------------------------------------------------------------- */
        /// MouseClickHandler
        /* ----------------------------------------------------------------- */
        private static void MouseClickHandler(object sender, MouseEventArgs e)
        {
            var canvas = sender as Canvas;

            if (canvas == null)
            {
                return;
            }

            if (canvas.Cursor == Cursors.Hand)
            {
                var engine = canvas.Tag as CanvasEngine;
                if (engine == null)
                {
                    return;
                }
                var core = engine.Core;
                if (core == null)
                {
                    return;
                }

                lock (core)
                {
                    var pos  = new Point((int)(e.Location.X * 72.0 / core.RenderDPI), (int)(e.Location.Y * 72.0 / core.RenderDPI));
                    var addr = engine.GetURL(pos);
                    if (addr != null)
                    {
                        System.Diagnostics.Process.Start(addr);
                    }
                }
                canvas.Cursor = Cursors.Default;
            }
            else
            {
                var cursor = CanvasPolicy.GetHandCursor();
                if (cursor != null)
                {
                    canvas.Cursor = cursor;
                }
            }
        }