[Mono-bugs] [Bug 79394][Min] Changed - ContainerControl: Issue when trying to focus on child control using the mouse

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Fri Sep 22 14:59:24 EDT 2006

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 unserkonig at gmail.com.


--- shadow/79394	2006-09-22 14:58:10.000000000 -0400
+++ shadow/79394.tmp.466	2006-09-22 14:59:24.000000000 -0400
@@ -41,6 +41,30 @@
 get resolved.
 ------- Additional Comments From unserkonig at gmail.com  2006-09-22 14:58 -------
 Created an attachment (id=17734)
 New patch
+------- Additional Comments From unserkonig at gmail.com  2006-09-22 14:59 -------
+The previous patch was causing some unexpected behaviour. The problem
+needed an additional check, in ActiveControl (set), where we change:
+-                    if ((active_control==value) || (value==null)) {
++                    if (value == null)
+This is important, because a scenario like the next could happen:
+1) A child control in ContainerControl gets selected and ActiveControl
+references it.
+2) ContainerControl loses the focus (as well as the selected child),
+but ActiveControl still references to the previously selected child
+(which is fine).
+3) The same previously selected child gets selected, and then the
+Container.ActiveControl setter is called. Since the last value of
+ActiveControl is the same, (value == active_control), it doesn't get
+the focus (SendFocus and so on). But it should "update" the focus for it.
+Also, Select () impl was doing the correct thing, it was just that the
+previously mentioned check didn't let it work fine. So I'm removing the
+commented code for WndProc (which is not needed anymore).

More information about the mono-bugs mailing list