Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions doc/man/mc.1.in
Original file line number Diff line number Diff line change
Expand Up @@ -3650,9 +3650,9 @@ is used for popup menu title.
The possible colors are: black, gray, red, brightred, green,
brightgreen, brown, yellow, blue, brightblue, magenta, brightmagenta,
cyan, brightcyan, lightgray and white; as well as "default" for the terminal's
default foreground or background color. Another special keyword "base" means mc's main
colors. When 256 colors are available, they can be specified either as
color16 to color255, or as rgb000 to rgb555 and gray0 to gray23. Example:
default foreground or background color. When 256 colors are available, they
can be specified either as color16 to color255, or as rgb000 to rgb555 and
gray0 to gray23. Example:
.PP
.nf
[Colors]
Expand Down
4 changes: 2 additions & 2 deletions lib/filehighlight/get-color.c
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ mc_fhl_get_color (const mc_fhl_t *fhl, const file_entry_t *fe)
int ret;

if (fhl == NULL)
return CORE_NORMAL_COLOR;
return CORE_DEFAULT_COLOR;

for (i = 0; i < fhl->filters->len; i++)
{
Expand All @@ -306,7 +306,7 @@ mc_fhl_get_color (const mc_fhl_t *fhl, const file_entry_t *fe)
break;
}
}
return CORE_NORMAL_COLOR;
return CORE_DEFAULT_COLOR;
}

/* --------------------------------------------------------------------------------------------- */
164 changes: 83 additions & 81 deletions lib/skin.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,111 +14,113 @@

/* cache often used colors */
#define CORE_DEFAULT_COLOR mc_skin_color__cache[0]
#define CORE_NORMAL_COLOR mc_skin_color__cache[1]
#define CORE_MARKED_COLOR mc_skin_color__cache[2]
#define CORE_SELECTED_COLOR mc_skin_color__cache[3]
#define CORE_MARKED_SELECTED_COLOR mc_skin_color__cache[4]
#define CORE_DISABLED_COLOR mc_skin_color__cache[5]
#define CORE_REVERSE_COLOR mc_skin_color__cache[6]
#define CORE_COMMAND_MARK_COLOR mc_skin_color__cache[7]
#define CORE_HEADER_COLOR mc_skin_color__cache[8]
#define CORE_SHADOW_COLOR mc_skin_color__cache[9]
#define CORE_FRAME_COLOR mc_skin_color__cache[10]
#define CORE_MARKED_COLOR mc_skin_color__cache[1]
#define CORE_SELECTED_COLOR mc_skin_color__cache[2]
#define CORE_MARKED_SELECTED_COLOR mc_skin_color__cache[3]
#define CORE_DISABLED_COLOR mc_skin_color__cache[4]
#define CORE_REVERSE_COLOR mc_skin_color__cache[5]
#define CORE_HINTBAR_COLOR mc_skin_color__cache[6]
#define CORE_PROMPT_COLOR mc_skin_color__cache[7]
#define CORE_COMMAND_COLOR mc_skin_color__cache[8]
#define CORE_COMMAND_MARK_COLOR mc_skin_color__cache[9]
#define CORE_HEADER_COLOR mc_skin_color__cache[10]
#define CORE_SHADOW_COLOR mc_skin_color__cache[11]
#define CORE_FRAME_COLOR mc_skin_color__cache[12]

/* Dialog colors */
#define DIALOG_NORMAL_COLOR mc_skin_color__cache[11]
#define DIALOG_FOCUS_COLOR mc_skin_color__cache[12]
#define DIALOG_HOT_NORMAL_COLOR mc_skin_color__cache[13]
#define DIALOG_HOT_FOCUS_COLOR mc_skin_color__cache[14]
#define DIALOG_SELECTED_NORMAL_COLOR mc_skin_color__cache[15]
#define DIALOG_SELECTED_FOCUS_COLOR mc_skin_color__cache[16]
#define DIALOG_TITLE_COLOR mc_skin_color__cache[17]
#define DIALOG_FRAME_COLOR mc_skin_color__cache[18]
#define DIALOG_NORMAL_COLOR mc_skin_color__cache[13]
#define DIALOG_FOCUS_COLOR mc_skin_color__cache[14]
#define DIALOG_HOT_NORMAL_COLOR mc_skin_color__cache[15]
#define DIALOG_HOT_FOCUS_COLOR mc_skin_color__cache[16]
#define DIALOG_SELECTED_NORMAL_COLOR mc_skin_color__cache[17]
#define DIALOG_SELECTED_FOCUS_COLOR mc_skin_color__cache[18]
#define DIALOG_TITLE_COLOR mc_skin_color__cache[19]
#define DIALOG_FRAME_COLOR mc_skin_color__cache[20]

