private void OnButtonPressed(object o, ButtonPressEventArgs args) { if (args.Event.Type != EventType.ButtonPress || args.Event.Button != 3) { // Not a right-click, early return return; } this.Tree.GetPathAtPos((int)args.Event.X, (int)args.Event.Y, out var sorterPath); var filterPath = _treeSorter.ConvertPathToChildPath(sorterPath); var modelPath = _treeFilter.ConvertPathToChildPath(filterPath); if (modelPath == null) { _saveItem.Sensitive = false; _exportItem.Sensitive = false; _openItem.Sensitive = false; _queueForExportItem.Sensitive = false; _copyPathItem.Sensitive = false; return; } var currentFileReference = _treeModel.GetReferenceByPath(this.GameContext, modelPath); if (currentFileReference.IsFile || currentFileReference.IsDirectory) { _saveItem.Sensitive = true; _exportItem.Sensitive = true; _openItem.Sensitive = true; _queueForExportItem.Sensitive = true; _copyPathItem.Sensitive = true; } else { _saveItem.Sensitive = false; _exportItem.Sensitive = false; _openItem.Sensitive = true; _queueForExportItem.Sensitive = false; _copyPathItem.Sensitive = false; } _treeContextMenu.ShowAll(); //this.TreeContextMenu.Popup(); // only available in GTK >= 3.22 _treeContextMenu.PopupForDevice(args.Event.Device, null, null, null, null, args.Event.Button, args.Event.Time); }