summaryrefslogtreecommitdiff
path: root/src/fl_rounded_box.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/fl_rounded_box.cxx')
-rw-r--r--src/fl_rounded_box.cxx23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/fl_rounded_box.cxx b/src/fl_rounded_box.cxx
index f1b351144..9b64f5265 100644
--- a/src/fl_rounded_box.cxx
+++ b/src/fl_rounded_box.cxx
@@ -62,20 +62,33 @@ static void fl_rshadow_box(int x, int y, int w, int h, Fl_Color c) {
fl_rounded_box(x, y, w, h, c);
}
-extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);
+void fl_rounded_focus(Fl_Boxtype bt, int x, int y, int w, int h, Fl_Color fg, Fl_Color bg) {
+ x += Fl::box_dx(bt);
+ y += Fl::box_dy(bt);
+ w -= Fl::box_dw(bt)+1;
+ h -= Fl::box_dh(bt)+1;
+ Fl_Color savecolor = fl_color();
+ fl_color(fl_contrast(fg, bg));
+ fl_line_style(FL_DOT);
+ rbox(0, x+1, y+1, w-1, h-1);
+ fl_line_style(FL_SOLID);
+ fl_color(savecolor);
+}
+
+extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*, Fl_Box_Draw_Focus_F* =NULL);
Fl_Boxtype fl_define_FL_ROUNDED_BOX() {
- fl_internal_boxtype(_FL_ROUNDED_FRAME, fl_rounded_frame);
- fl_internal_boxtype(_FL_ROUNDED_BOX, fl_rounded_box);
+ fl_internal_boxtype(_FL_ROUNDED_FRAME, fl_rounded_frame, fl_rounded_focus);
+ fl_internal_boxtype(_FL_ROUNDED_BOX, fl_rounded_box, fl_rounded_focus);
return _FL_ROUNDED_BOX;
}
Fl_Boxtype fl_define_FL_RFLAT_BOX() {
- fl_internal_boxtype(_FL_RFLAT_BOX, fl_rflat_box);
+ fl_internal_boxtype(_FL_RFLAT_BOX, fl_rflat_box, fl_rounded_focus);
return _FL_RFLAT_BOX;
}
Fl_Boxtype fl_define_FL_RSHADOW_BOX() {
- fl_internal_boxtype(_FL_RSHADOW_BOX, fl_rshadow_box);
+ fl_internal_boxtype(_FL_RSHADOW_BOX, fl_rshadow_box, fl_rounded_focus);
return _FL_RSHADOW_BOX;
}