void ShowMenu() { Gtk.Menu menu = CreateMenu(); if (menu != null) { isOpen = true; //make sure the button looks depressed Gtk.ReliefStyle oldRelief = Widget.Relief; Widget.Relief = Gtk.ReliefStyle.Normal; Widget.SetStateActive(); //clean up after the menu's done menu.Hidden += delegate { Widget.Relief = oldRelief; isOpen = false; Widget.SetStateNormal(); //FIXME: for some reason the menu's children don't get activated if we destroy //directly here, so use a timeout to delay it GLib.Timeout.Add(100, delegate { //menu.Destroy (); return(false); }); }; menu.Popup(null, null, PositionFunc, 1, Gtk.Global.CurrentEventTime); } }
protected override void OnClicked() { base.OnClicked(); if (creator != null) { Gtk.Menu menu = creator(this); if (menu != null) { isOpen = true; //make sure the button looks depressed Gtk.ReliefStyle oldRelief = this.Relief; this.Relief = Gtk.ReliefStyle.Normal; //clean up after the menu's done menu.Hidden += delegate { this.Relief = oldRelief; isOpen = false; this.State = Gtk.StateType.Normal; //FIXME: for some reason the menu's children don't get activated if we destroy //directly here, so use a timeout to delay it GLib.Timeout.Add(100, delegate { //menu.Destroy (); return(false); }); }; menu.Popup(null, null, PositionFunc, 0, Gtk.Global.CurrentEventTime); } } }
public void ShowQuickInsertMenu(object sender, EventArgs args) { var menu = manager.CreateMenu(entrySet); //FIXME: taken from MonoDevelop.Components.MenuButton. should share this. isOpen = true; //make sure the button looks depressed Gtk.ReliefStyle oldRelief = button.Relief; button.Relief = Gtk.ReliefStyle.Normal; //clean up after the menu's done menu.Hidden += delegate { button.Relief = oldRelief; isOpen = false; button.State = Gtk.StateType.Normal; //FIXME: for some reason the menu's children don't get activated if we destroy //directly here, so use a timeout to delay it GLib.Timeout.Add(100, delegate { menu.Destroy(); return(false); }); }; menu.Popup(null, null, PositionFunc, 0, Gtk.Global.CurrentEventTime); }
void HandleClicked(object sender, Gtk.ButtonPressEventArgs e) { if (e.Event.Button != 1) { return; } Gtk.Menu menu = CreateMenu(); if (menu != null) { isOpen = true; //make sure the button looks depressed Gtk.ReliefStyle oldRelief = Widget.Relief; Widget.Relief = Gtk.ReliefStyle.Normal; //clean up after the menu's done menu.Hidden += delegate { Widget.Relief = oldRelief; isOpen = false; ((Gtk.Widget)Widget).State = Gtk.StateType.Normal; //FIXME: for some reason the menu's children don't get activated if we destroy //directly here, so use a timeout to delay it GLib.Timeout.Add(100, delegate { //menu.Destroy (); return(false); }); }; menu.Popup(null, null, PositionFunc, 1, Gtk.Global.CurrentEventTime); } }