OK, just checked in the new Fl_Browser scrollbar stuff as r6737.

Think I was able to make everyone happy regarding the changes.

Below is a test program that exercises the changes..
I should probably add this to the unit tests so we can
check for regression.

Todo: Make follow up changes to other widgets with scrollbars.

Mods:

        * Moved Fl::scrollbar_size() implementation from Fl_Browser_ -> Fl::
        * Modified Fl_Browser as per fltk.dev discussions:

                * Deprecate Fl_Browser scrollbar_width() method
                * Introduce Fl_Browser scrollbar_size() method with global 
fallback behavior
                * Using 0 instead of -1 as the default (as per Albrecht's 
recommendation)
                * scrollbar_size() returns same value as set (as per Albrecht's 
comments)
                * Mike's warnings on bad UI implications made clear in docs for 
new method


Test program I used to verify the changes; feel free to play if curious.
Changing the left hand slider to zero makes the global slider affect all 
browsers.

* * *

#include <string.h>
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Browser.H>
#include <FL/Fl_Value_Slider.H>
//
// Test new 1.3.x global vs. local scrollbar sizing
//
Fl_Browser *makebrowser(int X,int Y,int W,int H,const char*L=0) {
    Fl_Browser *b = new Fl_Browser(X,Y,W,H,L);
    b->type(FL_MULTI_BROWSER);
    b->add("Papa");     b->add("Delta"); b->add("Hotel");
    b->add("Charlie");  b->add("Echo");  b->add("Foxtrot");
    b->add("Golf");     b->add("Lima");  b->add("Victor");
    b->add("Alpha");    b->add("Xray");  b->add("Yankee");
    b->add("Oscar");    b->add("India"); b->add("Juliet");
    b->add("Kilo");     b->add("Mike");  b->add("Sierra");
    b->add("November"); b->add("Tango"); b->add("Quebec");
    b->add("Bravo");    b->add("Romeo"); b->add("Uniform");
    b->add("Whisky");   b->add("Zulu");
    b->add("Papa");     b->add("Delta"); b->add("Hotel");
    b->add("Charlie");  b->add("Echo");  b->add("Foxtrot");
    b->add("Golf");     b->add("Lima");  b->add("Victor");
    b->add("Alpha");    b->add("Xray");  b->add("Yankee");
    b->add("Oscar");    b->add("India"); b->add("Juliet");
    b->add("Kilo");     b->add("Mike");  b->add("Sierra");
    b->add("November"); b->add("Tango"); b->add("Quebec");
    b->add("Bravo");    b->add("Romeo"); b->add("Uniform");
    b->add("Whisky");   b->add("Zulu");
    return(b);
}
Fl_Browser *brow_a=0, *brow_b=0, *brow_c=0;
void slide_cb(Fl_Widget *w, void*data) {
    Fl_Value_Slider *in = (Fl_Value_Slider*)w;
    const char *label = w->label();
    int val = in->value();
    //fprintf(stderr, "VAL='%d'\n",val);
    if ( strcmp(label,"A: Scroll Size") == 0 ) {
        brow_a->scrollbar_size(val);
    } else {
        Fl::scrollbar_size(val);
    }
    w->window()->redraw();
}
int main() {
    Fl_Double_Window *win  = new Fl_Double_Window(1000,500,"Scrollbar Size 
Test");
    brow_a = makebrowser( 10,40,280,win->h()-70,"Browser A");
    brow_b = makebrowser(300,40,280,win->h()-70,"Browser B");
    brow_c = makebrowser(600,40,280,win->h()-70,"Browser C");
    Fl_Value_Slider *slide_browa = new Fl_Value_Slider(100,10,100,18,"A: Scroll 
Size");
    slide_browa->value(16);
    slide_browa->type(FL_HORIZONTAL);
    slide_browa->align(FL_ALIGN_LEFT);
    slide_browa->range(0.0, 30.0);
    slide_browa->step(1.0);
    slide_browa->callback(slide_cb);
    slide_browa->labelsize(12);
    Fl_Value_Slider *slide_glob = new Fl_Value_Slider(350,10,100,18,"Global 
Scroll Size");
    slide_glob->value(16);
    slide_glob->type(FL_HORIZONTAL);
    slide_glob->align(FL_ALIGN_LEFT);
    slide_glob->range(0.0, 30.0);
    slide_glob->step(1.0);
    slide_glob->callback(slide_cb);
    slide_glob->labelsize(12);
    win->show();
    return(Fl::run());
}
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev

Reply via email to