2009-11-11 12 views
1

Je crée une application avec des volets dans Ruby/Gtk. Lorsque les volets sont redimensionnés, j'ai besoin de faire quelque chose. Mais je ne peux pas savoir quel signal utiliser. Je pense que c'est 'accepter_position' - mais cela ne semble pas fonctionner. Ceci est un exemple d'application qui illustre mon problème ...Le signal 'accept_position' n'est pas appelé dans Ruby/Gtk2

#!/usr/bin/env ruby 

require 'gtk2' 

window = Gtk::Window.new(Gtk::Window::TOPLEVEL) 
window.set_title "Panes" 
window.border_width = 10 
window.set_size_request(225, 150) 
window.signal_connect('destroy') { Gtk.main_quit } 
window.signal_connect('delete_event') { false } 

button1 = Gtk::Button.new("Resize") 
button2 = Gtk::Button.new("Me") 

button1.signal_connect("clicked") { window.destroy } 
button2.signal_connect("clicked") { window.destroy } 

paned = Gtk::VPaned.new 
paned.add1(button1) 
paned.add2(button2) 

paned.signal_connect("accept_position") { 
puts "hello" 
false 
} 

window.add(paned) 
window.show_all 
Gtk.main 

L'appel « de accept_position » est jamais tiré. Une idée de ce qui cause cela/comment le réparer?

Répondre

3

'accept_position' est un signal de liaison des touches, émis uniquement lorsque le panneau est redimensionné à l'aide du clavier.

Je ne connais pas Ruby, mais en C le signal que vous voulez est 'notify::position'. notify est un signal GObject qui se déclenche chaque fois qu'une propriété change de valeur. Si vous ajoutez un détail, tel que position, au nom du signal lors de la connexion, il se déclenche uniquement lorsque cette propriété spécifique modifie sa valeur.

+0

Pas exactement ce que je voulais - mais assez proche. Merci! –