/* Error dialog colors */
#define ERROR_NORMAL_COLOR mc_skin_color__cache[19]
#define ERROR_FOCUS_COLOR mc_skin_color__cache[20]
#define ERROR_HOT_NORMAL_COLOR mc_skin_color__cache[21]
#define ERROR_HOT_FOCUS_COLOR mc_skin_color__cache[22]
#define ERROR_TITLE_COLOR mc_skin_color__cache[23]
#define ERROR_FRAME_COLOR mc_skin_color__cache[24]
#define ERROR_NORMAL_COLOR mc_skin_color__cache[21]
#define ERROR_FOCUS_COLOR mc_skin_color__cache[22]
#define ERROR_HOT_NORMAL_COLOR mc_skin_color__cache[23]
#define ERROR_HOT_FOCUS_COLOR mc_skin_color__cache[24]
#define ERROR_TITLE_COLOR mc_skin_color__cache[25]
#define ERROR_FRAME_COLOR mc_skin_color__cache[26]

/* Menu colors */
#define MENU_ENTRY_COLOR mc_skin_color__cache[25]
#define MENU_SELECTED_COLOR mc_skin_color__cache[26]
#define MENU_HOT_COLOR mc_skin_color__cache[27]
#define MENU_HOTSEL_COLOR mc_skin_color__cache[28]
#define MENU_INACTIVE_COLOR mc_skin_color__cache[29]
#define MENU_FRAME_COLOR mc_skin_color__cache[30]
#define MENU_ENTRY_COLOR mc_skin_color__cache[27]
#define MENU_SELECTED_COLOR mc_skin_color__cache[28]
#define MENU_HOT_COLOR mc_skin_color__cache[29]
#define MENU_HOTSEL_COLOR mc_skin_color__cache[30]
#define MENU_INACTIVE_COLOR mc_skin_color__cache[31]
#define MENU_FRAME_COLOR mc_skin_color__cache[32]

/* Popup menu colors */
#define PMENU_ENTRY_COLOR mc_skin_color__cache[31]
#define PMENU_SELECTED_COLOR mc_skin_color__cache[32]
#define PMENU_HOT_COLOR mc_skin_color__cache[33] // unused: not implemented yet
#define PMENU_HOTSEL_COLOR mc_skin_color__cache[34] // unused: not implemented yet
#define PMENU_TITLE_COLOR mc_skin_color__cache[35]
#define PMENU_FRAME_COLOR mc_skin_color__cache[36]
#define PMENU_ENTRY_COLOR mc_skin_color__cache[33]
#define PMENU_SELECTED_COLOR mc_skin_color__cache[34]
#define PMENU_HOT_COLOR mc_skin_color__cache[35] // unused: not implemented yet
#define PMENU_HOTSEL_COLOR mc_skin_color__cache[36] // unused: not implemented yet
#define PMENU_TITLE_COLOR mc_skin_color__cache[37]
#define PMENU_FRAME_COLOR mc_skin_color__cache[38]

#define BUTTONBAR_HOTKEY_COLOR mc_skin_color__cache[37]
#define BUTTONBAR_BUTTON_COLOR mc_skin_color__cache[38]
#define BUTTONBAR_HOTKEY_COLOR mc_skin_color__cache[39]
#define BUTTONBAR_BUTTON_COLOR mc_skin_color__cache[40]

#define STATUSBAR_COLOR mc_skin_color__cache[39]
#define STATUSBAR_COLOR mc_skin_color__cache[41]

/*
* This should be selectable independently. Default has to be black background
* foreground does not matter at all.
*/
#define CORE_GAUGE_COLOR mc_skin_color__cache[40]
#define CORE_INPUT_COLOR mc_skin_color__cache[41]
#define CORE_INPUT_UNCHANGED_COLOR mc_skin_color__cache[42]
#define CORE_INPUT_MARK_COLOR mc_skin_color__cache[43]
#define CORE_INPUT_HISTORY_COLOR mc_skin_color__cache[44]
#define CORE_COMMAND_HISTORY_COLOR mc_skin_color__cache[45]

