TopLevelNoWindowBug.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using Terminal.Gui;
  2. namespace UICatalog.Scenarios {
  3. [ScenarioMetadata (Name: "TopLevelNoWindowBug", Description: "Illustrates that not having a Window causes MenuBar to misbehave. #437")]
  4. [ScenarioCategory ("Bug Repro"), ScenarioCategory ("TopLevel")]
  5. public class TopLevelNoWindowBug : Scenario {
  6. public override void Run ()
  7. {
  8. Top?.Dispose ();
  9. //Top = new Toplevel (new Rect (0, 0, Application.Driver.Cols, Application.Driver.Rows));
  10. var menu = new MenuBar (new MenuBarItem [] {
  11. new MenuBarItem ("_Файл", new MenuItem [] {
  12. new MenuItem ("_Создать", "Creates new file", null),
  13. new MenuItem ("_Открыть", "", null),
  14. new MenuItem ("Со_хранить", "", null),
  15. new MenuItem ("_Выход", "", () => { if (Quit ()) { Application.RequestStop(); } })
  16. }),
  17. new MenuBarItem ("_Edit", new MenuItem [] {
  18. new MenuItem ("_Copy", "", null),
  19. new MenuItem ("C_ut", "", null),
  20. new MenuItem ("_Paste", "", null)
  21. })
  22. });
  23. Top.Add (menu);
  24. // BUGBUG: #437 This being commented out causes menu to mis-behave
  25. var win = new Window ($"Scenario: {GetName ()}") {
  26. X = 0,
  27. Y = 1,
  28. Width = Dim.Fill (),
  29. Height = Dim.Fill ()
  30. };
  31. Top.Add (win);
  32. base.Run ();
  33. }
  34. private bool Quit ()
  35. {
  36. var n = MessageBox.Query (50, 7, $"Quit {GetName ()}", $"Are you sure you want to quit this {GetName ()}?", "Yes", "No");
  37. return n == 0;
  38. }
  39. }
  40. }