From ab58971bcf9cedee6ecd131ca032087ff7d1623c Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Fri, 14 Jan 2022 17:17:09 +0100 Subject: Improve focus box drawing and documentation Add new method Fl_Widget::draw_focus(Fl_Boxtype t, int x, int y, int w, int h, Fl_Color bg) ... with background color for correct contrast testing (in Fl_Tabs) Draw the focus box of the "tabs" of Fl_Tabs widgets with the correct boxtype and background color. Make 'unsigned int visible_focus()' const so it can be used in 'const' methods. Do not draw the focus box if the per-widget focus box option is off. --- FL/Fl_Widget.H | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'FL/Fl_Widget.H') diff --git a/FL/Fl_Widget.H b/FL/Fl_Widget.H index 0745b9063..1c90848de 100644 --- a/FL/Fl_Widget.H +++ b/FL/Fl_Widget.H @@ -169,9 +169,28 @@ protected: void draw_box(Fl_Boxtype t, Fl_Color c) const; void draw_box(Fl_Boxtype t, int x,int y,int w,int h, Fl_Color c) const; void draw_backdrop() const; - /** draws a focus rectangle around the widget */ - void draw_focus() {draw_focus(box(),x(),y(),w(),h());} - void draw_focus(Fl_Boxtype t, int x,int y,int w,int h) const; + + /** Draws a focus rectangle around the widget. + This method uses the widget's boxtype and coordinates and its + background color color(). + \see Fl_Widget::draw_focus(Fl_Boxtype, int, int, int, int, Fl_Color) const + */ + void draw_focus() const { + draw_focus(box(), x(), y(), w(), h(), color()); + } + + /** Draws a focus rectangle around the widget. + This method uses the given boxtype and coordinates and the widget's + background color color(). + \see Fl_Widget::draw_focus(Fl_Boxtype, int, int, int, int, Fl_Color) const + */ + void draw_focus(Fl_Boxtype t, int X, int Y, int W, int H) const { + draw_focus(t, X, Y, W, H, color()); + + } + // See documentation in Fl_Widget.cxx + void draw_focus(Fl_Boxtype t, int x, int y, int w, int h, Fl_Color bg) const; + void draw_label() const; void draw_label(int, int, int, int) const; @@ -845,7 +864,7 @@ public: \retval 0 if this widget has no visible focus. \see visible_focus(int), set_visible_focus(), clear_visible_focus() */ - unsigned int visible_focus() { return flags_ & VISIBLE_FOCUS; } + unsigned int visible_focus() const { return flags_ & VISIBLE_FOCUS; } /** The default callback for all widgets that don't set a callback. -- cgit v1.2.3