diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 2006-09-20 03:03:14 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 2006-09-20 03:03:14 +0000 |
| commit | 1d23087fc955e75c1a9cbab28f05e1575e6c071c (patch) | |
| tree | 89ebf6f3a73d7fcf889956b3dd1686a882ce83eb /src | |
| parent | 5be931cebd13db1ea3aab6234eaeb00e07ad467e (diff) | |
Fix inactive drawing of the new GTK+ box types.
Fix inactive drawing of Fl_Clock and Fl_Dial widgets.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5472 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Clock.cxx | 12 | ||||
| -rw-r--r-- | src/Fl_Dial.cxx | 23 | ||||
| -rw-r--r-- | src/fl_gtk.cxx | 42 |
3 files changed, 47 insertions, 30 deletions
diff --git a/src/Fl_Clock.cxx b/src/Fl_Clock.cxx index edb6749c4..7d724402e 100644 --- a/src/Fl_Clock.cxx +++ b/src/Fl_Clock.cxx @@ -3,7 +3,7 @@ // // Clock widget for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2005 by Bill Spitzak and others. +// Copyright 1998-2006 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public @@ -54,6 +54,10 @@ static void drawhand(double ang,const float v[][2],Fl_Color fill,Fl_Color line) } void Fl_Clock_Output::drawhands(Fl_Color fill, Fl_Color line) { + if (!active_r()) { + fill = fl_inactive(fill); + line = fl_inactive(line); + } drawhand(-360*(hour()+minute()/60.0)/12, hourhand, fill, line); drawhand(-360*(minute()+second()/60.0)/60, minhand, fill, line); drawhand(-360*(second()/60.0), sechand, fill, line); @@ -78,9 +82,9 @@ void Fl_Clock_Output::draw(int X, int Y, int W, int H) { fl_translate(X+W/2.0-.5, Y+H/2.0-.5); fl_scale((W-1)/28.0, (H-1)/28.0); if (type() == FL_ROUND_CLOCK) { - fl_color(color()); + fl_color(active_r() ? color() : fl_inactive(color())); fl_begin_polygon(); fl_circle(0,0,14); fl_end_polygon(); - fl_color(FL_FOREGROUND_COLOR); + fl_color(active_r() ? FL_FOREGROUND_COLOR : fl_inactive(FL_FOREGROUND_COLOR)); fl_begin_loop(); fl_circle(0,0,14); fl_end_loop(); } // draw the shadows: @@ -90,7 +94,7 @@ void Fl_Clock_Output::draw(int X, int Y, int W, int H) { fl_pop_matrix(); // draw the tick marks: fl_push_matrix(); - fl_color(FL_FOREGROUND_COLOR); // color was 52 + fl_color(active_r() ? FL_FOREGROUND_COLOR : fl_inactive(FL_FOREGROUND_COLOR)); for (int i=0; i<12; i++) { if (i==6) rect(-0.5, 9, 1, 2); else if (i==3 || i==0 || i== 9) rect(-0.5, 9.5, 1, 1); diff --git a/src/Fl_Dial.cxx b/src/Fl_Dial.cxx index de77cb268..3b76460d6 100644 --- a/src/Fl_Dial.cxx +++ b/src/Fl_Dial.cxx @@ -3,7 +3,7 @@ // // Circular dial widget for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2005 by Bill Spitzak and others. +// Copyright 1998-2006 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public @@ -44,25 +44,30 @@ void Fl_Dial::draw(int X, int Y, int W, int H) { // foo: draw this nicely in certain round box types int foo = (box() > _FL_ROUND_UP_BOX && Fl::box_dx(box())); if (foo) {X--; Y--; W+=2; H+=2;} - fl_color(color()); + if (active_r()) fl_color(color()); + else fl_color(fl_inactive(color())); fl_pie(X, Y, W, H, 270-a1, angle > a1 ? 360+270-angle : 270-360-angle); - fl_color(selection_color()); + if (active_r()) fl_color(selection_color()); + else fl_color(fl_inactive(selection_color())); fl_pie(X, Y, W, H, 270-angle, 270-a1); if (foo) { - fl_color(FL_FOREGROUND_COLOR); + if (active_r()) fl_color(FL_FOREGROUND_COLOR); + else fl_color(fl_inactive(FL_FOREGROUND_COLOR)); fl_arc(X, Y, W, H, 0, 360); } return; } if (!(damage()&FL_DAMAGE_ALL)) { - fl_color(color()); + if (active_r()) fl_color(color()); + else fl_color(fl_inactive(color())); fl_pie(X+1, Y+1, W-2, H-2, 0, 360); } fl_push_matrix(); fl_translate(X+W/2-.5, Y+H/2-.5); fl_scale(W-1, H-1); fl_rotate(45-angle); - fl_color(selection_color()); + if (active_r()) fl_color(selection_color()); + else fl_color(fl_inactive(selection_color())); if (type()) { // FL_LINE_DIAL fl_begin_polygon(); fl_vertex(0.0, 0.0); @@ -70,7 +75,8 @@ void Fl_Dial::draw(int X, int Y, int W, int H) { fl_vertex(-0.25, 0.25); fl_vertex(0.0, 0.04); fl_end_polygon(); - fl_color(FL_FOREGROUND_COLOR); + if (active_r()) fl_color(FL_FOREGROUND_COLOR); + else fl_color(fl_inactive(FL_FOREGROUND_COLOR)); fl_begin_loop(); fl_vertex(0.0, 0.0); fl_vertex(-0.04, 0.0); @@ -79,7 +85,8 @@ void Fl_Dial::draw(int X, int Y, int W, int H) { fl_end_loop(); } else { fl_begin_polygon(); fl_circle(-0.20, 0.20, 0.07); fl_end_polygon(); - fl_color(FL_FOREGROUND_COLOR); + if (active_r()) fl_color(FL_FOREGROUND_COLOR); + else fl_color(fl_inactive(FL_FOREGROUND_COLOR)); fl_begin_loop(); fl_circle(-0.20, 0.20, 0.07); fl_end_loop(); } fl_pop_matrix(); diff --git a/src/fl_gtk.cxx b/src/fl_gtk.cxx index cae03585f..fc6ca6160 100644 --- a/src/fl_gtk.cxx +++ b/src/fl_gtk.cxx @@ -38,12 +38,18 @@ extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*); +static void gtk_color(Fl_Color c) { + if (Fl::draw_box_active()) fl_color(c); + else fl_color(fl_inactive(c)); +} + + static void gtk_up_frame(int x, int y, int w, int h, Fl_Color c) { - fl_color(fl_color_average(FL_WHITE, c, 0.5)); + gtk_color(fl_color_average(FL_WHITE, c, 0.5)); fl_xyline(x + 2, y + 1, x + w - 3); fl_yxline(x + 1, y + 2, y + h - 4); - fl_color(fl_color_average(FL_BLACK, c, 0.5)); + gtk_color(fl_color_average(FL_BLACK, c, 0.5)); fl_begin_loop(); fl_vertex(x, y + 2); fl_vertex(x + 2, y); @@ -60,26 +66,26 @@ static void gtk_up_frame(int x, int y, int w, int h, Fl_Color c) { static void gtk_up_box(int x, int y, int w, int h, Fl_Color c) { gtk_up_frame(x, y, w, h, c); - fl_color(fl_color_average(FL_WHITE, c, 0.4)); + gtk_color(fl_color_average(FL_WHITE, c, 0.4)); fl_xyline(x + 2, y + 2, x + w - 3); - fl_color(fl_color_average(FL_WHITE, c, 0.2)); + gtk_color(fl_color_average(FL_WHITE, c, 0.2)); fl_xyline(x + 2, y + 3, x + w - 3); - fl_color(fl_color_average(FL_WHITE, c, 0.1)); + gtk_color(fl_color_average(FL_WHITE, c, 0.1)); fl_xyline(x + 2, y + 4, x + w - 3); - fl_color(c); + gtk_color(c); fl_rectf(x + 2, y + 5, w - 4, h - 7); - fl_color(fl_color_average(FL_BLACK, c, 0.025)); + gtk_color(fl_color_average(FL_BLACK, c, 0.025)); fl_xyline(x + 2, y + h - 4, x + w - 3); - fl_color(fl_color_average(FL_BLACK, c, 0.05)); + gtk_color(fl_color_average(FL_BLACK, c, 0.05)); fl_xyline(x + 2, y + h - 3, x + w - 3); - fl_color(fl_color_average(FL_BLACK, c, 0.1)); + gtk_color(fl_color_average(FL_BLACK, c, 0.1)); fl_xyline(x + 2, y + h - 2, x + w - 3); fl_yxline(x + w - 2, y + 2, y + h - 3); } -void gtk_down_frame(int x, int y, int w, int h, Fl_Color c) { - fl_color(fl_color_average(FL_BLACK, c, 0.5)); +static void gtk_down_frame(int x, int y, int w, int h, Fl_Color c) { + gtk_color(fl_color_average(FL_BLACK, c, 0.5)); fl_begin_loop(); fl_vertex(x, y + 2); fl_vertex(x + 2, y); @@ -91,28 +97,28 @@ void gtk_down_frame(int x, int y, int w, int h, Fl_Color c) { fl_vertex(x, y + h - 3); fl_end_loop(); - fl_color(fl_color_average(FL_BLACK, c, 0.1)); + gtk_color(fl_color_average(FL_BLACK, c, 0.1)); fl_xyline(x + 2, y + 1, x + w - 3); fl_yxline(x + 1, y + 2, y + h - 3); - fl_color(fl_color_average(FL_BLACK, c, 0.05)); + gtk_color(fl_color_average(FL_BLACK, c, 0.05)); fl_yxline(x + 2, y + h - 2, y + 2, x + w - 2); } -void gtk_down_box(int x, int y, int w, int h, Fl_Color c) { +static void gtk_down_box(int x, int y, int w, int h, Fl_Color c) { gtk_down_frame(x, y, w, h, c); - fl_color(c); + gtk_color(c); fl_rectf(x + 3, y + 3, w - 5, h - 4); fl_yxline(x + w - 2, y + 3, y + h - 3); } -void gtk_round_box(int x, int y, int w, int h, Fl_Color c) { - fl_color(c); +static void gtk_round_box(int x, int y, int w, int h, Fl_Color c) { + gtk_color(c); fl_pie(x, y, w, h, 0.0, 360.0); - fl_color(fl_color_average(FL_BLACK, c, 0.5)); + gtk_color(fl_color_average(FL_BLACK, c, 0.5)); fl_arc(x, y, w, h, 0.0, 360.0); } |
