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 = CanvasPolicyA.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); } } } }
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 = CanvasPolicyA.GetHandCursor(); if (cursor != null) { canvas.Cursor = cursor; } } }