diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Browser.cxx | 3 | ||||
| -rw-r--r-- | src/Fl_Browser_.cxx | 9 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/Fl_Browser.cxx b/src/Fl_Browser.cxx index 96f2dfe05..03c43d82b 100644 --- a/src/Fl_Browser.cxx +++ b/src/Fl_Browser.cxx @@ -503,6 +503,7 @@ int Fl_Browser::value() const { void Fl_Browser::swap(FL_BLINE *a, FL_BLINE *b) { if ( a == b || !a || !b) return; // nothing to do + swapping(a, b); FL_BLINE *aprev = a->prev; FL_BLINE *anext = a->next; FL_BLINE *bprev = b->prev; @@ -535,8 +536,6 @@ void Fl_Browser::swap(FL_BLINE *a, FL_BLINE *b) { } // Disable cache -- we played around with positions cacheline = 0; - // Redraw modified lines - redraw_lines(); } void Fl_Browser::swap(int ai, int bi) { diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx index 8f51318fe..8637e9cba 100644 --- a/src/Fl_Browser_.cxx +++ b/src/Fl_Browser_.cxx @@ -470,6 +470,15 @@ void Fl_Browser_::replacing(void* a, void* b) { if (a == max_width_item) {max_width_item = 0; max_width = 0;} } +void Fl_Browser_::swapping(void* a, void* b) { + redraw_line(a); + redraw_line(b); + if (a == selection_) selection_ = b; + else if (b == selection_) selection_ = a; + if (a == top_) top_ = b; + else if (b == top_) top_ = a; +} + void Fl_Browser_::inserting(void* a, void* b) { if (displayed(a)) redraw_lines(); if (a == top_) top_ = b; |
