ruby-gnome2: catching middle clicks on tabs

C

Clayton Smith

What I am trying to do is capture the button-press-event when a person
middle-clicks on a tab(similar to how Firefox tabs work). As I learned
in #gtk+ using the EventBox should be able to do this
After a quick scouting of the web for an example, I found this:
http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq17.003.htp

Unfortunately, I had problems with what I came up with. By using the
following, when middle clicking on any of the tabs it finds the
page_num to be -1 ..
--------------
#!/usr/local/bin/ruby --verbose
require 'gtk2'
include Gtk
init
win = Window.new
win.set_default_size 300, 300

hbox = HBox.new( false, 0)
win.add(hbox)

nb = Notebook.new
hbox.add(nb)

def add_page nb
vbox = VBox.new( false, 0)
tab_label_box = EventBox.new
label = Label.new('test')
tab_label_box.add(label)
tab_label_box.show_all
tab_label_box.signal_connect('button-press-event') do |widget,
event|
if event.event_type==Gdk::Event::BUTTON_PRESS and
event.button==2
puts nb.page_num(widget) # <-- not recognizing as a child ?
end
end
nb.append_page( vbox, tab_label_box)
end

add_page nb
add_page nb
add_page nb

win.show_all
main
--------------
 
M

Masao Mutoh

Hi,

"tab_label" is not "child" of Gtk::Notebook.
Try code below.

HTH.

Unfortunately, I had problems with what I came up with. By using the
following, when middle clicking on any of the tabs it finds the
page_num to be -1 ..
--------------
#!/usr/local/bin/ruby --verbose
require 'gtk2'
include Gtk
init
win = Window.new
win.set_default_size 300, 300

hbox = HBox.new( false, 0)
win.add(hbox)

nb = Notebook.new
hbox.add(nb)

def add_page nb
vbox = VBox.new( false, 0)
tab_label_box = EventBox.new
label = Label.new('test')
tab_label_box.add(label)
tab_label_box.show_all
tab_label_box.signal_connect('button-press-event') do |widget,
event|
if event.event_type==Gdk::Event::BUTTON_PRESS and
event.button==2
puts nb.page_num(widget) # <-- not recognizing as a child ?

puts nb.page_num(vbox) # FIXED!
 
C

Clayton Smith

Sorry for incomplete answer.
No need to be sorry. I greatly appreciate the help.

Clayton
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Staff online

Members online

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,143
Latest member
DewittMill
Top