image = $image; $this->pixbuf = GdkPixbuf::new_from_file($image); list($this->pixmap, $this->mask) = $this->pixbuf->render_pixmap_and_mask(255); $style = $this->get_style(); $style = $style->copy(); $style->bg_pixmap[Gtk::STATE_NORMAL] = $this->pixmap; $this->set_style($style); $x = $y = 0; # should take care of $this->allocation and $image size. $this->shape_combine_mask($this->mask, $x, $y); $this->connect('button-press-event', array($this, 'on_button_press')); $this->set_visible_window($visible); $this->show_all(); } public function on_button_press(){ echo "button_press\n"; } } # you can use popup window and make button fully transparent ; but there is some trick to correct. # this will give you a fully rounded window without any decoration. # $window = new GtkWindow(Gtk::WINDOW_POPUP); $window = new GtkWindow(); $window->set_size_request(90,90); $window->set_position(Gtk::WIN_POS_CENTER); $window->connect_simple('destroy', array('Gtk','main_quit')); $window->add( $b = new RoundButton('button_play1.png')); $window->show_all(); Gtk::main(); ?>