aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dillo.cc66
-rw-r--r--src/prefs.h7
-rw-r--r--src/tipwin.cc2
-rw-r--r--src/uicmd.cc16
4 files changed, 49 insertions, 42 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));
}
/*
diff --git a/src/prefs.h b/src/prefs.h
index 2b0f15e4..c7a04a9a 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -23,6 +23,13 @@ extern "C" {
#define PREFS_GEOMETRY_DEFAULT_XPOS -9999
#define PREFS_GEOMETRY_DEFAULT_YPOS -9999
+/* FLTK has free color indices from 16 to 31 */
+#define PREFS_UI_BUTTON_HIGHLIGHT_COLOR 16
+#define PREFS_UI_TAB_ACTIVE_BG_COLOR 17
+#define PREFS_UI_TAB_ACTIVE_FG_COLOR 18
+#define PREFS_UI_TAB_BG_COLOR 19
+#define PREFS_UI_TAB_FG_COLOR 20
+
/* Panel sizes */
enum { P_tiny = 0, P_small, P_medium };
diff --git a/src/tipwin.cc b/src/tipwin.cc
index b3d18f27..100eb1c0 100644
--- a/src/tipwin.cc
+++ b/src/tipwin.cc
@@ -174,7 +174,7 @@ CustButton::CustButton(int x, int y, int w, int h, const char *l) :
TipWinButton(x,y,w,h,l)
{
norm_color = color();
- light_color = prefs.ui_button_highlight_color;
+ light_color = PREFS_UI_BUTTON_HIGHLIGHT_COLOR;
}
int CustButton::handle(int e)
diff --git a/src/uicmd.cc b/src/uicmd.cc
index be2359da..153d5fb4 100644
--- a/src/uicmd.cc
+++ b/src/uicmd.cc
@@ -110,7 +110,6 @@ class CustTabs : public Fl_Group {
Fl_Pack *Pack;
Fl_Group *Control;
CustButton *CloseBtn;
- int tabcolor_inactive, tabcolor_active;
void update_pack_offset(void);
void resize(int x, int y, int w, int h)
@@ -138,8 +137,6 @@ public:
Pack = NULL;
focus_counter = 0;
tab_w = 50, tab_h = th, ctab_h = 1, btn_w = 20, ctl_w = 1*btn_w+2;
- tabcolor_active = prefs.ui_tab_active_bg_color;
- tabcolor_inactive = prefs.ui_tab_bg_color;
resize(0,0,ww,ctab_h);
/* tab buttons go inside a pack within a scroll */
Scroll = new Fl_Scroll(0,0,ww-ctl_w,ctab_h);
@@ -283,9 +280,8 @@ UI *CustTabs::add_new_tab(UI *old_ui, int focus)
btn->copy_label(DEFAULT_TAB_LABEL);
btn->clear_visible_focus();
btn->box(FL_GTK_THIN_UP_BOX);
- btn->color(focus ? tabcolor_active : tabcolor_inactive);
- btn->labelcolor(focus ? prefs.ui_tab_active_fg_color :
- prefs.ui_tab_fg_color);
+ btn->color(focus ? PREFS_UI_TAB_ACTIVE_BG_COLOR : PREFS_UI_TAB_BG_COLOR);
+ btn->labelcolor(focus ? PREFS_UI_TAB_ACTIVE_FG_COLOR:PREFS_UI_TAB_FG_COLOR);
btn->ui(new_ui);
btn->callback(tab_btn_cb, this);
Pack->add(btn); // append
@@ -413,8 +409,8 @@ void CustTabs::switch_tab(CustTabButton *cbtn)
// Set old tab label to normal color
if ((idx = get_btn_idx(old_ui)) != -1) {
btn = (CustTabButton*)Pack->child(idx);
- btn->color(tabcolor_inactive);
- btn->labelcolor(prefs.ui_tab_fg_color);
+ btn->color(PREFS_UI_TAB_BG_COLOR);
+ btn->labelcolor(PREFS_UI_TAB_FG_COLOR);
btn->redraw();
}
/* We make a point of calling show() before value() is changed because
@@ -428,8 +424,8 @@ void CustTabs::switch_tab(CustTabButton *cbtn)
*/
cbtn->ui()->show();
Wizard->value(cbtn->ui());
- cbtn->color(tabcolor_active);
- cbtn->labelcolor(prefs.ui_tab_active_fg_color);
+ cbtn->color(PREFS_UI_TAB_ACTIVE_BG_COLOR);
+ cbtn->labelcolor(PREFS_UI_TAB_ACTIVE_FG_COLOR);
cbtn->redraw();
update_pack_offset();