[Mono-bugs] [Bug 661893] New: TabControl draws previously focused ComboBox on wrong TabPage

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Dec 30 13:26:00 EST 2010


https://bugzilla.novell.com/show_bug.cgi?id=661893

https://bugzilla.novell.com/show_bug.cgi?id=661893#c0


           Summary: TabControl draws previously focused ComboBox on wrong
                    TabPage
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.8.x
          Platform: Macintosh
        OS/Version: Mac OS X 10.5
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Windows.Forms
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: c8 at vokabeln.de
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=406612)
 --> (http://bugzilla.novell.com/attachment.cgi?id=406612)
full VB.NET Project (use bin\Release\Test002TabControl.exe to test on Mac)

User-Agent:       Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;
Media Center PC 6.0; MDDC; .NET4.0C)

On a Windows Form, I created a TabControl with two TabPages. On TabPage1, I put
a ComboBox with .DrowDownStyle = DropDownList and a few Items ("a", "b", "c").
TabPage2 remains empty. 

Now I started the programme on Mac, and perform the following mouse clicks: 
- Select any Item from the ComboBox on TabPage1
- Now immediately click on TabPage2
The ControlBox is now visible on TabPage2 (but cannot be used there). 


Reproducible: Always

Steps to Reproduce:
1. In VB.NET, created a Form with the following designer code: 

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
  Inherits System.Windows.Forms.Form

  <System.Diagnostics.DebuggerNonUserCode()> _
  Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    Try
      If disposing AndAlso components IsNot Nothing Then
        components.Dispose()
      End If
    Finally
      MyBase.Dispose(disposing)
    End Try
  End Sub

  Private components As System.ComponentModel.IContainer

  <System.Diagnostics.DebuggerStepThrough()> _
  Private Sub InitializeComponent()
    Me.TabControl1 = New System.Windows.Forms.TabControl
    Me.TabPage1 = New System.Windows.Forms.TabPage
    Me.ComboBox1 = New System.Windows.Forms.ComboBox
    Me.TabPage2 = New System.Windows.Forms.TabPage
    Me.TabControl1.SuspendLayout()
    Me.TabPage1.SuspendLayout()
    Me.SuspendLayout()
    '
    'TabControl1
    '
    Me.TabControl1.Controls.Add(Me.TabPage1)
    Me.TabControl1.Controls.Add(Me.TabPage2)
    Me.TabControl1.Location = New System.Drawing.Point(23, 21)
    Me.TabControl1.Name = "TabControl1"
    Me.TabControl1.SelectedIndex = 0
    Me.TabControl1.Size = New System.Drawing.Size(243, 222)
    Me.TabControl1.TabIndex = 0
    '
    'TabPage1
    '
    Me.TabPage1.Controls.Add(Me.ComboBox1)
    Me.TabPage1.Location = New System.Drawing.Point(4, 22)
    Me.TabPage1.Name = "TabPage1"
    Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
    Me.TabPage1.Size = New System.Drawing.Size(235, 196)
    Me.TabPage1.TabIndex = 0
    Me.TabPage1.Text = "TabPage1"
    Me.TabPage1.UseVisualStyleBackColor = True
    '
    'ComboBox1
    '
    Me.ComboBox1.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList
    Me.ComboBox1.FormattingEnabled = True
    Me.ComboBox1.Items.AddRange(New Object() {"a", "b", "c"})
    Me.ComboBox1.Location = New System.Drawing.Point(17, 33)
    Me.ComboBox1.Name = "ComboBox1"
    Me.ComboBox1.Size = New System.Drawing.Size(195, 21)
    Me.ComboBox1.TabIndex = 0
    '
    'TabPage2
    '
    Me.TabPage2.Location = New System.Drawing.Point(4, 22)
    Me.TabPage2.Name = "TabPage2"
    Me.TabPage2.Padding = New System.Windows.Forms.Padding(3)
    Me.TabPage2.Size = New System.Drawing.Size(235, 196)
    Me.TabPage2.TabIndex = 1
    Me.TabPage2.Text = "TabPage2"
    Me.TabPage2.UseVisualStyleBackColor = True
    '
    'Form1
    '
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    Me.ClientSize = New System.Drawing.Size(284, 262)
    Me.Controls.Add(Me.TabControl1)
    Me.Name = "Form1"
    Me.Text = "Form1"
    Me.TabControl1.ResumeLayout(False)
    Me.TabPage1.ResumeLayout(False)
    Me.ResumeLayout(False)

  End Sub
  Friend WithEvents TabControl1 As System.Windows.Forms.TabControl
  Friend WithEvents TabPage1 As System.Windows.Forms.TabPage
  Friend WithEvents TabPage2 As System.Windows.Forms.TabPage
  Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox
End Class


2. Compile the program and run it on Mac OS X using Mono. 

3. Use the mouse to select an Item from the ComboBox on TabPage1, then
immediately click on TabPage2
Actual Results:  
The ComboBox from TabPage1 is visible on TabPage2. 

Expected Results:  
TabPage2 should, of course, be empty.

I made the following additional observations: 

* This problem happens on Mac, but not on Windows (sorry, I could not test it
on Linux). 

* It does NOT happen if I click on TabPage1 -> ComboBox -> TabPage1 ->
TabPage2. So, TabPage2 must be clicked immediately after selecting an Item from
ComboBox, for the problem to arise. 

* Similar effects can be observed if, instead of a ComboBox, you focus a
CheckBox on TabPage1, or if you *select* text in TextBox on TabPage1 (but not
if you put the cursor in the TextBox without selecting text)

* I checked the order of events fired, and that was fine (i.e. Windows and Mac
showed the same order (but Mac had three events more than Windows): 

- TabPage1.Leave [only on Mac]
- TabPage1.Validating
- TabPage1.Validated
- TabControl.Deselecting
- TabControl.Deselected
- TabPage1.Leave
- TabControl.Selecting
- TabPage2.Enter
- TabControl.SelectedIndexChanged
- TabControl.MouseDown
- TabControl.LostFocus [only on Mac]
- TabControl.LostFocus [only on Mac]
- TabControl.Click 
- TabControl.MouseClick
- TabControl.MouseUp.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list