Сигнал accept_position не вызывается в Ruby / Gtk2 - PullRequest
1 голос
/ 11 ноября 2009

Я создаю приложение с панелями в 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' никогда не запускается. Любая идея, что вызывает это / как это исправить?

1 Ответ

3 голосов
/ 11 ноября 2009

'accept_position' - это сигнал привязки клавиш, генерируемый только при изменении размера панели с помощью клавиатуры.

Я не знаю Руби, но в Си вам нужен сигнал 'notify::position'. notify - это сигнал GObject, который срабатывает всякий раз, когда свойство меняет свое значение. Если вы добавите деталь , такую ​​как position, к имени сигнала при его подключении, то он срабатывает только тогда, когда это конкретное свойство меняет свое значение.

...