#define HELP_NORMAL_COLOR mc_skin_color__cache[46]
#define HELP_ITALIC_COLOR mc_skin_color__cache[47]
#define HELP_BOLD_COLOR mc_skin_color__cache[48]
#define HELP_LINK_COLOR mc_skin_color__cache[49]
#define HELP_SLINK_COLOR mc_skin_color__cache[50]
#define HELP_TITLE_COLOR mc_skin_color__cache[51]
#define HELP_FRAME_COLOR mc_skin_color__cache[52]

#define VIEWER_NORMAL_COLOR mc_skin_color__cache[53]
#define VIEWER_BOLD_COLOR mc_skin_color__cache[54]
#define VIEWER_UNDERLINED_COLOR mc_skin_color__cache[55]
#define VIEWER_BOLD_UNDERLINED_COLOR mc_skin_color__cache[56]
#define VIEWER_SELECTED_COLOR mc_skin_color__cache[57]
#define VIEWER_FRAME_COLOR mc_skin_color__cache[58]
#define CORE_GAUGE_COLOR mc_skin_color__cache[42]
#define CORE_INPUT_COLOR mc_skin_color__cache[43]
#define CORE_INPUT_UNCHANGED_COLOR mc_skin_color__cache[44]
#define CORE_INPUT_MARK_COLOR mc_skin_color__cache[45]
#define CORE_INPUT_HISTORY_COLOR mc_skin_color__cache[46]
#define CORE_COMMAND_HISTORY_COLOR mc_skin_color__cache[47]

#define HELP_NORMAL_COLOR mc_skin_color__cache[48]
#define HELP_ITALIC_COLOR mc_skin_color__cache[49]
#define HELP_BOLD_COLOR mc_skin_color__cache[50]
#define HELP_LINK_COLOR mc_skin_color__cache[51]
#define HELP_SLINK_COLOR mc_skin_color__cache[52]
#define HELP_TITLE_COLOR mc_skin_color__cache[53]
#define HELP_FRAME_COLOR mc_skin_color__cache[54]

#define VIEWER_NORMAL_COLOR mc_skin_color__cache[55]
#define VIEWER_BOLD_COLOR mc_skin_color__cache[56]
#define VIEWER_UNDERLINED_COLOR mc_skin_color__cache[57]
#define VIEWER_BOLD_UNDERLINED_COLOR mc_skin_color__cache[58]
#define VIEWER_SELECTED_COLOR mc_skin_color__cache[59]
#define VIEWER_FRAME_COLOR mc_skin_color__cache[60]

/*
* editor colors - only 4 for normal, search->found, select, and whitespace
* respectively
* Last is defined to view color.
*/
#define EDITOR_NORMAL_COLOR mc_skin_color__cache[59]
#define EDITOR_NONPRINTABLE_COLOR mc_skin_color__cache[60]
#define EDITOR_BOLD_COLOR mc_skin_color__cache[61]
#define EDITOR_MARKED_COLOR mc_skin_color__cache[62]
#define EDITOR_WHITESPACE_COLOR mc_skin_color__cache[63]
#define EDITOR_RIGHT_MARGIN_COLOR mc_skin_color__cache[64]
#define EDITOR_BACKGROUND_COLOR mc_skin_color__cache[65]
#define EDITOR_FRAME_COLOR mc_skin_color__cache[66]
#define EDITOR_FRAME_ACTIVE_COLOR mc_skin_color__cache[67]
#define EDITOR_FRAME_DRAG_COLOR mc_skin_color__cache[68]
#define EDITOR_NORMAL_COLOR mc_skin_color__cache[61]
#define EDITOR_NONPRINTABLE_COLOR mc_skin_color__cache[62]
#define EDITOR_BOLD_COLOR mc_skin_color__cache[63]
#define EDITOR_MARKED_COLOR mc_skin_color__cache[64]
#define EDITOR_WHITESPACE_COLOR mc_skin_color__cache[65]
#define EDITOR_RIGHT_MARGIN_COLOR mc_skin_color__cache[66]
#define EDITOR_BACKGROUND_COLOR mc_skin_color__cache[67]
#define EDITOR_FRAME_COLOR mc_skin_color__cache[68]
#define EDITOR_FRAME_ACTIVE_COLOR mc_skin_color__cache[69]
#define EDITOR_FRAME_DRAG_COLOR mc_skin_color__cache[70]
/* color of left 8 char status per line */
#define EDITOR_LINE_STATE_COLOR mc_skin_color__cache[69]
#define EDITOR_BOOKMARK_COLOR mc_skin_color__cache[70]
#define EDITOR_BOOKMARK_FOUND_COLOR mc_skin_color__cache[71]
#define EDITOR_LINE_STATE_COLOR mc_skin_color__cache[71]
#define EDITOR_BOOKMARK_COLOR mc_skin_color__cache[72]
#define EDITOR_BOOKMARK_FOUND_COLOR mc_skin_color__cache[73]

