summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FL/Fl_Browser.H13
-rw-r--r--FL/Fl_Browser_.H2
-rw-r--r--src/Fl_Browser.cxx30
-rw-r--r--src/Fl_Browser_.cxx1
4 files changed, 43 insertions, 3 deletions
diff --git a/FL/Fl_Browser.H b/FL/Fl_Browser.H
index 4c4521d72..467c6bf0c 100644
--- a/FL/Fl_Browser.H
+++ b/FL/Fl_Browser.H
@@ -3,7 +3,7 @@
//
// Browser header file for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2011 by Bill Spitzak and others.
+// Copyright 1998-2016 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@@ -141,6 +141,17 @@ public:
int size() const { return lines; }
void size(int W, int H) { Fl_Widget::size(W, H); }
+ /**
+ Gets the default text size (in pixels) for the lines in the browser.
+ */
+ Fl_Fontsize textsize() const { return Fl_Browser_::textsize(); }
+
+ /*
+ Sets the default text size for the lines in the browser to newSize.
+ Defined and documented in Fl_Browser.cxx
+ */
+ void textsize(Fl_Fontsize newSize);
+
int topline() const ;
/** For internal use only? */
enum Fl_Line_Position { TOP, BOTTOM, MIDDLE };
diff --git a/FL/Fl_Browser_.H b/FL/Fl_Browser_.H
index 8fb22cae4..613574a01 100644
--- a/FL/Fl_Browser_.H
+++ b/FL/Fl_Browser_.H
@@ -3,7 +3,7 @@
//
// Common browser header file for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2016 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
diff --git a/src/Fl_Browser.cxx b/src/Fl_Browser.cxx
index c81c88edc..d0a9b9989 100644
--- a/src/Fl_Browser.cxx
+++ b/src/Fl_Browser.cxx
@@ -3,7 +3,7 @@
//
// Browser widget for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2016 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@@ -651,6 +651,34 @@ int Fl_Browser::topline() const {
}
/**
+ Sets the default text size (in pixels) for the lines in the browser to \p newSize.
+
+ This method recalculates all item heights and caches the total height
+ internally for optimization of later item changes. This can be slow
+ if there are many items in the browser.
+
+ It returns immediately (w/o recalculation) if \p newSize equals
+ the current textsize().
+
+ You \e may need to call redraw() to see the effect and to have the
+ scrollbar positions recalculated.
+
+ You should set the text size \e before populating the browser with items
+ unless you really need to \e change the size later.
+*/
+void Fl_Browser::textsize(Fl_Fontsize newSize) {
+ if (newSize == textsize())
+ return; // avoid recalculation
+ Fl_Browser_::textsize(newSize);
+ new_list();
+ full_height_ = 0;
+ if (lines == 0) return;
+ for (FL_BLINE* itm=(FL_BLINE *)item_first(); itm; itm=(FL_BLINE *)item_next(itm)) {
+ full_height_ += item_height(itm);
+ }
+}
+
+/**
Removes all the lines in the browser.
\see add(), insert(), remove(), swap(int,int), clear()
*/
diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx
index a85fc0153..fbbc3bfa5 100644
--- a/src/Fl_Browser_.cxx
+++ b/src/Fl_Browser_.cxx
@@ -113,6 +113,7 @@ void Fl_Browser_::resize(int X, int Y, int W, int H) {
hscrollbar.resize(
X, scrollbar.align()&FL_ALIGN_TOP ? Y-scrollsize : Y+H,
W, scrollsize);
+ max_width = 0;
}
// Cause minimal update to redraw the given item: