summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Browser.cxx3
-rw-r--r--src/Fl_Browser_.cxx9
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;