mirror of
https://github.com/fltk/fltk.git
synced 2026-05-24 00:06:20 +08:00
Fix Fl_Group::insert() and Fl_Scroll::on_move()
This commit is contained in:
+5
-2
@@ -513,8 +513,11 @@ void Fl_Group::insert(Fl_Widget &o, int index) {
|
||||
if (g == this) {
|
||||
// avoid expensive remove() and add() if we just move a widget within the group
|
||||
index = on_move(n, index);
|
||||
if ((index == n) || (index < 0)) return; // this includes (children_ == 1)
|
||||
if (index >= children_) index = children_ - 1;
|
||||
if (index < 0) return; // don't move: requested by subclass
|
||||
if (index > children_)
|
||||
index = children_;
|
||||
if (index > n) index--; // compensate for removal and re-insertion
|
||||
if (index == n) return; // same position; this includes (children_ == 1)
|
||||
if (index > n)
|
||||
memmove(array_+n, array_+(n+1), (index-n) * sizeof(Fl_Widget*));
|
||||
else
|
||||
|
||||
+4
-5
@@ -113,13 +113,12 @@ int Fl_Scroll::on_insert(Fl_Widget *candidate, int index) {
|
||||
Fl_Group calls this when a widget is moved within the list of children.
|
||||
We return a new index if the widget would be moved after the scrollbars.
|
||||
|
||||
\param oldIndex the current index of the child that will be moved
|
||||
\param newIndex the new index of the child
|
||||
\param old_index the current index of the child that will be moved
|
||||
\param new_index the new index of the child
|
||||
\return new index, possibly corrected to avoid last two scrollbar entries
|
||||
*/
|
||||
int Fl_Scroll::on_move(int oldIndex, int newIndex) {
|
||||
// Compensate index for the widget that will be removed before it re-inserted
|
||||
return on_insert( child(oldIndex), newIndex+1 ) - 1;
|
||||
int Fl_Scroll::on_move(int old_index, int new_index) {
|
||||
return on_insert(child(old_index), new_index);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user