mirror of
https://github.com/fltk/fltk.git
synced 2026-02-06 08:21:40 +08:00
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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user