summaryrefslogtreecommitdiff
path: root/src/dillo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/dillo.cc')
-rw-r--r--src/dillo.cc66
1 files changed, 35 insertions, 31 deletions
diff --git a/src/dillo.cc b/src/dillo.cc
index 5ad34e78..cef3e451 100644
--- a/src/dillo.cc
+++ b/src/dillo.cc
@@ -237,43 +237,47 @@ static void checkPreferredFonts()
checkFont(prefs.font_fantasy, "fantasy");
}
-static void setColorFLTK(int32_t color, void (*fn) (uchar, uchar, uchar))
+/*
+ * Set UI color. 'color' is an 0xrrggbb value, whereas 'default_val' is a fltk
+ * color (index 0-0xFF, or 0xrrggbb00).
+ */
+static void setUIColorWdef(Fl_Color idx, int32_t color, Fl_Color default_val)
{
if (color != -1)
- fn(color >> 16, (color >> 8) & 0xff, color & 0xff);
-}
-
-static void setColorPrefWdef(int32_t &color, int32_t default_val)
-{
- if (color == -1)
- color = default_val;
- else if (color == 0)
- color = FL_BLACK;
- else
- color <<= 8;
+ Fl::set_color(idx, color << 8);
+ else if (default_val != 0xFFFFFFFF)
+ Fl::set_color(idx, default_val);
}
static void setColors()
{
- unsigned rgb;
-
- setColorFLTK(prefs.ui_main_bg_color, Fl::background);
- setColorFLTK(prefs.ui_text_bg_color, Fl::background2);
- setColorFLTK(prefs.ui_fg_color, Fl::foreground);
-
- if (prefs.ui_selection_color == -1)
- rgb = Fl::get_color(fl_contrast(FL_SELECTION_COLOR,
- FL_BACKGROUND2_COLOR));
- else
- rgb = prefs.ui_selection_color << 8;
- Fl::set_color(FL_SELECTION_COLOR, rgb);
-
- setColorPrefWdef(prefs.ui_button_highlight_color,
- fl_lighter(FL_BACKGROUND_COLOR));
- setColorPrefWdef(prefs.ui_tab_active_bg_color, FL_BACKGROUND2_COLOR);
- setColorPrefWdef(prefs.ui_tab_bg_color, FL_BACKGROUND_COLOR);
- setColorPrefWdef(prefs.ui_tab_active_fg_color, FL_FOREGROUND_COLOR);
- setColorPrefWdef(prefs.ui_tab_fg_color, FL_FOREGROUND_COLOR);
+ /* The main background is a special case because Fl::background() will
+ * set the "gray ramp", which is a set of lighter and darker colors based
+ * on the main background and used for box edges and such.
+ */
+ if (prefs.ui_main_bg_color != -1) {
+ uchar r = prefs.ui_main_bg_color >> 16,
+ g = prefs.ui_main_bg_color >> 8 & 0xff,
+ b = prefs.ui_main_bg_color & 0xff;
+
+ Fl::background(r, g, b);
+ }
+
+ setUIColorWdef(FL_BACKGROUND2_COLOR, prefs.ui_text_bg_color, 0xFFFFFFFF);
+ setUIColorWdef(FL_FOREGROUND_COLOR, prefs.ui_fg_color, 0xFFFFFFFF);
+ setUIColorWdef(FL_SELECTION_COLOR, prefs.ui_selection_color,
+ fl_contrast(FL_SELECTION_COLOR, FL_BACKGROUND2_COLOR));
+ setUIColorWdef(PREFS_UI_BUTTON_HIGHLIGHT_COLOR,
+ prefs.ui_button_highlight_color,
+ fl_lighter(FL_BACKGROUND_COLOR));
+ setUIColorWdef(PREFS_UI_TAB_ACTIVE_BG_COLOR, prefs.ui_tab_active_bg_color,
+ Fl::get_color(FL_BACKGROUND2_COLOR));
+ setUIColorWdef(PREFS_UI_TAB_BG_COLOR, prefs.ui_tab_bg_color,
+ Fl::get_color(FL_BACKGROUND_COLOR));
+ setUIColorWdef(PREFS_UI_TAB_ACTIVE_FG_COLOR, prefs.ui_tab_active_fg_color,
+ Fl::get_color(FL_FOREGROUND_COLOR));
+ setUIColorWdef(PREFS_UI_TAB_FG_COLOR, prefs.ui_tab_fg_color,
+ Fl::get_color(FL_FOREGROUND_COLOR));
}
/*