Skip to content

Commit

Permalink
Fixing STR #2786; clipping problem with child FLTK widgets.
Browse files Browse the repository at this point in the history
Replication: Run 'tree' demo, open '500 items' subtree, change 'connector width' to 100..
the "D2" and "ccc" buttons would overdraw the scrollbar. (Not the regular tree items)


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@9197 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
  • Loading branch information
erco77 committed Dec 6, 2011
1 parent d250e21 commit 272475d
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
2 changes: 2 additions & 0 deletions FL/Fl_Tree.H
Expand Up @@ -199,6 +199,8 @@ class FL_EXPORT Fl_Tree : public Fl_Group {
Fl_Tree_Prefs _prefs; // all the tree's settings
int _scrollbar_size; // size of scrollbar trough

void fix_scrollbar_order();

protected:
Fl_Scrollbar *_vscroll; ///< Vertical scrollbar
void item_clicked(Fl_Tree_Item* val);
Expand Down
17 changes: 16 additions & 1 deletion src/Fl_Tree.cxx
Expand Up @@ -329,6 +329,7 @@ int Fl_Tree::handle(int e) {

/// Standard FLTK draw() method, handles draws the tree widget.
void Fl_Tree::draw() {
fix_scrollbar_order();
// Let group draw box+label but *NOT* children.
// We handle drawing children ourselves by calling each item's draw()
//
Expand Down Expand Up @@ -381,9 +382,11 @@ void Fl_Tree::draw() {
_vscroll->hide();
}
}
fl_push_clip(cx,cy,cw,ch);
// Draw children
fl_push_clip(cx,cy,cw-(_vscroll->visible()?_vscroll->w():0),ch);
Fl_Group::draw_children(); // draws any FLTK children set via Fl_Tree::widget()
fl_pop_clip();
draw_child(*_vscroll); // draw scroll last
}

/// Print the tree as 'ascii art' to stdout.
Expand Down Expand Up @@ -1758,6 +1761,18 @@ void Fl_Tree::load(Fl_Preferences &prefs)
}
}

/// Ensure the scrollbars are the last children
void Fl_Tree::fix_scrollbar_order() {
Fl_Widget** a = (Fl_Widget**)array();
if (a[children()-1] != _vscroll) {
int i,j;
for (i = j = 0; j < children(); j++) {
if (a[j] != _vscroll) a[i++] = a[j];
}
a[i++] = _vscroll;
}
}

//
// End of "$Id$".
//

0 comments on commit 272475d

Please sign in to comment.