summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2006-09-20 03:03:14 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2006-09-20 03:03:14 +0000
commit1d23087fc955e75c1a9cbab28f05e1575e6c071c (patch)
tree89ebf6f3a73d7fcf889956b3dd1686a882ce83eb
parent5be931cebd13db1ea3aab6234eaeb00e07ad467e (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
-rw-r--r--src/Fl_Clock.cxx12
-rw-r--r--src/Fl_Dial.cxx23
-rw-r--r--src/fl_gtk.cxx42
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);
}