Newsgroup: it.comp.os.linux.development
Titolo: gtk2

Buongiorno
Avete idea di come gestire l'evento click con il secondo bottone del mouse
in un toggle button?
Grazie in anticipo 
                        Luca
-- 
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<>><<>><<>><<>><<>><<<>><<<>>
Luca Paredi
Computing technical supporter               
Universita' degli Studi dell'Insubria   
Via Lucini 3 Como (Italy)               
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<>><<>><<>><<>><<>><<<>><<<>>

 in un toggle button?
gboolean
on_mouse_click_event (GtkWidget *widget,
                      GdkEvent *event,
		      gpointer data)
{
	[...]
	if ((event->type == GDK_BUTTON_PRESS) && (event->button == 2))
		fprintf (stdout, "Premuto il secondo pulsante del mouse!");
 
	return TRUE
}
[...] 
g_signal_connect (G_OBJECT (button), "button-press-event",
	G_CALLBACK (on_mouse_click_event), NULL);
+++
Ricordati che si tratta di un evento, non di un semplice segnale. Se
vuoi che gli eventuali altri callback connessi vengano eseguiti, la tua
funzione deve ritornare FALSE; al contrario, se vuoi bloccare la
propagazione dell'evento, devi ritornare TRUE.
+++
Ad ogni modo, la tua è una forzatura dell'interfaccia: i toggle button
non dovrebbero intercettare il secondo tasto del mouse, a meno che tu
non voglia aprire un context menù; far aprire un context menù su un
toggle button che ha due stati è sconsigliabile perché complica
l'interfaccia.
BTW: per aprire context menù, è consigliabile usare l'evento
"popup_menu", che intercetta anche la combinazione SHIFT+F10, di default
in GNOME.
Hint: leggi le GNOME Human Interface Guidelines, che trovi sul sito
 
http://developer.gnome.org/
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://digilander.libero.it/ebassi/
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 
E' la seconda volta che mi aiuti ti pagherei una birra se solo il mio misero
stipendio da dipendente statale me lo consentisse... :-)
Grazie 


 misero stipendio da dipendente statale me lo consentisse... :-)
Magari impariamo a quotare invece.
http://learn.to/quote
Ciao,
-- 
+--------+ ASCII ribbon campaign ( )
|  kral  |  - against HTML email  X 
+--------+              & vCards / \

 
Perdona la mia ignoranza ma mi da questo:
lparedi@armonia:/home/sysadm/lparedi/CFILES/BATTLE% make
gcc newbattle.c -o battle  -Wall  -ggdb                          
`pkg-config gtk+-2.0 --cflags --libs`
newbattle.c: In function `on_mouse_click_event':
newbattle.c:58: invalid operands to binary ==
Grazie in anticipo
                        Luca
-- 
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<>><<>><<>><<>><<>><<<>><<<>>
Luca Paredi
Computing technical supporter           tel:      
Universita' degli Studi dell'Insubria   Fax:  


 
Hai ragione pardon
Luca
-- 
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<>><<>><<>><<>><<>><<<>><<<>>
Luca Paredi
Computing technical supporter           tel:      
Universita' degli Studi dell'Insubria   Fax:  


 newbattle.c:58: invalid operands to binary ==
Il codice che invio è da prendere "with a grain of salt", come direbbero
gli americani. Purtroppo, non posso testare il codice ogni volta[1].
Conto soprattutto sulla buona volontà del richiedente. :-)
Se poi ci si aggiunge il fatto che ho preso un pezzo di un mio programma
in Python e ho bellamente barato, tentando di tradurlo in C, facciamo un
bel filotto. :-)
+++
Ad ogni modo, il codice funzionante (compilato e testato) è:
gboolean
on_mouse_click_event (GtkWidget *widget,
                      GdkEventButton *event,
		      gpointer data)
{
	[...] 
 
	/* I tasti sono:
	 * 	1. tasto sinistro
	 *	2. tasto centrale
	 *	3. tasto destro
	 */
	if ((event->type == GDK_BUTTON_PRESS) && (event->button == 3))
		fai_qualcosa();
 
	return TRUE;
}
+++
[1] Sono pigro, e scrivere 100 linee[2] di codice per testarne due...
[2] Beh, cento no:
  wolverine:/tmp$ wc -l test.c 
       57 test.c


Grazie ora funziona tutto perfettamente.


 Grazie ora funziona tutto perfettamente.
Un consiglio:
 
http://developer.gnome.org/doc/API
E scaricati l'API Reference Guide delle GTK.
