private void MotionNotify(object o, MotionNotifyEventArgs args) { int X, Y; Gdk.ModifierType state; // Ensure PlotSurface has keyboard focus DrawingArea da = (DrawingArea)o; if (!da.HasFocus) { da.GrabFocus(); } args.Event.Window.GetPointer(out X, out Y, out state); Modifier keys = MouseInput(state); DoMouseMove(X, Y, keys); // Update coordinates Tooltip if active. TODO: Fix DateTime properly! bool DateTimeToolTip_ = false; if (coordsActive_) { Point p = new Point(X, Y); if (this.PlotAreaBoundingBoxCache.Contains(p)) { if (this.PhysicalXAxis1Cache == null) { return; } if (this.PhysicalYAxis1Cache == null) { return; } double px = this.PhysicalXAxis1Cache.PhysicalToWorld(p, true); double py = this.PhysicalYAxis1Cache.PhysicalToWorld(p, true); string s = ""; if (!DateTimeToolTip_) { s = "(" + px.ToString("g4") + "," + py.ToString("g4") + ")"; } else { DateTime dateTime = new DateTime((long)px); s = dateTime.ToShortDateString() + " " + dateTime.ToLongTimeString() + Environment.NewLine + py.ToString("f4"); } this.Canvas.TooltipText = s; } else { this.Canvas.TooltipText = ""; } } }
// // Group together here all the enabled event handlers for Gtk // private void EnterNotify(object o, EventArgs args) { DrawingArea da = (DrawingArea)o; if (!da.HasFocus) { da.GrabFocus(); } DoMouseEnter(args); }
void PlotWidget_MotionNotifyEvent(object o, MotionNotifyEventArgs args) { int X, Y; Gdk.ModifierType state; // Ensure PlotSurface has keyboard focus DrawingArea da = (DrawingArea)o; if (!da.HasFocus) { da.GrabFocus(); } args.Event.Window.GetPointer(out X, out Y, out state); Modifier keys = MouseInput(state); this.InteractivePlotSurface2D.DoMouseMove(X, Y, keys); }
// Grab the focus when the window is clicked void OnButton(object sender, ButtonPressEventArgs args) { darea.GrabFocus(); }
private void DrawingArea_ButtonPressEvent(object o, ButtonPressEventArgs args) { DrawingArea.GrabFocus(); }
protected override void OnMouseDown(DrawingArea canvas, ButtonPressEventArgs args, Cairo.PointD point) { ctrlKey = (args.Event.State & ModifierType.ControlMask) != 0; //Store the mouse position. Point pt = point.ToGdkPoint(); // Grab focus so we can get keystrokes canvas.GrabFocus(); if (selection != null) { selection.Dispose(); } selection = PintaCore.Workspace.ActiveDocument.Selection.Clone(); // A right click allows you to move the text around if (args.Event.Button == 3) { //The user is dragging text with the right mouse button held down, so track the mouse as it moves. tracking = true; //Remember the position of the mouse before the text is dragged. startMouseXY = point; startClickPoint = clickPoint; //Change the cursor to indicate that the text is being dragged. SetCursor(cursor_hand); return; } // The user clicked the left mouse button if (args.Event.Button == 1) { // If the user is [editing or holding down Ctrl] and clicked //within the text, move the cursor to the click location if ((is_editing || ctrlKey) && CurrentTextBounds.ContainsCorrect(pt)) { StartEditing(); //Change the position of the cursor to where the mouse clicked. TextPosition p = CurrentTextLayout.PointToTextPosition(pt); CurrentTextEngine.SetCursorPosition(p, true); //Redraw the text with the new cursor position. RedrawText(true, true); return; } // We're already editing and the user clicked outside the text, // commit the user's work, and start a new edit switch (CurrentTextEngine.State) { // We were editing, save and stop case TextMode.Uncommitted: StopEditing(true); break; // We were editing, but nothing had been // keyed. Stop editing. case TextMode.Unchanged: StopEditing(false); break; } if (ctrlKey) { //Go through every UserLayer. foreach (UserLayer ul in PintaCore.Workspace.ActiveDocument.UserLayers) { //Check each UserLayer's editable text boundaries to see if they contain the mouse position. if (ul.textBounds.ContainsCorrect(pt)) { //The mouse clicked on editable text. //Change the current UserLayer to the Layer that contains the text that was clicked on. PintaCore.Workspace.ActiveDocument.SetCurrentUserLayer(ul); //The user is editing text now. is_editing = true; //Set the cursor in the editable text where the mouse was clicked. TextPosition p = CurrentTextLayout.PointToTextPosition(pt); CurrentTextEngine.SetCursorPosition(p, true); //Redraw the editable text with the cursor. RedrawText(true, true); //Don't check any more UserLayers - stop at the first UserLayer that has editable text containing the mouse position. return; } } } else { if (CurrentTextEngine.State == TextMode.NotFinalized) { //The user is making a new text and the old text hasn't been finalized yet. FinalizeText(); } if (!is_editing) { // Start editing at the cursor location clickPoint = pt; CurrentTextEngine.Clear(); clickPoint.Offset(0, -CurrentTextLayout.FontHeight / 2); CurrentTextEngine.Origin = clickPoint; StartEditing(); RedrawText(true, true); } } } }
private void HandleButtonPressEvent(object o, Gtk.ButtonPressEventArgs args) { Canvas.GrabFocus(); Sheet.Controller.HandleEvent(args.Event); }