Thanks. I've spent many hours on debugging this, but could not find a solution. 
Your answer encouraged me to look again and do strange tests. That led me to 
find the bug in my code.


> blue146 wrote:
> > I have a class that derives from Fl_Group, and contains several widgets. 
> > When I call activate() for one of the deactivated widgets (Fl_Round_Button 
> > for instance) then somehow draw() is called for the whole Fl_Group class. 
> > This causes the group to flicker on the screen once. I guess that it 
> > flickers because it takes some time to redraw all of the widgets in the 
> > group.
> > Do you know how could I stop the whole group from redrawing when I change 
> > just one of it's children ? Optimally, only the changed widget should be 
> > redrawn.
>
>       No idea, since the default Fl_Widget::activate()
>       only tells that widget to redraw:
>
> void Fl_Widget::activate() {
>   if (!active()) {
>     clear_flag(INACTIVE);
>     if (active_r()) {
>       redraw();
>       redraw_label();
>       handle(FL_ACTIVATE);
>       if (inside(Fl::focus())) Fl::focus()->take_focus();
>     }
>   }
> }
>
>       Possibly there's other code involved causing the redraw of
>       the parent. Note label is redrawn, as well as an "FL_ACTIVATE"
>       event sent to the widget's handle() method.
>
>       Regarding the 'flicker', try using Fl_Double_Window if possible
>       instead of Fl_Window; it uses double buffering which prevents flicker,
>       whereas Fl_Window is single buffered.

_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to