Current problems:
Groups of Fl_Radio_Button must be added to one Fl_Group, which is not possible in this context. There are two alternatives:
(This is mostly solved.)
Alpha transparency should be best abstracted by FLTK itself. If not, perhaps different implementations for different window systems could be used. Then, it is for X necessary to use GCs with clipping masks.
Unfortunately, FLTK does not provide a button with Fl_Group as parent, so that children may be added to the button. dw::fltk::ui::ComplexButton does exactly this, and is, in an ugly way, a modified copy of the FLTK button.
It would be nice, if this is merged with the standard FLTK button. Furthermore, setting the type is strange.
If the files do not compile, it may be useful to create a new one from the FLTK source:
The following changes should be applied manually.
First of all, the #define's for avoiding multiple includes:
-#ifndef fltk_ComplexButton_h // fltk_Button_h formerly
-#define fltk_ComplexButton_h
+#ifndef __FLTK_COMPLEX_BUTTON_HH__
+#define __FLTK_COMPLEX_BUTTON_HH__
at the beginning and
-#endif
+#endif // __FLTK_COMPLEX_BUTTON_HH__
at the end. Then, the namespace is changed:
-namespace fltk { +namespace dw { +namespace fltk { +namespace ui {
at the beginning and
-} +} // namespace ui +} // namespace fltk +} // namespace dw
at the end. Most important, the base class is changed:
-#include "FL/Fl_Widget.H"
+#include <FL/Fl_Group.H>
and
-class FL_API ComplexButton : public Fl_Widget { +class ComplexButton: public Fl_Group +{
Finally, for dw::fltk::ui::ComplexButton::default_style, there is a namespace conflict:
- static NamedStyle* default_style;
+ static ::fltk::NamedStyle* default_style;
First, #include's:
#include <FL/Fl.H> -#include <FL/ComplexButton.h> // <FL/Fl_Button.H> formerly #include <FL/Fl_Group.H> #include <FL/Fl_Window.H> + +#include "fltkcomplexbutton.hh"
Second, namespaces:
+using namespace dw::fltk::ui;
Since the base class is now Fl_Group, the constructor must be changed:
-ComplexButton::ComplexButton(int x,int y,int w,int h, const char *l) : Fl_Widget(x,y,w,h,l) { +ComplexButton::ComplexButton(int x,int y,int w,int h, const char *l) : + Fl_Group(x,y,w,h,l) +{
Finally, the button must draw its children (end of dw::fltk::ui::ComplexButton::draw()):
+ + for (int i = children () - 1; i >= 0; i--) + draw_child (*child (i)); }
1.5.9