From 403ee0ce23a0c62ffec254448a327bcc8158b34e Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sat, 18 Dec 2010 15:31:44 +0000 Subject: [PATCH] Fixed Fl_Tabs selection border drawing, if tabs are at the bottom of the widget (STR #2480). Thanks for the patch. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8053 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 2 ++ CREDITS | 1 + src/Fl_Tabs.cxx | 14 ++++++-------- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 4dfdc7975..a59df3605 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,7 @@ CHANGES IN FLTK 1.3.0 + - Fixed Fl_Tabs selection border drawing, if tabs are at the bottom + of the widget (STR #2480) - Much faster fl_read_image() for Windows (STR #2387). - Added general Options dialog (STR #2471) - Fixed Compiling with mingw-w64 (STR #2308). diff --git a/CREDITS b/CREDITS index 0dee8118a..8129c98bc 100644 --- a/CREDITS +++ b/CREDITS @@ -37,6 +37,7 @@ OTHER CONTRIBUTORS Paul Chambers Stephen Davies Yuri D'Elia + Domingo Alvarez Duarte Greg Ercolano Yuri Fedorchenko George Garvey diff --git a/src/Fl_Tabs.cxx b/src/Fl_Tabs.cxx index c62b2478e..6f1c3674b 100644 --- a/src/Fl_Tabs.cxx +++ b/src/Fl_Tabs.cxx @@ -40,6 +40,7 @@ #define BORDER 2 #define EXTRASPACE 10 +#define SELECTION_BORDER 5 // return the left edges of each tab (plus a fake left edge for a tab // past the right-hand one). These position are actually of the left @@ -311,14 +312,11 @@ void Fl_Tabs::draw() { draw_box(box(), x(), y()+(H>=0?H:0), w(), h()-(H>=0?H:-H), c); if (selection_color() != c) { - // Draw the top 5 lines of the tab pane in the selection color so - // that the user knows which tab is selected... - if (H >= 0) fl_push_clip(x(), y() + H, w(), 5); - else fl_push_clip(x(), y() + h() - H - 4, w(), 5); - - draw_box(box(), x(), y()+(H>=0?H:0), w(), h()-(H>=0?H:-H), - selection_color()); - + // Draw the top or bottom SELECTION_BORDER lines of the tab pane in the + // selection color so that the user knows which tab is selected... + int clip_y = (H >= 0) ? y() + H : y() + h() + H - SELECTION_BORDER; + fl_push_clip(x(), clip_y, w(), SELECTION_BORDER); + draw_box(box(), x(), clip_y, w(), SELECTION_BORDER, selection_color()); fl_pop_clip(); } if (v) draw_child(*v);