diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2022-10-28 17:37:18 +0200 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2022-10-28 17:37:18 +0200 |
| commit | a918292547cfb154dec26eeabdf70b4ff026f6be (patch) | |
| tree | 00f02a34ccc02f9d772ecb1afcec98981cc6399b | |
| parent | f9acdb6edb7bc0c0b4d1a814283c7d908b0d4bba (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.H | 10 | ||||
| -rw-r--r-- | src/Fl_Group.cxx | 1 |
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; } |
