protected internal bool GetEventObject() { try { if (((Element)_element).IsDisposed) { return(false); } // native event object _eventobj = window.@event; if (_eventobj != null && _eventobj.srcElement != null) { // check suppressed events EventType type = (EventType)Enum.Parse(typeof(EventType), _eventobj.type, true); if (_element.HtmlEditor.EventManager.GetEnabled(type)) { //System.Diagnostics.Debug.WriteLine(_eventobj.type, _element.TagName); return(true); } } } catch (Exception ex) { Debug.WriteLine(ex.Message, "GetEvent::Exception"); } return(false); }
private void HandlePostEvents(int dispId, Interop.IHTMLEventObj e) { // For spellchecker and other late bound event sinks htmlEditor.InvokePostEditorEvent(new PostEditorEventArgs(e)); if (e.srcElement != null) { if (dispId == DispId.KEYDOWN || dispId == DispId.MOUSEUP) { // We check the current scope only if the caret is visible for the user if (dispId == DispId.KEYDOWN) { //Application.DoEvents(); IElement currentElement = this.htmlEditor.Window.GetElementFromCaret() as IElement; if (currentElement != null) { this.htmlEditor.InvokeHtmlElementChanged(currentElement.GetBaseElement(), HtmlElementChangedType.Key); } else { this.htmlEditor.InvokeHtmlElementChanged(htmlEditor.GetBodyElement().GetBaseElement(), HtmlElementChangedType.Key); } } // if a mouse click was handled the event source has the element if (dispId == DispId.MOUSEUP) { this.htmlEditor.InvokeHtmlElementChanged(e.srcElement, HtmlElementChangedType.Mouse); } } } }
//void Interop.IHTMLElementEvents.Invoke(int dispid, ref Guid g, int lcid, int dwFlags, ref Interop.DISPPARAMS pdp, object pvarRes, ref Interop.EXCEPINFO pei, out int nArgError) void Interop.IHTMLGenericEvents.Invoke(int dispid, ref Guid g, int lcid, int dwFlags, Interop.DISPPARAMS pdp, object[] pvarRes, Interop.EXCEPINFO pei, int[] nArgError) { nArgError = new int[] { Interop.S_FALSE }; if (!EventsEnabled) { return; } if (_element == null) { return; } _eventobj = this.GetEventObject(); //System.Diagnostics.Debug.WriteLine(_eventobj.type, _eventobj.srcElement.GetTagName()); if (_eventobj == null) { return; } if (_eventobj.srcElement != null) { // refire on document level to support global events in NetRix main if (docEvents.Contains(_eventobj.type)) { Interop.IHTMLDocument4 doc4 = (Interop.IHTMLDocument4)_element.GetDocument(); Interop.IHTMLEventObj newObj = doc4.createEventObject(_eventobj); doc4.fireEvent(String.Concat("on", _eventobj.type), newObj); } } _editor.SetMousePointer(false); if (ElementEvent != null) { ElementEvent(this, _eventobj); } # region Event Type Switch Block
int Interop.IHTMLEditDesigner.PostHandleEvent(int dispId, Interop.IHTMLEventObj eventObj) { if (PostHandleEvent != null) { PostHandleEvent(htmlEditor, eventObj); } return(Interop.S_FALSE); }
int Interop.IHTMLEditDesigner.PostHandleEvent(int dispId, Interop.IHTMLEventObj eventObj) { if (PostHandleEvent != null) { PostHandleEvent(htmlEditor, eventObj); //if (eventObj.cancelBubble) return Interop.S_OK; } return(Interop.S_FALSE); }
void Invoke() { //nArgError = new int[] { Interop.S_FALSE }; _eventobj = this.GetEventObject(); if (_eventobj != null && _eventobj.srcElement != null) { System.Diagnostics.Debug.WriteLineIf(_eventobj.srcElement != null, _eventobj.type, _eventobj.srcElement.GetTagName()); _eventobj.cancelBubble = true; } }
private void SetKey(Interop.IHTMLEventObj e, bool pressed) { key = MapKeyLayout(e); if (key != Keys.ShiftKey && key != Keys.ControlKey) { key |= e.ctrlKey ? Keys.Control : Keys.None; // key |= e.shiftKey ? Keys.Shift : Keys.None; // key |= e.altKey ? Keys.Alt : Keys.None; // } }
private static Interop.IHTMLElement GetElement(Interop.IHTMLEventObj e, IHtmlEditor htmlEditor) { if (htmlEditor.GetCurrentScopeElement() == null) { return(e.srcElement); } else { return(htmlEditor.GetCurrentScopeElement().GetBaseElement()); } }
/// <summary> /// Internally used ctor. /// </summary> /// <param name="e"></param> /// <param name="sourceElement"></param> public DocumentEventArgs(Interop.IHTMLEventObj e, IElement sourceElement) { //System.Diagnostics.Debug.Assert(e != null, "NULL Event E"); //System.Diagnostics.Debug.Assert(sourceElement != null, "NULL Event SRC"); referenceObject = e; this.sourceElement = sourceElement; if (e != null) { clientXY = new Point(e.clientX, e.clientY); screenXY = new Point(e.screenX, e.screenY); switch (e.button) { default: case 0: button = Control.MouseButtons; break; case 1: button = MouseButtons.Left; break; case 2: button = MouseButtons.Right; break; case 3: button = MouseButtons.Left | MouseButtons.Right; break; case 4: button = MouseButtons.Middle; break; case 5: button = MouseButtons.Left | MouseButtons.Middle; break; case 6: button = MouseButtons.Right | MouseButtons.Middle; break; case 7: button = MouseButtons.Left | MouseButtons.Middle | MouseButtons.Right; break; } ctrlKey = e.ctrlKey; shftKey = e.shiftKey; altKey = e.altKey; keyCode = ((Keys)e.keyCode) | ((altKey) ? Keys.Alt : Keys.None) | ((ctrlKey) ? Keys.Control : Keys.None) | ((shftKey) ? Keys.Shift : Keys.None); type = e.type.ToLower(); } }
private Keys MapKeyLayout(Interop.IHTMLEventObj e) { int hkl = Win32.GetKeyboardLayout(0); char m = (char)Win32.MapVirtualKeyEx(((e.keyCode >= 97 && e.keyCode <= 122 && e.type.IndexOf("pressed") != -1) ? e.keyCode - 32 : e.keyCode), 2, hkl); if (keys.Contains(m.ToString())) { Keys k = (Keys)Enum.Parse(typeof(Keys), m.ToString(), true); return(k); } else { switch (m) { case '.': return(Keys.OemPeriod); case '+': return(Keys.Oemplus); case '-': return(Keys.OemMinus); case '\\': return(Keys.OemBackslash); case ',': return(Keys.Oemcomma); case '?': return(Keys.OemQuestion); case '"': return(Keys.OemQuotes); case '~': return(Keys.Oemtilde); case ';': return(Keys.OemSemicolon); case '[': return(Keys.OemOpenBrackets); case ']': return(Keys.OemCloseBrackets); } } return(Keys.NoName); }
protected bool GetEventObject() { try { // native event object _eventobj = window.@event; if (_eventobj != null && _eventobj.srcElement != null && (((ViewElement)_element).IsDisposed) == false) { System.Diagnostics.Debug.WriteLine(_eventobj.srcElement.GetTagName(), _eventobj.type); _eventobj.cancelBubble = true; return(true); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message, "GetEvent::Exception"); } return(false); }
public int PreHandleEvent(int dispId, Interop.IHTMLEventObj e) { returnCode = Interop.S_FALSE; Interop.IHTMLElement el = e.srcElement; if (e.srcElement != null) { lastEventType = e.type; Control element = htmlEditor.GenericElementFactory.CreateElement(el); returnCode = this.htmlEditor.InvokeHtmlEvent(e, element); if (returnCode == Interop.S_OK || (element is IElement && !htmlEditor.DesignModeEnabled)) { e.cancelBubble = true; e.returnValue = Interop.S_OK; } else { if (returnCode == Interop.S_FALSE && dispId == DispId.KEYDOWN && htmlEditor.DesignModeEnabled) { switch (e.keyCode) { case DEL: if (this.htmlEditor.InternalShortcutKeys) { try { this.htmlEditor.Exec(Interop.IDM.DELETE); } finally { returnCode = Interop.S_OK; } } break; default: break; } } } } return(returnCode); }
/// <summary> /// Ctor /// </summary> /// <param name="eventObject"></param> /// <param name="htmlEditor"></param> public HtmlKeyEventArgs(Interop.IHTMLEventObj eventObject, IHtmlEditor htmlEditor) { try { if (eventObject.srcElement != null) { switch (eventObject.type) { case "keypress": SetKey(eventObject, true); if (GetElement(eventObject, htmlEditor) != null) { element = htmlEditor.GenericElementFactory.CreateElement(GetElement(eventObject, htmlEditor)) as IElement; if (element != null) { htmlEditor.Document.SetActiveElement(element); } } eventType = KeyEventType.KeyPress; break; case "keydown": SetKey(eventObject, false); if (GetElement(eventObject, htmlEditor) != null) { element = htmlEditor.GenericElementFactory.CreateElement(GetElement(eventObject, htmlEditor)) as IElement; if (element != null) { htmlEditor.Document.SetActiveElement(element); } } eventType = KeyEventType.KeyDown; break; } } } catch { } }
/// <summary> /// Handles Mouse events and fill the event arguments with the values form the last event. /// </summary> /// <remarks> /// This constructor set the current element in the selection to, which forces the SelectionChanged event if the mouse click /// operation has changed the element. This constructor needs access to the Interop namespace is for internal /// use only. /// </remarks> /// <param name="element"></param> /// <param name="eventObject"></param> /// <param name="htmlEditor"></param> public HtmlMouseEventArgs(System.Web.UI.Control element, Interop.IHTMLEventObj eventObject, IHtmlEditor htmlEditor) { try { this.element = element; x = eventObject.x; y = eventObject.y; docx = eventObject.offsetX; docy = eventObject.offsetY; switch (eventObject.type) { case "mousemove": eventType = MouseEventType.MouseMove; break; case "mouseup": // using "up" in absence of a "click" event here eventType = MouseEventType.MouseUp; if (element != null) { htmlEditor.Document.SetActiveElement(element as IElement); } break; case "mousedown": eventType = MouseEventType.MouseDown; break; default: return; } buttons = (MouseButtons)eventObject.button; outside = (x < 0 || y < 0) ? true : false; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.StackTrace, ex.Message); } }
private void eventHandler(object sender, Interop.IHTMLEventObj eventObj) { if ((eventObj.type != "resizeend") || (0 != 0)) { if (eventObj.type != "resizestart") { while (eventObj.type == "mousedown") { eventObj.returnValue = true; return; } } else { this._isResizing = true; } } else { this._isResizing = false; } }
void _eventSink_ElementEvent(object sender, Interop.IHTMLEventObj e) { if (!EventsEnabled) { return; } //System.Diagnostics.Debug.WriteLine(e.type, e.srcElement.GetTagName()); switch (e.type) { case "controlselect": break; case "dragstart": isDragging = true; break; case "dragend": isDragging = false; break; } // cancelling the bubble prevents us from getting this for the parent too. //e.cancelBubble = true; }
public int TranslateAccelerator(int dispId, Interop.IHTMLEventObj e) { return(Interop.S_FALSE); }
internal ElementEventArgs(Interop.IHTMLEventObj e) { this.e = e; }
int Interop.IHTMLEditDesigner.PostEditorEventNotify(int dispId, Interop.IHTMLEventObj eventObj) { return(Interop.S_FALSE); }
/// <summary> /// Internally used public ctor. /// </summary> /// <param name="e"></param> public EventObject(Interop.IHTMLEventObj e) { this.e = e; }
int Interop.IHTMLEditDesigner.TranslateAccelerator(int dispId, Interop.IHTMLEventObj eventObj) { return(Interop.S_FALSE); }
/// <summary> /// Internally used ctor. DO NOT USE IN USER CODE. /// </summary> /// <param name="e"></param> public PostEditorEventArgs(Interop.IHTMLEventObj e) { this.e = e; }
void Interop.IHTMLGenericEvents.Invoke(int dispid, ref Guid g, int lcid, int dwFlags, Interop.DISPPARAMS pdp, object[] pvarRes, Interop.EXCEPINFO pei, int[] nArgError) { nArgError = new int[] { Interop.S_FALSE }; _eventobj = this.GetEventObject(); if (_eventobj != null && _eventobj.srcElement != null) { //System.Diagnostics.Debug.WriteLineIf(_eventobj.srcElement != null, _eventobj.type, " EVENTSINK " + _eventobj.srcElement.GetTagName()); if (ElementEvent != null) { ElementEvent(this, _eventobj); } switch (_eventobj.type) { case "help": break; case "click": _control.InvokeClick(_eventobj); break; case "dblclick": _control.InvokeDblClick(_eventobj); break; case "keypress": _control.InvokeKeyPress(_eventobj); break; case "keydown": break; case "keyup": break; case "mouseout": _control.InvokeMouseOut(_eventobj); break; case "mouseover": _control.InvokeMouseOver(_eventobj); break; case "mousemove": _control.InvokeMouseMove(_eventobj); break; case "mousedown": _control.InvokeMouseDown(_eventobj); break; case "mouseup": _control.InvokeMouseUp(_eventobj); break; case "selectstart": _control.InvokeSelectStart(_eventobj); break; case "filterchange": _control.InvokeFilterChange(_eventobj); break; case "dragstart": _control.InvokeDragStart(_eventobj); break; case "beforeupdate": break; case "afterupdate": break; case "errorupdate": break; case "rowexit": break; case "rowenter": break; case "datasetchanged": break; case "dataavailable": break; case "datasetcomplete": break; case "losecapture": _control.InvokeLoseCapture(_eventobj); break; case "propertychange": _control.InvokePropertyChange(_eventobj); break; case "scroll": _control.InvokeScroll(_eventobj); break; case "focus": _control.InvokeFocus(_eventobj); break; case "blur": _control.InvokeBlur(_eventobj); break; case "resize": _control.InvokeResize(_eventobj); OnResize(); break; case "drag": _control.InvokeDrag(_eventobj); break; case "dragend": _control.InvokeDragEnd(_eventobj); break; case "dragenter": _control.InvokeDragEnter(_eventobj); break; case "dragover": _control.InvokeDragOver(_eventobj); break; case "dragleave": _control.InvokeDragLeave(_eventobj); break; case "drop": _control.InvokeDrop(_eventobj); break; case "beforecut": _control.InvokeBeforeCut(_eventobj); break; case "cut": _control.InvokeCut(_eventobj); break; case "beforecopy": _control.InvokeBeforeCopy(_eventobj); break; case "copy": _control.InvokeCopy(_eventobj); break; case "beforepaste": _control.InvokeBeforePaste(_eventobj); break; case "paste": _control.InvokePaste(_eventobj); break; case "contextmenu": _control.InvokeContextMenu(_eventobj); break; case "rowsdelete": break; case "rowsinserted": break; case "cellchange": break; case "readystatechange": break; case "beforeeditfocus": _control.InvokeEditFocus(_eventobj); break; case "layoutcomplete": _control.InvokeLayoutComplete(_eventobj); break; case "page": _control.InvokePage(_eventobj); break; case "beforedeactivate": _control.InvokeBeforeDeactivate(_eventobj); break; case "beforeactivate": _control.InvokeBeforeActivate(_eventobj); break; case "move": _control.InvokeMove(_eventobj); break; case "controlselect": _control.InvokeControlSelect(_eventobj); break; case "movestart": _control.InvokeMoveStart(_eventobj); OnMoveStart(); break; case "moveend": _control.InvokeMoveEnd(_eventobj); OnMoveEnd(); break; case "resizestart": _control.InvokeResizeStart(_eventobj); OnResizeStart(); break; case "resizeend": _control.InvokeResizeEnd(_eventobj); break; case "mouseenter": _control.InvokeMouseEnter(_eventobj); break; case "mouseleave": _control.InvokeMouseLeave(_eventobj); break; case "mousewheel": _control.InvokeMouseWheel(_eventobj); break; case "activate": _control.InvokeActivate(_eventobj); break; case "deactivate": _control.InvokeDeactivate(_eventobj); break; case "focusin": _control.InvokeFocusIn(_eventobj); break; case "focusout": _control.InvokeFocusOut(_eventobj); break; case "load": _control.InvokeLoad(_eventobj); break; case "error": _control.InvokeError(_eventobj); break; case "change": _control.InvokeChange(_eventobj); break; case "abort": _control.InvokeAbort(_eventobj); break; case "select": _control.InvokeSelect(_eventobj); break; case "selectionchange": _control.InvokeSelectionChange(_eventobj); break; case "stop": _control.InvokeStop(_eventobj); break; case "reset": break; case "submit": break; } } }
public int PostHandleEvent(int dispId, Interop.IHTMLEventObj e) { return(returnCode); }
public int PostEditorEventNotify(int dispId, Interop.IHTMLEventObj e) { HandlePostEvents(dispId, e); return(Interop.S_FALSE); }