On Sunday 24 November 2002 11:27 pm, Darren Freeman wrote:
> On Fri, 2002-11-22 at 02:12, Angus Leeming wrote:
> > On Thursday 14 November 2002 3:36 pm, Darren Freeman wrote:
> > > Dear list,
> > >
> > > the spelchecker status bar is still corrupted. Attached is a screenshot
> > > at 100%. When I looked at it glosely in GIMP I realised that the weird
> > > characters are actually two copies of 100% on top of each other, one
> > > normal size and a second much smaller over the % sign of the first.
> >
> > Darren, I think I've fixed this properly in cvs. Perhaps you'd try it
> > out. Angus
>
> Angus,
>
> Now that CVS is fixed I tried it - still screwed.
>
> Not only that but now the word count doesn't increment. I tested with a
> single line of jibberish, the word count stayed on 0 until all was
> completed.

Ummm. I broke it. Now fixed.

> Still corrupted text - probably a font issue. It seems to print the
> percentage twice, once in the desired font and again much smaller and
> off to the right a little bit, thus the small version overwrites the %
> sign of the bigger version.

If this is /still/ horrible, then try adding this to 
FormSpellchecker::updateState(State state):

        case STOPPED:
        {
                controller().stop();

                double const wordcount = controller().getCount();

                fl_set_slider_bounds(dialog_->slider_progress, 0.0, wordcount);
                fl_set_slider_value(dialog_->slider_progress, wordcount);
                fl_set_object_label(dialog_->slider_progress, "100 %");
+               fl_redraw_object(dialog_->slider_progress);
                break;
        }

If it still is being overwritten, then blast it with
                fl_redraw_form(form());

Having said that, the above solutions are of the hammer variety. I suspect 
that resetting the label does not trigger a redraw event if the slider value 
is not changed. Ie, I suspect this value is already "wordcount".

Try
        case STOPPED:
        {
                controller().stop();

                double const wordcount = controller().getCount();
+               double const currentcount = 
+fl_get_slider_value(dialog_->slider_progress);
+               if (currentcount == wordcount)
+                       break;
+
                fl_set_slider_bounds(dialog_->slider_progress, 0.0, wordcount);
                fl_set_slider_value(dialog_->slider_progress, wordcount);
                fl_set_object_label(dialog_->slider_progress, "100 %");
                break;
        }


This latter would be the clean solution. Tell me what you find.
Angus

Reply via email to