summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2013-01-02 23:41:10 +0000
committercorvid <corvid@lavabit.com>2013-01-02 23:41:10 +0000
commit93e772ac635f029405443cfc1eab60a111ff83f9 (patch)
tree77ca1f456f9562339009351dd7d9c00a375adeda
parent1474914cb55657253ffbbe8737bff7086dd2ed05 (diff)
throw in some more UI colors to play with
-rw-r--r--dillorc7
-rw-r--r--src/dillo.cc44
-rw-r--r--src/prefs.c6
-rw-r--r--src/prefs.h6
-rw-r--r--src/prefsparser.cc7
-rw-r--r--src/tipwin.cc2
-rw-r--r--src/uicmd.cc12
7 files changed, 68 insertions, 16 deletions
diff --git a/dillorc b/dillorc
index 7adb2f18..e1dae006 100644
--- a/dillorc
+++ b/dillorc
@@ -211,6 +211,13 @@ search_url="Google http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=%s"
# ui_fg_color=black
# ui_main_bg_color=silver
# ui_text_bg_color=white
+# ui_selection_color
+# ui_button_highlight_color
+# ui_tab_active_bg_color
+# ui_tab_bg_color
+# ui_tab_active_fg_color
+# ui_tab_fg_color
+
# Set the page background color
# bg_color=gray
diff --git a/src/dillo.cc b/src/dillo.cc
index faad050f..80d0c949 100644
--- a/src/dillo.cc
+++ b/src/dillo.cc
@@ -237,12 +237,45 @@ static void checkPreferredFonts()
checkFont(prefs.font_fantasy, "fantasy");
}
-static void setColor(int32_t color, void (*fn) (uchar, uchar, uchar))
+static void setColorFLTK(int32_t color, void (*fn) (uchar, uchar, uchar))
{
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;
+}
+
+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, prefs.ui_fg_color);
+ setColorPrefWdef(prefs.ui_tab_fg_color, prefs.ui_fg_color);
+}
+
/*
* Given a command line argument, build a DilloUrl for it.
*/
@@ -388,14 +421,7 @@ int main(int argc, char **argv)
Fl_Window::default_xclass("dillo");
Fl::scheme(prefs.theme);
-
- setColor(prefs.ui_main_bg_color, Fl::background);
- setColor(prefs.ui_text_bg_color, Fl::background2);
- setColor(prefs.ui_fg_color, Fl::foreground);
-
- unsigned rgb = Fl::get_color(fl_contrast(FL_SELECTION_COLOR,
- FL_BACKGROUND2_COLOR));
- Fl::set_color(FL_SELECTION_COLOR, rgb);
+ setColors();
if (!prefs.show_tooltip) {
// turn off UI tooltips
diff --git a/src/prefs.c b/src/prefs.c
index 3ad65832..9295d87e 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -99,8 +99,14 @@ void a_Prefs_init(void)
prefs.small_icons = FALSE;
prefs.start_page = a_Url_new(PREFS_START_PAGE, NULL);
prefs.theme = dStrdup(PREFS_THEME);
+ prefs.ui_button_highlight_color = -1;
prefs.ui_fg_color = -1;
prefs.ui_main_bg_color = -1;
+ prefs.ui_selection_color = -1;
+ prefs.ui_tab_active_bg_color = -1;
+ prefs.ui_tab_bg_color = -1;
+ prefs.ui_tab_active_fg_color = -1;
+ prefs.ui_tab_fg_color = -1;
prefs.ui_text_bg_color = -1;
prefs.w3c_plus_heuristics = TRUE;
diff --git a/src/prefs.h b/src/prefs.h
index 22af91fd..68bf773a 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -44,8 +44,14 @@ struct _DilloPrefs {
DilloUrl *home;
bool_t allow_white_bg;
int32_t bg_color;
+ int32_t ui_button_highlight_color;
int32_t ui_fg_color;
int32_t ui_main_bg_color;
+ int32_t ui_selection_color;
+ int32_t ui_tab_active_bg_color;
+ int32_t ui_tab_active_fg_color;
+ int32_t ui_tab_bg_color;
+ int32_t ui_tab_fg_color;
int32_t ui_text_bg_color;
bool_t contrast_visited_color;
bool_t show_tooltip;
diff --git a/src/prefsparser.cc b/src/prefsparser.cc
index eef93ea1..55c5b5e4 100644
--- a/src/prefsparser.cc
+++ b/src/prefsparser.cc
@@ -109,8 +109,15 @@ int PrefsParser::parseOption(char *name, char *value)
{ "small_icons", &prefs.small_icons, PREFS_BOOL },
{ "start_page", &prefs.start_page, PREFS_URL },
{ "theme", &prefs.theme, PREFS_STRING },
+ { "ui_button_highlight_color", &prefs.ui_button_highlight_color,
+ PREFS_COLOR },
{ "ui_fg_color", &prefs.ui_fg_color, PREFS_COLOR },
{ "ui_main_bg_color", &prefs.ui_main_bg_color, PREFS_COLOR },
+ { "ui_selection_color", &prefs.ui_selection_color, PREFS_COLOR },
+ { "ui_tab_active_bg_color", &prefs.ui_tab_active_bg_color, PREFS_COLOR },
+ { "ui_tab_bg_color", &prefs.ui_tab_bg_color, PREFS_COLOR },
+ { "ui_tab_active_fg_color", &prefs.ui_tab_active_fg_color, PREFS_COLOR },
+ { "ui_tab_fg_color", &prefs.ui_tab_fg_color, PREFS_COLOR },
{ "ui_text_bg_color", &prefs.ui_text_bg_color, PREFS_COLOR },
{ "w3c_plus_heuristics", &prefs.w3c_plus_heuristics, PREFS_BOOL },
{ "penalty_hyphen", &prefs.penalty_hyphen, PREFS_FRACTION_100 },
diff --git a/src/tipwin.cc b/src/tipwin.cc
index 960571a1..b3d18f27 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 = fl_lighter(norm_color);
+ light_color = prefs.ui_button_highlight_color;
}
int CustButton::handle(int e)
diff --git a/src/uicmd.cc b/src/uicmd.cc
index ea813425..54efa7a4 100644
--- a/src/uicmd.cc
+++ b/src/uicmd.cc
@@ -137,8 +137,8 @@ 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 = fl_lighter(FL_BACKGROUND_COLOR);
- tabcolor_inactive = fl_darker(FL_BACKGROUND_COLOR);
+ 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,8 +283,8 @@ UI *CustTabs::add_new_tab(UI *old_ui, int focus)
btn->clear_visible_focus();
btn->box(FL_GTK_THIN_UP_BOX);
btn->color(focus ? tabcolor_active : tabcolor_inactive);
- btn->labelcolor(fl_contrast(FL_FOREGROUND_COLOR,
- focus ? tabcolor_active : tabcolor_inactive));
+ 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,7 +413,7 @@ void CustTabs::switch_tab(CustTabButton *cbtn)
if ((idx = get_btn_idx(old_ui)) != -1) {
btn = (CustTabButton*)Pack->child(idx);
btn->color(tabcolor_inactive);
- btn->labelcolor(fl_contrast(FL_FOREGROUND_COLOR, tabcolor_inactive));
+ btn->labelcolor(prefs.ui_tab_fg_color);
btn->redraw();
}
/* We make a point of calling show() before value() is changed because
@@ -428,7 +428,7 @@ void CustTabs::switch_tab(CustTabButton *cbtn)
cbtn->ui()->show();
Wizard->value(cbtn->ui());
cbtn->color(tabcolor_active);
- cbtn->labelcolor(fl_contrast(FL_FOREGROUND_COLOR, tabcolor_active));
+ cbtn->labelcolor(prefs.ui_tab_active_fg_color);
cbtn->redraw();
update_pack_offset();