Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=78486 --- shadow/78486 2006-06-14 03:09:20.000000000 -0400 +++ shadow/78486.tmp.31557 2006-06-14 03:16:02.000000000 -0400 @@ -1,23 +1,23 @@ Bug#: 78486 Product: Mono: Class Libraries Version: 1.1 -OS: +OS: unknown OS Details: Status: NEW Resolution: -Severity: +Severity: Unknown Priority: Minor Component: Windows.Forms AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] QAContact: [EMAIL PROTECTED] TargetMilestone: --- URL: Cc: -Summary: ContainerControl should not receive focus +Summary: [PATCH] ContainerControl should not receive focus The following example demonstrates that either UserControl or Form steals a focus from its child Button: using System; using System.Drawing; @@ -66,6 +66,60 @@ this problem does not happen. ------- Additional Comments From [EMAIL PROTECTED] 2006-06-14 03:09 ------- Created an attachment (id=17176) proposed fix + +------- Additional Comments From [EMAIL PROTECTED] 2006-06-14 03:15 ------- +At first I doubted that such conditioning to pass control focus is +done by WS_EX_CONTROLPARENT, but it does not look so: + +-------- +using System; +using System.Windows.Forms; + +public class Test : Form +{ + public static void Main () + { + Application.Run (new Test ()); + } + + public Test () + { + MyContainerControl c = new MyContainerControl (); + Controls.Add (c); + Controls.Add (new MyButton ()); + Console.WriteLine (c.Params); + Visible = true; + Console.WriteLine ("{0} {1}", c.CanFocus, c.CanSelect); + c.Controls.Add (new Button ()); + Console.WriteLine ("{0} {1}", c.CanFocus, c.CanSelect); + } +} + +public class MyContainerControl : ContainerControl +{ + public CreateParams Params { + get { return CreateParams; } + } +} + +public class MyButton : Button +{ + // This verifies that WS_EX_CONTROLPARENT does not immediately means + // that it does not receive focus. + protected override CreateParams CreateParams { + get { + CreateParams basis = base.CreateParams; + basis.ExStyle |= 0x10000; // WS_EX_CONTROLPARENT + return basis; + } + } +} +-------- + +MyButton receives focus as usual (while it has WS_EX_CONTROLPARENT). +So I think only ContainerControl class matters. Conditioning by +WS_EX_CONTROLPARENT (changing ContainerControl.CreateParams) is wrong +since such changes make MyButton not focusible. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
