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