summaryrefslogtreecommitdiff
path: root/src/Fl_Tree_Item_Array.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Tree_Item_Array.cxx')
-rw-r--r--src/Fl_Tree_Item_Array.cxx7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Fl_Tree_Item_Array.cxx b/src/Fl_Tree_Item_Array.cxx
index 1da368c9a..0503a8000 100644
--- a/src/Fl_Tree_Item_Array.cxx
+++ b/src/Fl_Tree_Item_Array.cxx
@@ -109,9 +109,14 @@ void Fl_Tree_Item_Array::enlarge(int count) {
/// Insert an item at index position \p pos.
///
/// Handles enlarging array if needed, total increased by 1.
-/// If \p pos == total(), an empty item is appended to the array.
+/// If \p pos \>= total(), the item is appended to the array.
+/// If \p pos \< 0, the item is prepended (works like pos == 0).
///
void Fl_Tree_Item_Array::insert(int pos, Fl_Tree_Item *new_item) {
+ if (pos < 0)
+ pos = 0;
+ else if (pos > _total)
+ pos = _total;
enlarge(1);
// printf("*** POS=%d TOTAL-1=%d NITEMS=%d\n", pos, _total-1, (_total-pos));
if ( pos <= (_total - 1) ) { // need to move memory around?