Hi all, First, kudos to Lyle for the nice work for the work bringing Fox to Ruby. I''m trying to create a custom widget that looks and acts like a regular pushbutton with some additional look and behavior. I don''t think I can use a regular FXButton because I can''t seem to style the text inside, or have bands of different colors. Eventually it will flash when an alarm goes off. I tried to create a custom widget like this: class PushB < FXVerticalFrame include Responder attr_accessor :header, :footer, :main_text def initialize(parent, dialog, opts = {}) @size = 100 @header_text, @footer_text, @main_text = nil,opts[:timer_type],opts[:main] @child = [] @dialog = dialog @o = opts super(parent, :opts=>FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_Y|LAYOUT_CENTER_X|LAYOUT_CENTER_Y|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, :width=>@size, :height=>@size, :padding=>0 ) FXMAPFUNC(SEL_LEFTBUTTONPRESS, 0, :on_left_click) @meta_button = self @meta_button.backColor = FXRGB(0,200,0) w = @size - 4 base_disp_opts = LAYOUT_CENTER_X|LAYOUT_SIDE_TOP|LAYOUT_FIX_HEIGHT|LAYOUT_FIX_WIDTH @child << FXLabel.new(@meta_button, @header_text||"", :width=>w, :height=>25, :opts=>base_disp_opts|FRAME_RAISED ) @child.last.connect(SEL_LEFTBUTTONPRESS, method(:on_left_click)) @child << FXLabel.new(@meta_button, @main_text||"", :width=>w,:height=>55, :opts=>base_disp_opts ) @child.last.connect(SEL_LEFTBUTTONPRESS, method(:on_left_click)) @child << FXLabel.new(@meta_button, @footer_text||"", :width=>w, :height=>25, :opts=>base_disp_opts|FRAME_RAISED ) @child.last.connect(SEL_LEFTBUTTONPRESS, method(:on_left_click)) set_normal_state enable end def set_normal_state @child[0].backColor= FXRGB(100,150,0) @child[2].backColor= FXRGB(100,150,0) end def set_alarm_state end def toggle_state end def on_left_click(sender, sel, event) puts "XXX buttonpress - #{sender} #{sel} #{event}" @dialog.execute end end Lots of hardcoded stuff since I''m just experimenting right now. Sorry for the horribly ugly code, but this is my first attempt at a FXRuby program. :) The widget is a square "button", made up of three FXLabel instances. Unfortunately, I haven''t hit upon how to make the entire widget respond as one to a mouse click. The FXMAPFUNC call that I found in the list archives only works on the frame itself. Since the child elements take up all the space, they intercept the mouse click. So right now, each child is handling the event independently. How would one get the child elements to pass the click event to their parent? Then the major problem I haven''t figured out yet... If I have more than one of these widgets, each one needs to know when it was clicked. Sounds like a good use for FXDataTarget, but passing :target to a label or frame causes mass panic and confusion :) Unrecognized parameter target (ArgumentError) What would the strategy be to get the target of the mouse click? The event object that is passed to on_left_click handler contains an FXEvent which has co-ordinates. That can''t be right, but I haven''t found any info on how to get the data target working for a fox object that is not expecting it. Is there some way to pass self as a parameter when connecting? ie. .connect(SEL_LEFTBUTTONPRESS, method(:xxx), self) Any pointers or tips greatly appreciated. TIA, Ed