summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2009-07-12 00:29:36 +0000
committerGreg Ercolano <erco@seriss.com>2009-07-12 00:29:36 +0000
commit5045d2e834c2e7301173d348f2ae5331221e0696 (patch)
tree09825093a2949db197735d58fed68987f2c5d0ee
parentfe687baefd32a8b962a05085c01a17cd6c7d4a97 (diff)
Added to allow testing of scrollbar sizing.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6829 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--test/unittest_scrollbarsize.cxx118
1 files changed, 118 insertions, 0 deletions
diff --git a/test/unittest_scrollbarsize.cxx b/test/unittest_scrollbarsize.cxx
new file mode 100644
index 000000000..bc4d23e9f
--- /dev/null
+++ b/test/unittest_scrollbarsize.cxx
@@ -0,0 +1,118 @@
+//
+// "$Id: $"
+//
+// Unit tests for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <FL/Fl_Group.H>
+#include <FL/Fl_Browser.H>
+#include <FL/Fl_Value_Slider.H>
+
+//
+// Test new 1.3.x global vs. local scrollbar sizing
+//
+class ScrollBarSizeTest : public Fl_Group {
+ Fl_Browser *brow_a, *brow_b, *brow_c;
+
+ 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);
+ }
+ void slide_cb2(Fl_Value_Slider *in) {
+ const char *label = in->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);
+ }
+ in->window()->redraw();
+ }
+ static void slide_cb(Fl_Widget *w, void *data) {
+ ScrollBarSizeTest *o = (ScrollBarSizeTest*)data;
+ o->slide_cb2((Fl_Value_Slider*)w);
+ }
+public:
+ static Fl_Widget *create() {
+ return(new ScrollBarSizeTest(TESTAREA_X, TESTAREA_Y, TESTAREA_W, TESTAREA_H));
+ }
+
+ // CTOR
+ ScrollBarSizeTest(int X, int Y, int W, int H) : Fl_Group(X,Y,W,H) {
+ begin();
+ brow_a = makebrowser(X+ 10,Y+40,100,H-170,"Browser A");
+ brow_b = makebrowser(X+120,Y+40,100,H-170,"Browser B");
+ brow_c = makebrowser(X+240,Y+40,100,H-170,"Browser C");
+ Fl_Value_Slider *slide_glob = new Fl_Value_Slider(X+100,Y+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, (void*)this);
+ slide_glob->labelsize(12);
+ Fl_Value_Slider *slide_browa = new Fl_Value_Slider(X+350,Y+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, (void*)this);
+ slide_browa->labelsize(12);
+ end();
+ label("Verify global scroll sizing and per-widget scroll sizing.\n"
+ "Scrollbar's size should change interactively as size sliders are changed.\n"
+ "Changing 'Global Scroll Size' should affect all three browser's scrollbars UNLESS\n"
+ "the 'A: Scroll Size' slider is changed, in which case its value will take precedence\n"
+ "for 'Browser A', and the global size will only affect Browser A + B.");
+ labelsize(12);
+ align(FL_ALIGN_INSIDE|FL_ALIGN_BOTTOM|FL_ALIGN_LEFT|FL_ALIGN_WRAP);
+ }
+};
+
+UnitTest scrollbarsize("scrollbar size", ScrollBarSizeTest::create);
+
+//
+// End of "$Id: $"
+//