text=t;
}
-void Button::render_part(const Part &part) const
+void Button::button_press(int x, int y, unsigned btn)
{
- if(part.get_name()=="text")
- {
- render_text(part, text);
- /*const GL::Font *const font=style->get_font();
-
- const float font_size=font->get_default_size();
- unsigned text_w=static_cast<unsigned>(font->get_string_width(text)*font_size);
-
- part.get_alignment().apply(geom, text_w, static_cast<unsigned>(font_size));
-
- GL::push_matrix();
- GL::scale_uniform(font_size);
-
- const Color &color=style->get_font_color();
- glColor3f(color.r, color.g, color.b);
- font->draw_string(text);
- glColor3f(1, 1, 1);
-
- GL::pop_matrix();*/
- }
- else
- Widget::render_part(part);
-}
-
-void Button::on_button_press(int, int, unsigned btn)
-{
- if(btn==1)
+ if(geom.is_inside(x, y) && btn==1)
state=ACTIVE;
}
-void Button::on_button_release(int, int, unsigned btn)
+void Button::button_release(int x, int y, unsigned btn)
{
- if(btn==1/* && x>=0 && y>=0 && x<static_cast<int>(geom.w) && y<static_cast<int>(geom.h)*/)
+ if(btn==1)
{
state=NORMAL;
- signal_clicked.emit();
+ if(geom.is_inside(x, y))
+ signal_clicked.emit();
}
}
+void Button::render_part(const Part &part) const
+{
+ if(part.get_name()=="text")
+ render_text(part, text);
+ else
+ Widget::render_part(part);
+}
+
} // namespace GLtk
} // namespace Msp