[Gtk-sharp-list] TreeView ButonPressEvent doesn't trigger

Fredrik Nilsson jymdman at home.se
Sat Oct 22 12:49:41 EDT 2005


Hi,

You have to use the ConnectBefore attribute like this:

[GLib.ConnectBefore]
public static void OnButtonPressEvent(object o, ButtonPressEventArgs
args)

and it should work for you.

/Fredrik


lör 2005-10-22 klockan 18:01 +0200 skrev László Monda:
> Hi List,
> 
> I have problems with triggering several TreeView signals.  I know that
> many widgets don't receive lots of signals by default.  I tried to
> change that behaviour by manipulatating the event mask using:
> 
> tv.Events = EventMask.AllEventsMask; or
> tv.AddEvents((int)EventMask.ButtonPressMask);
> 
> but none of them worked.
> 
> I've modified the GTK# ManagedTreeViewDemo.cs example to try this out
> and demonstrate this problem.
> 
> ButtonReleaseEvent triggers, but ButtonPressEvent doesn't, even after
> manipulating the event mask.  I've both attached and included the code
> here.
> 
> ----8<----
> 
> // ManagedTreeViewDemo.cs - Another TreeView demo
> //
> // Author: Rachel Hestilow <hestilow at ximian.com>
> //
> // (c) 2003 Rachel Hestilow
> 
> namespace GtkSamples {
> 	using System;
> 	using System.Runtime.InteropServices;
> 
> 	using Gtk;
> 	using Gdk;
> 
> 	public class TreeViewDemo {
> 		private static ListStore store = null;
> 		
> 		private class Pair {
> 			public string a, b;
> 			public Pair (string a, string b) {
> 				this.a = a;
> 				this.b = b;
> 			}
> 		}
> 
> 		private static void PopulateStore ()
> 		{
> 			store = new ListStore (typeof (Pair));
> 			string[] combs = {"foo", "bar", "baz", "quux"};
> 			foreach (string a in combs) {
> 				foreach (string b in combs) {
> 					store.AppendValues (new Pair (a, b));
> 				}
> 			}
> 		}
> 
> 		private static void CellDataA (Gtk.TreeViewColumn tree_column,
> Gtk.CellRenderer cell, Gtk.TreeModel tree_model, Gtk.TreeIter iter)
> 		{
> 			Pair val = (Pair) store.GetValue (iter, 0);
> 			((CellRendererText) cell).Text = val.a;
> 		}
> 		
> 		private static void CellDataB (Gtk.TreeViewColumn tree_column,
> Gtk.CellRenderer cell, Gtk.TreeModel tree_model, Gtk.TreeIter iter)
> 		{
> 			Pair val = (Pair) store.GetValue (iter, 0);
> 			((CellRendererText) cell).Text = val.b;
> 		}
> 		
> 		public static void Main (string[] args)
> 		{
> 			Application.Init ();
> 
> 			PopulateStore ();
> 
> 			Gtk.Window win = new Gtk.Window ("TreeView demo");
> 			win.DeleteEvent += new DeleteEventHandler (DeleteCB);
> 			win.DefaultWidth = 320;
> 			win.DefaultHeight = 480;
> 
> 			ScrolledWindow sw = new ScrolledWindow ();
> 			win.Add (sw);
> 
> 			TreeView tv = new TreeView (store);
> 			//tv.Events = EventMask.AllEventsMask;
> 			//tv.AddEvents((int)EventMask.ButtonPressMask);
> 			tv.ButtonPressEvent += new ButtonPressEventHandler(OnButtonPressEvent);
> 			tv.ButtonReleaseEvent += new ButtonReleaseEventHandler(OnButtonReleaseEvent);
> 			tv.HeadersVisible = true;
> 
> 			tv.AppendColumn ("One", new CellRendererText (), new
> TreeCellDataFunc (CellDataA));
> 			tv.AppendColumn ("Two", new CellRendererText (), new
> TreeCellDataFunc (CellDataB));
> 
> 			sw.Add (tv);
> 			win.ShowAll ();
> 
> 			Application.Run ();
> 		}
> 
> 		public static void OnButtonPressEvent(object o, ButtonPressEventArgs args)
> 		{
> 		    Console.WriteLine("Button pressed.");
> 		}
> 
> 		public static void OnButtonReleaseEvent(object o, ButtonReleaseEventArgs args)
> 		{
> 		    Console.WriteLine("Button released.");
> 		}
> 
> 		private static void DeleteCB (System.Object o, DeleteEventArgs args)
> 		{
> 			Application.Quit ();
> 		}
> 	}
> }
> 
> ----8<----
> 
> Anyone could drop some knowledge on this issue?
> 
> Thanks in advance!
> 
> --
> Laci
> 
>     Blog: http://monda.hu/~laci/blog
>     Home: http://mondalaci.objectis.net
> _______________________________________________
> Gtk-sharp-list maillist  -  Gtk-sharp-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/gtk-sharp-list



More information about the Gtk-sharp-list mailing list