+2007-04-24 Jonathan Pobst <monkey@jpobst.com>
+
+ * ToolStrip.cs: Fully implement GetNextItem. Call OnParentRightToLeftChanged
+ for each ToolStripItem when the parent's RightToLeftChanged is called.
+
2007-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
* ComboBox.cs: Forward ContextMenu to the underlying textbox, if any.
if (!Enum.IsDefined (typeof (ArrowDirection), direction))
throw new InvalidEnumArgumentException (string.Format ("Enum argument value '{0}' is not valid for ArrowDirection", direction));
- int index = this.items.IndexOf (start);
-
+ if (this.Items.Count == 1)
+ return null;
+
+ ToolStripItem current_best = null;
+ int current_best_point;
+
switch (direction) {
- case ArrowDirection.Left:
- case ArrowDirection.Up:
- if (index > 0)
- return this.items[index - 1];
-
- return this.items[this.items.Count - 1];
case ArrowDirection.Right:
+ current_best_point = int.MaxValue;
+
+ if (start != null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Left >= start.Right && loop_tsi.Left < current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Left;
+ }
+
+ if (current_best == null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Left < current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Left;
+ }
+
+ break;
+ case ArrowDirection.Up:
+ current_best_point = int.MinValue;
+
+ if (start != null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Bottom <= start.Top && loop_tsi.Top > current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Top;
+ }
+
+ if (current_best == null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Top > current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Top;
+ }
+
+ break;
+ case ArrowDirection.Left:
+ current_best_point = int.MinValue;
+
+ if (start != null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Right <= start.Left && loop_tsi.Left > current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Left;
+ }
+
+ if (current_best == null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Left > current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Left;
+ }
+
+ break;
case ArrowDirection.Down:
- if (index + 1 >= this.items.Count)
- return this.items[0];
-
- return this.items[index + 1];
+ current_best_point = int.MaxValue;
+
+ if (start != null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Top >= start.Bottom && loop_tsi.Bottom < current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Top;
+ }
+
+ if (current_best == null)
+ foreach (ToolStripItem loop_tsi in this.DisplayedItems)
+ if (loop_tsi.Top < current_best_point && loop_tsi.Visible && loop_tsi.CanSelect) {
+ current_best = loop_tsi;
+ current_best_point = loop_tsi.Top;
+ }
+
+ break;
}
- return null;
+ return current_best;
}
public void ResetMinimumSize ()
protected override void OnRightToLeftChanged (EventArgs e)
{
base.OnRightToLeftChanged (e);
+
+ foreach (ToolStripItem tsi in this.Items)
+ tsi.OnParentRightToLeftChanged (e);
}
protected override void OnScroll (ScrollEventArgs se)
+2007-04-24 Jonathan Pobst <monkey@jpobst.com>
+
+ * ToolStripDropDownTest.cs: Add Assert for default orientation.
+ * ToolStripTest.cs: Enable tests for CanOverflow and DefaultDropDownDirection.
+ Add test for GetNextItem.
+
2007-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
* MdiFormTest.cs: Added tests for #81409.
Assert.AreEqual (true, tsdd.DropShadowEnabled, "A5");\r
Assert.AreEqual (false, tsdd.IsAutoGenerated, "A6");\r
Assert.AreEqual (1, tsdd.Opacity, "A7");\r
+ Assert.AreEqual (Orientation.Horizontal, tsdd.Orientation, "A7-2");\r
Assert.AreEqual (null, tsdd.OwnerItem, "A8");\r
Assert.AreEqual (null, tsdd.Region, "A9");\r
Assert.AreEqual (RightToLeft.No, tsdd.RightToLeft, "A10");\r
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
}
- //[Test]
- //public void PropertyCanOverflow ()
- //{
- // ToolStrip ts = new ToolStrip ();
- // EventWatcher ew = new EventWatcher (ts);
+ [Test]
+ public void PropertyCanOverflow ()
+ {
+ ToolStrip ts = new ToolStrip ();
+ EventWatcher ew = new EventWatcher (ts);
- // ts.CanOverflow = false;
- // Assert.AreEqual (false, ts.CanOverflow, "B1");
- // Assert.AreEqual (string.Empty, ew.ToString (), "B2");
- //}
+ ts.CanOverflow = false;
+ Assert.AreEqual (false, ts.CanOverflow, "B1");
+ Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+ }
[Test]
public void PropertyCausesValidation ()
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
- //[Test]
- //public void PropertyDefaultDropDownDirection ()
- //{
- // ToolStrip ts = new ToolStrip ();
- // EventWatcher ew = new EventWatcher (ts);
+ [Test]
+ public void PropertyDefaultDropDownDirection ()
+ {
+ ToolStrip ts = new ToolStrip ();
+ EventWatcher ew = new EventWatcher (ts);
- // ts.DefaultDropDownDirection = ToolStripDropDownDirection.AboveLeft;
- // Assert.AreEqual (ToolStripDropDownDirection.AboveLeft, ts.DefaultDropDownDirection, "B1");
- // Assert.AreEqual (string.Empty, ew.ToString (), "B2");
- //}
+ ts.DefaultDropDownDirection = ToolStripDropDownDirection.AboveLeft;
+ Assert.AreEqual (ToolStripDropDownDirection.AboveLeft, ts.DefaultDropDownDirection, "B1");
+ Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+ }
- //[Test]
- //[ExpectedException (typeof (InvalidEnumArgumentException))]
- //public void PropertyDefaultDropDownDirectionIEAE ()
- //{
- // ToolStrip ts = new ToolStrip ();
- // EventWatcher ew = new EventWatcher (ts);
+ [Test]
+ [ExpectedException (typeof (InvalidEnumArgumentException))]
+ public void PropertyDefaultDropDownDirectionIEAE ()
+ {
+ ToolStrip ts = new ToolStrip ();
+ EventWatcher ew = new EventWatcher (ts);
- // ts.DefaultDropDownDirection = (ToolStripDropDownDirection) 42;
- //}
+ ts.DefaultDropDownDirection = (ToolStripDropDownDirection)42;
+ }
[Test]
[ExpectedException (typeof (InvalidEnumArgumentException))]
Assert.AreEqual (null, ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.VerticalStackWithOverflow), "A5");
}
+ [Test]
+ public void MethodGetNextItem ()
+ {
+ ToolStrip ts = new ToolStrip ();
+ ts.Items.Add ("Test Item 1");
+
+
+ Assert.AreEqual (null, ts.GetNextItem (null, ArrowDirection.Right), "A1");
+ Assert.AreEqual (null, ts.GetNextItem (ts.Items[0], ArrowDirection.Right), "A2");
+
+ ts.Items.Add ("Test Item 2");
+ Assert.AreEqual (ts.Items[0], ts.GetNextItem (null, ArrowDirection.Right), "A3");
+ Assert.AreEqual (ts.Items[0], ts.GetNextItem (ts.Items[0], ArrowDirection.Right), "A4");
+
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+ f.Controls.Add (ts);
+ f.Show ();
+
+ Assert.AreEqual (ts.Items[0], ts.GetNextItem (null, ArrowDirection.Right), "A5");
+ Assert.AreEqual (ts.Items[1], ts.GetNextItem (ts.Items[0], ArrowDirection.Right), "A6");
+
+ f.Dispose ();
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidEnumArgumentException))]
+ public void MethodGetNextItemIEAE ()
+ {
+ ToolStrip ts = new ToolStrip ();
+ ts.GetNextItem (null, (ArrowDirection)42);
+ }
+
[Test]
public void TestToolStrip ()
{