Tomboy.NoteRecentChanges.OnTreeViewButtonPressed C# (CSharp) Method

OnTreeViewButtonPressed() private method

private OnTreeViewButtonPressed ( object sender, Gtk args ) : void
sender object
args Gtk
return void
		void OnTreeViewButtonPressed (object sender, Gtk.ButtonPressEventArgs args)
		{
			if (args.Event.Window != this.tree.BinWindow) {
				return;
			}

			Gtk.TreePath path = null;
			Gtk.TreeViewColumn column = null;

			tree.GetPathAtPos ((int)args.Event.X, (int)args.Event.Y,
							   out path, out column);
			if (path == null)
				return;

			clickX = (int)args.Event.X;
			clickY = (int)args.Event.Y;

			switch (args.Event.Type) {
			case Gdk.EventType.TwoButtonPress:
				if (args.Event.Button != 1 || (args.Event.State &
						(Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask)) != 0) {
					break;
				}

				tree.Selection.UnselectAll ();
				tree.Selection.SelectPath (path);
				tree.ActivateRow (path, column);
				break;
			case Gdk.EventType.ButtonPress:
				if (args.Event.Button == 3) {
					Gtk.Menu menu = Tomboy.ActionManager.GetWidget (
						"/MainWindowContextMenu") as Gtk.Menu;
					PopupContextMenuAtLocation (menu,
						(int)args.Event.X,
						(int)args.Event.Y);

					// Return true so that the base handler won't
					// run, which causes the selection to change to
					// the row that was right-clicked.
					args.RetVal = true;
					break;
				}

				if (tree.Selection.PathIsSelected (path) && (args.Event.State &
						(Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask)) == 0) {
					if (column != null && args.Event.Button == 1) {
						Gtk.CellRenderer renderer = column.CellRenderers [0];
						Gdk.Rectangle background_area = tree.GetBackgroundArea (path, column);
						Gdk.Rectangle cell_area = tree.GetCellArea (path, column);

						renderer.Activate (args.Event,
										   tree,
										   path.ToString (),
										   background_area,
										   cell_area,
										   Gtk.CellRendererState.Selected);

						Gtk.TreeIter iter;
						if (tree.Model.GetIter (out iter, path)) {
							tree.Model.EmitRowChanged (path, iter);
						}
					}

					args.RetVal = true;
				}

				break;
			default:
				args.RetVal = false;
				break;
			}
		}