+2008-04-12 Andreia Gaita <avidigal@novell.com>
+
+ * HtmlDocument.cs, HtmlElement.cs, HtmlHistory.cs, WebBrowser.cs:
+ Implement OuterHtml, OuterText, Enabled, Scroll*, *Rectangle properties,
+ add missing properties and event handlers.
+
2008-04-14 Jonathan Pobst <monkey@jpobst.com>
* ListBox.cs: Make sure the LargeChange we are setting is at least
zero, to prevent an IOORE. [Fixes bug #379531]
-2009-04-13 Andy Hume <andyhume32@yahoo.co.uk>
+2008-04-13 Andy Hume <andyhume32@yahoo.co.uk>
* ComboBox.cs: Support item navigation by entering text. Firstly,
in DropDownList mode, for each key-press select the next item
* X11Keyboard.cs : Control.FromHandle() could return null
in MoveCurrentCaretPos().
-2009-04-12 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+2008-04-12 Carlos Alberto Cortez <calberto.cortez@gmail.com>
* ListView.cs: When changing the size in VirtualMode, also Reset the
selection.
changing selection info for VirtualMode.
Fixes #372618.
-2009-04-12 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+2008-04-12 Carlos Alberto Cortez <calberto.cortez@gmail.com>
* ThemeWin32Classic.cs: When drawing ListViewItem instancesin Details
view, don't use LineLimit for the first item - use NoWrap *always*
instead, since ListView.LabelWrap is not used for this view.
Fixes #378054.
-2009-04-12 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+2008-04-12 Carlos Alberto Cortez <calberto.cortez@gmail.com>
* Binding.cs: Call UpdateIsBinding when setting control - probably
Binding is already usable and we don't need to wait to check the
Created, just like 2.0 does.
* CurrencyManager.cs: I'm so lame - the previous check was wrong.
-2009-04-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+2008-04-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
* Binding.cs: Just realized we don't need to have a handler for
BindingContextChanged, since this info should be now consumed directly
* CurrencyManager.cs: IsSuspended should return always false if Count
== 0.
-2009-04-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+2008-04-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
* Binding.cs: When calling PushData, return if manager.Count == 0,
since we just don't have data to be read. Also, when setting the
[MonoTODO ("Needs Implementation")]
public sealed class HtmlDocument
{
- Mono.WebBrowser.IWebBrowser webHost;
- IDocument document;
+ private EventHandlerList events;
+ private Mono.WebBrowser.IWebBrowser webHost;
+ private IDocument document;
internal HtmlDocument (Mono.WebBrowser.IWebBrowser webHost) : this (webHost, webHost.Document)
{
this.document = doc;
}
+
+ internal EventHandlerList Events {
+ get {
+ if (events == null)
+ events = new EventHandlerList ();
+
+ return events;
+ }
+ }
+
#region Methods
#endregion
-
+
+ #region Events
+ private static object ClickEvent = new object ();
+ public event HtmlElementEventHandler Click {
+ add {
+ Events.AddHandler (ClickEvent, value);
+ document.Click += new NodeEventHandler (OnClick);
+ }
+ remove {
+ Events.RemoveHandler (ClickEvent, value);
+ document.Click -= new NodeEventHandler (OnClick);
+ }
+ }
+ private void OnClick (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[ClickEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ private static object ContextMenuShowingEvent = new object ();
+ public event HtmlElementEventHandler ContextMenuShowing
+ {
+ add
+ {
+ Events.AddHandler (ContextMenuShowingEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (ContextMenuShowingEvent, value);
+ }
+ }
+ private void OnContextMenuShowing (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[ContextMenuShowingEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ private static object FocusingEvent = new object ();
+ public event HtmlElementEventHandler Focusing
+ {
+ add
+ {
+ Events.AddHandler (FocusingEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (FocusingEvent, value);
+ }
+ }
+ private void OnFocusing (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[FocusingEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ private static object LosingFocusEvent = new object ();
+ public event HtmlElementEventHandler LosingFocus
+ {
+ add
+ {
+ Events.AddHandler (LosingFocusEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (LosingFocusEvent, value);
+ }
+ }
+ private void OnLosingFocus (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[LosingFocusEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+
+ private static object MouseDownEvent = new object ();
+ public event HtmlElementEventHandler MouseDown
+ {
+ add
+ {
+ Events.AddHandler (MouseDownEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (MouseDownEvent, value);
+ }
+ }
+ private void OnMouseDown (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseDownEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+
+ private static object MouseLeaveEvent = new object ();
+ public event HtmlElementEventHandler MouseLeave
+ {
+ add
+ {
+ Events.AddHandler (MouseLeaveEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (MouseLeaveEvent, value);
+ }
+ }
+ private void OnMouseLeave (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseLeaveEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ private static object MouseMoveEvent = new object ();
+ public event HtmlElementEventHandler MouseMove
+ {
+ add
+ {
+ Events.AddHandler (MouseMoveEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (MouseMoveEvent, value);
+ }
+ }
+ private void OnMouseMove (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseMoveEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ private static object MouseOverEvent = new object ();
+ public event HtmlElementEventHandler MouseOver
+ {
+ add
+ {
+ Events.AddHandler (MouseOverEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (MouseOverEvent, value);
+ }
+ }
+ private void OnMouseOver (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseOverEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ private static object MouseUpEvent = new object ();
+ public event HtmlElementEventHandler MouseUp
+ {
+ add
+ {
+ Events.AddHandler (MouseUpEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (MouseUpEvent, value);
+ }
+ }
+ private void OnMouseUp (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseUpEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ private static object StopEvent = new object ();
+ public event HtmlElementEventHandler Stop
+ {
+ add
+ {
+ Events.AddHandler (StopEvent, value);
+ }
+ remove
+ {
+ Events.RemoveHandler (StopEvent, value);
+ }
+ }
+ private void OnStop (object sender, EventArgs e)
+ {
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[StopEvent];
+ if (eh != null) {
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+ eh (this, ev);
+ }
+ }
+
+ #endregion
+
+
private Color ParseColor (string color) {
if (color.IndexOf ("#") >= 0) {
return Color.FromArgb (int.Parse (color.Substring (color.IndexOf ("#") + 1), NumberStyles.HexNumber));
#if NET_2_0\r
\r
using System;\r
+using System.Drawing;\r
using System.ComponentModel;\r
using Mono.WebBrowser.DOM;\r
\r
public bool CanHaveChildren {\r
get {\r
string tag = this.TagName;\r
- switch (tag.ToLower ()) {\r
+ switch (tag.ToLowerInvariant ()) {\r
case "area":\r
case "base":\r
case "basefont":\r
return new HtmlElementCollection (webHost, this.element.Children);\r
}\r
}\r
+\r
+ public Rectangle ClientRectangle {\r
+ get { return new Rectangle (0, 0, this.element.ClientWidth, this.element.ClientHeight); }\r
+ }\r
\r
+ public Rectangle OffsetRectangle {\r
+ get { return new Rectangle (this.element.OffsetLeft, this.element.OffsetTop, this.element.OffsetWidth, this.element.OffsetHeight); }\r
+ }\r
+\r
+ public Rectangle ScrollRectangle {\r
+ get { return new Rectangle (this.element.ScrollLeft, this.element.ScrollTop, this.element.ScrollWidth, this.element.ScrollHeight); }\r
+ }\r
+\r
+ public int ScrollLeft {\r
+ get { return this.element.ScrollLeft; }\r
+ set { this.element.ScrollLeft = value; }\r
+ }\r
+\r
+ public int ScrollTop\r
+ {\r
+ get { return this.element.ScrollTop; }\r
+ set { this.element.ScrollTop = value; }\r
+ }\r
+\r
+ public HtmlElement OffsetParent {\r
+ get { return new HtmlElement (this.webHost, this.element.OffsetParent); }\r
+ }\r
+\r
public HtmlDocument Document {\r
get {\r
return new HtmlDocument (webHost, element.Owner);\r
}\r
}\r
\r
- public string InnerHtml {\r
+ public bool Enabled\r
+ {\r
+ get { return !this.element.Disabled; }\r
+ set { this.element.Disabled = !value; }\r
+ }\r
+\r
+ public string InnerHtml\r
+ {\r
get { return this.element.InnerHTML; }\r
set { throw new NotImplementedException (); }\r
}\r
public string TagName {\r
get { return element.TagName; }\r
}\r
+\r
+ [MonoTODO ("Needs implementation")]\r
+ public short TabIndex {\r
+ get { return 0; }\r
+ }\r
+\r
+ [MonoTODO ("Needs implementation")]\r
+ public object DomElement {\r
+ get { return null; }\r
+ }\r
+\r
+ public string OuterHtml {\r
+ get { return this.element.OuterHTML; }\r
+ }\r
+\r
+ public string OuterText {\r
+ get { return this.element.OuterText; }\r
+ }\r
+\r
+ [MonoTODO ("Needs implementation")]\r
+ public string Style {\r
+ get { return String.Empty; }\r
+ }\r
+\r
#endregion\r
\r
#region Methods\r
element.KeyUp -= new NodeEventHandler (OnKeyUp);\r
}\r
}\r
+\r
+ private static object DragEvent = new object ();\r
+ public event HtmlElementEventHandler Drag {\r
+ add {\r
+ Events.AddHandler (DragEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (DragEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnDrag (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+\r
+\r
+ private static object DragEndEvent = new object ();\r
+ public event HtmlElementEventHandler DragEnd {\r
+ add {\r
+ Events.AddHandler (DragEndEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (DragEndEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnDragEnd (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragEndEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+ private static object DragLeaveEvent = new object ();\r
+ public event HtmlElementEventHandler DragLeave {\r
+ add {\r
+ Events.AddHandler (DragLeaveEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (DragLeaveEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnDragLeave (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragLeaveEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+ private static object DragOverEvent = new object ();\r
+ public event HtmlElementEventHandler DragOver {\r
+ add {\r
+ Events.AddHandler (DragOverEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (DragOverEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnDragOver (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragOverEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+ private static object FocusingEvent = new object ();\r
+ public event HtmlElementEventHandler Focusing {\r
+ add {\r
+ Events.AddHandler (FocusingEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (FocusingEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnFocusing (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[FocusingEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+\r
+ private static object GotFocusEvent = new object ();\r
+ public event HtmlElementEventHandler GotFocus {\r
+ add {\r
+ Events.AddHandler (GotFocusEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (GotFocusEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnGotFocus (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[GotFocusEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+ private static object LosingFocusEvent = new object ();\r
+ public event HtmlElementEventHandler LosingFocus {\r
+ add {\r
+ Events.AddHandler (LosingFocusEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (LosingFocusEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnLosingFocus (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[LosingFocusEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+ private static object LostFocusEvent = new object ();\r
+ public event HtmlElementEventHandler LostFocus {\r
+ add {\r
+ Events.AddHandler (LostFocusEvent, value);\r
+ }\r
+ remove {\r
+ Events.RemoveHandler (LostFocusEvent, value);\r
+ }\r
+ }\r
+\r
+ private void OnLostFocus (object sender, EventArgs e)\r
+ {\r
+ HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[LostFocusEvent];\r
+ if (eh != null) {\r
+ HtmlElementEventArgs ev = new HtmlElementEventArgs ();\r
+ eh (this, ev);\r
+ }\r
+ }\r
+\r
#endregion\r
}\r
}\r
#endregion
+ #region Properties
+ [MonoTODO ("Needs implementation")]
+ public int Length {
+ get { return 0; }
+ }
+
+ [MonoTODO ("Needs implementation")]
+ public object DomHistory {
+ get { return null; }
+ }
+ #endregion
+
+
public void Back (int numberBack)
{
this.webHost.Navigation.Go (numberBack * -1, true);
static object NewWindowEvent = new object ();\r
static object ProgressChangedEvent = new object ();\r
static object StatusTextChangedEvent = new object ();\r
+ static object PaddingChangedEvent = new object ();\r
\r
[BrowsableAttribute(false)]\r
public event EventHandler CanGoBackChanged {\r
remove { Events.RemoveHandler (StatusTextChangedEvent, value); }\r
}\r
\r
+ public event EventHandler PaddingChanged\r
+ {\r
+ add { Events.AddHandler (PaddingChangedEvent, value); }\r
+ remove { Events.RemoveHandler (PaddingChangedEvent, value); }\r
+ }\r
#endregion\r
\r
#region Internal\r