Bonjour,
pour un de mes projets, j'ai eu besoin de créer un menu contextuel qui doit apparaitre lorsque je clique-droit sur le header de mon tableviewer.

Pour faire ça, je me suis inspiré du snippet suivant :
http://dev.eclipse.org/viewcvs/viewv...1.java?view=co

Et ça fonctionne parfaitement...sous Windows.
Car sous Linux, c assez étrange.

Si je prends le bout de code suivant (tiré du snippet):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
	table.addListener(SWT.MenuDetect, new Listener() {
		public void handleEvent(Event event) {
			Point pt = display.map(null, table, new Point(event.x, event.y));
			Rectangle clientArea = table.getClientArea();
			boolean header = clientArea.y <= pt.y && pt.y < (clientArea.y + table.getHeaderHeight());
			table.setMenu(header ? headerMenu : tableMenu);
		}
	})
Sous Windows, si je clique-droit sur le header, le listener est appelé. Si je clique droit dans la table, il ne se passe rien.
Sous Linux, le listener est appelé dans tous les cas.

De plus, les coordonées du point, ainsi que le ClientArea sont différents si je travaille sous Linux ou Windows.

Normal ??

Merci
benoit