示例#1
0
        protected override bool OnButtonReleaseEvent(Gdk.EventButton evnt)
        {
            bool res = base.OnButtonReleaseEvent(evnt);

            if (DoPopupMenu != null && evnt.IsContextMenuButton())
            {
                return(true);
            }

            return(res);
        }
示例#2
0
        protected override bool OnButtonReleaseEvent(Gdk.EventButton evnt)
        {
            this.Selection.SelectFunction = (s, m, p, b) => {
                return(true);
            };
            Gtk.TreePath buttonReleasePath;
            //If OnButtonPressEvent attempted on making deselection and dragging was not started
            //check if we are on same item as when we clicked(could be different if dragging is disabled)
            if (selectOnRelease &&
                GetPathAtPos((int)evnt.X, (int)evnt.Y, out buttonReleasePath) &&
                buttonPressPath.Compare(buttonReleasePath) == 0)
            {
                //Simulate what would happen in OnButtonPressEvent if we were not blocking selection
                //notice that item is currently 100% selected since this check was performed in OnButtonPressEvent
                if (Selection.Mode == Gtk.SelectionMode.Multiple &&
                    (evnt.State & Gdk.ModifierType.ControlMask) > 0)
                {
                    Selection.UnselectPath(buttonReleasePath);
                }
                else
                {
                    //UnselectAll in case multiple were selected we want only our item to be selected now
                    //if it was clicked but not dragged
                    Selection.UnselectAll();
                    Selection.SelectPath(buttonReleasePath);
                }
                buttonPressPath = null;
            }
            selectOnRelease = false;

            bool res = base.OnButtonReleaseEvent(evnt);

            if (DoPopupMenu != null && evnt.IsContextMenuButton())
            {
                return(true);
            }

            return(res);
        }