/* Diff colors */
#define DIFFVIEWER_ADDED_COLOR mc_skin_color__cache[72]
#define DIFFVIEWER_CHANGEDLINE_COLOR mc_skin_color__cache[73]
#define DIFFVIEWER_CHANGEDNEW_COLOR mc_skin_color__cache[74]
#define DIFFVIEWER_CHANGED_COLOR mc_skin_color__cache[75]
#define DIFFVIEWER_REMOVED_COLOR mc_skin_color__cache[76]
#define DIFFVIEWER_ERROR_COLOR mc_skin_color__cache[77]

#define MC_SKIN_COLOR_CACHE_COUNT 78
#define DIFFVIEWER_ADDED_COLOR mc_skin_color__cache[74]
#define DIFFVIEWER_CHANGEDLINE_COLOR mc_skin_color__cache[75]
#define DIFFVIEWER_CHANGEDNEW_COLOR mc_skin_color__cache[76]
#define DIFFVIEWER_CHANGED_COLOR mc_skin_color__cache[77]
#define DIFFVIEWER_REMOVED_COLOR mc_skin_color__cache[78]
#define DIFFVIEWER_ERROR_COLOR mc_skin_color__cache[79]

#define MC_SKIN_COLOR_CACHE_COUNT 80

/*** enums ***************************************************************************************/

Expand Down
12 changes: 6 additions & 6 deletions lib/skin/colors.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ mc_skin_color_get_from_ini_file (mc_skin_t *mc_skin, const gchar *group, const g
/* --------------------------------------------------------------------------------------------- */

static void
mc_skin_color_set_default_for_terminal (mc_skin_t *mc_skin)
mc_skin_color_set_default_for_terminal (void)
{
tty_color_pair_t *mc_skin_color;

Expand All @@ -235,7 +235,6 @@ mc_skin_color_set_default_for_terminal (mc_skin_t *mc_skin)
mc_skin_color->bg = g_strdup ("default");
mc_skin_color->attrs = NULL;
mc_skin_color->pair_index = tty_try_alloc_color_pair (mc_skin_color, FALSE);
mc_skin_color_add_to_hash (mc_skin, "skin", "terminal_default_color", mc_skin_color);
}
}

