Сигнал «accept_position» не вызывается в Ruby/Gtk2
Вопрос
Я создаю приложение с панелями в Ruby/Gtk.Когда размеры панелей будут изменены, мне нужно кое-что сделать.Но я не могу понять, какой сигнал использовать.Я думаю, что это «accept_position», но, похоже, это не работает.Это пример приложения, которое иллюстрирует мою проблему...
#!/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
Вызов «accept_position» никогда не запускается.Есть идеи, что является причиной этого/как это исправить?
Решение
'accept_position'
— это сигнал привязки клавиш, который генерируется только при изменении размера панели с помощью клавиатуры.
Я не знаю Ruby, но в C вам нужен сигнал 'notify::position'
. notify
это GObject
сигнал, который срабатывает всякий раз, когда свойство меняет свое значение.Если вы добавите деталь, такой как position
, к имени сигнала при его подключении, то он срабатывает только тогда, когда этот конкретный имущество меняет свою стоимость.