summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2022-10-28 17:37:18 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2022-10-28 17:37:18 +0200
commita918292547cfb154dec26eeabdf70b4ff026f6be (patch)
tree00f02a34ccc02f9d772ecb1afcec98981cc6399b
parentf9acdb6edb7bc0c0b4d1a814283c7d908b0d4bba (diff)
Fix removal and deletion of the resizable() of Fl_Group
If the resizable() of an Fl_Group is deleted it is automatically removed from the group. New: to avoid dangling resizable() pointers the resizable widget is set to the group itself.
-rw-r--r--FL/Fl_Group.H10
-rw-r--r--src/Fl_Group.cxx1
2 files changed, 10 insertions, 1 deletions
diff --git a/FL/Fl_Group.H b/FL/Fl_Group.H
index 9f394c833..1f6240070 100644
--- a/FL/Fl_Group.H
+++ b/FL/Fl_Group.H
@@ -1,7 +1,7 @@
//
// Group header file for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2021 by Bill Spitzak and others.
+// Copyright 1998-2022 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
@@ -152,6 +152,14 @@ public:
dimensions of the box are scaled to the new size. Widgets outside the
box are moved.
+ \note The resizable of a group \b must be one of
+ - NULL
+ - the group itself
+ - a direct child of the group.
+ \note If you set any other widget that is not a direct child of the group as
+ its resizable then the behavior is undefined. This is \b not checked by
+ Fl_Group for historical reasons.
+
In these examples the gray area is the resizable:
\image html resizebox1.png
diff --git a/src/Fl_Group.cxx b/src/Fl_Group.cxx
index 99b442a4e..aa663919f 100644
--- a/src/Fl_Group.cxx
+++ b/src/Fl_Group.cxx
@@ -501,6 +501,7 @@ void Fl_Group::remove(int index) {
if (index < 0 || index >= children_) return;
Fl_Widget &o = *child(index);
if (&o == savedfocus_) savedfocus_ = 0;
+ if (&o == resizable_) resizable_ = this;
if (o.parent_ == this) { // this should always be true
o.parent_ = 0;
}