Expand All @@ -244,14 +243,16 @@ mc_skin_color_set_default_for_terminal (mc_skin_t *mc_skin)
static void
mc_skin_color_cache_init (void)
{
CORE_DEFAULT_COLOR = mc_skin_color_get ("skin", "terminal_default_color");
CORE_NORMAL_COLOR = mc_skin_color_get ("core", "_default_");
CORE_DEFAULT_COLOR = mc_skin_color_get ("core", "_default_");
CORE_MARKED_COLOR = mc_skin_color_get ("core", "marked");
CORE_SELECTED_COLOR = mc_skin_color_get ("core", "selected");
CORE_MARKED_SELECTED_COLOR = mc_skin_color_get ("core", "markselect");
CORE_DISABLED_COLOR = mc_skin_color_get ("core", "disabled");
CORE_REVERSE_COLOR = mc_skin_color_get ("core", "reverse");
CORE_HEADER_COLOR = mc_skin_color_get ("core", "header");
CORE_HINTBAR_COLOR = mc_skin_color_get ("core", "hintbar");
CORE_PROMPT_COLOR = mc_skin_color_get ("core", "prompt");
CORE_COMMAND_COLOR = mc_skin_color_get ("core", "commandline");
CORE_COMMAND_MARK_COLOR = mc_skin_color_get ("core", "commandlinemark");
CORE_SHADOW_COLOR = mc_skin_color_get ("core", "shadow");
CORE_FRAME_COLOR = mc_skin_color_get ("core", "frame");
Expand Down Expand Up @@ -383,12 +384,11 @@ mc_skin_color_parse_ini_file (mc_skin_t *mc_skin)
goto ret;

// as first, need to set up default colors
mc_skin_color_set_default_for_terminal (mc_skin);
mc_skin_color_set_default_for_terminal ();
mc_skin_color = mc_skin_color_get_from_ini_file (mc_skin, "core", "_default_");
if (mc_skin_color == NULL)
goto ret;

tty_color_set_defaults (mc_skin_color);
mc_skin_color_add_to_hash (mc_skin, "core", "_default_", mc_skin_color);

for (groups = orig_groups; *groups != NULL; groups++)
Expand Down
38 changes: 3 additions & 35 deletions lib/tty/color.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,6 @@

/*** global variables ****************************************************************************/

static tty_color_pair_t tty_color_defaults = {
.fg = NULL, .bg = NULL, .attrs = NULL, .pair_index = 0
};

/* Set if we are actually using colors */
gboolean use_colors = FALSE;

Expand All @@ -69,16 +65,6 @@ static GHashTable *mc_tty_color__hashtable = NULL;
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */

static void
mc_color__deinit (tty_color_pair_t *color)
{
g_free (color->fg);
g_free (color->bg);
g_free (color->attrs);
}

/* --------------------------------------------------------------------------------------------- */

static gboolean
tty_color_free_temp_cb (gpointer key, gpointer value, gpointer user_data)
{
Expand Down Expand Up @@ -135,7 +121,6 @@ void
tty_colors_done (void)
{
tty_color_deinit_lib ();
mc_color__deinit (&tty_color_defaults);
g_hash_table_destroy (mc_tty_color__hashtable);
}

Expand All @@ -152,17 +137,13 @@ tty_use_colors (void)
int
tty_try_alloc_color_pair (const tty_color_pair_t *color, gboolean is_temp)
{
gboolean is_base;
gchar *color_pair;
tty_color_lib_pair_t *mc_color_pair;
int ifg, ibg, attr;

is_base = (color->fg == NULL || strcmp (color->fg, "base") == 0);
ifg = tty_color_get_index_by_name (is_base ? tty_color_defaults.fg : color->fg);
is_base = (color->bg == NULL || strcmp (color->bg, "base") == 0);
ibg = tty_color_get_index_by_name (is_base ? tty_color_defaults.bg : color->bg);
is_base = (color->attrs == NULL || strcmp (color->attrs, "base") == 0);
attr = tty_attr_get_bits (is_base ? tty_color_defaults.attrs : color->attrs);
ifg = tty_color_get_index_by_name (color->fg);
ibg = tty_color_get_index_by_name (color->bg);
attr = tty_attr_get_bits (color->attrs);

color_pair = g_strdup_printf ("%d.%d.%d", ifg, ibg, attr);
if (color_pair == NULL)
Expand Down Expand Up @@ -223,16 +204,3 @@ tty_color_free_all (void)
}

/* --------------------------------------------------------------------------------------------- */

void
tty_color_set_defaults (const tty_color_pair_t *color)
{
mc_color__deinit (&tty_color_defaults);

tty_color_defaults.fg = g_strdup (color->fg);
tty_color_defaults.bg = g_strdup (color->bg);
tty_color_defaults.attrs = g_strdup (color->attrs);
tty_color_defaults.pair_index = 0;
}

/* --------------------------------------------------------------------------------------------- */
2 changes: 0 additions & 2 deletions lib/tty/color.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,6 @@ void tty_setcolor (int color);
void tty_lowlevel_setcolor (int color);
void tty_set_normal_attrs (void);

void tty_color_set_defaults (const tty_color_pair_t *color);

extern gboolean tty_use_256colors (GError **error);
extern gboolean tty_use_truecolors (GError **error);

Expand Down
2 changes: 1 addition & 1 deletion lib/widget/buttonbar.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ buttonbar_callback (Widget *w, Widget *sender, widget_msg_t msg, int parm, void
{
buttonbar_init_button_positions (bb);
widget_gotoyx (w, 0, 0);
tty_setcolor (CORE_DEFAULT_COLOR);
tty_setcolor (BUTTONBAR_HOTKEY_COLOR);
tty_printf ("%-*s", w->rect.cols, "");
widget_gotoyx (w, 0, 0);

Expand Down
Loading
Loading